26.10.2013 Views

Segurança de arquivos e metadados do Firebird

Segurança de arquivos e metadados do Firebird

Segurança de arquivos e metadados do Firebird

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Nomes personaliza<strong>do</strong>s para SYSDBA<br />

<strong>Segurança</strong> <strong>arquivos</strong> e <strong>metada<strong>do</strong>s</strong><br />

Também houveram sugestões <strong>de</strong> permitir que o nome <strong>de</strong> usuário SYSDBA seja altera<strong>do</strong>. Esta solução po<strong>de</strong>ria<br />

oferecer alguma proteção limitada contra ataques <strong>de</strong> força bruta contra a senha <strong>do</strong> SYSDBA, visto que o ataque<br />

teria que adivinha tanto o nome <strong>de</strong> usuário quanto sua senha. Mas não ajuda em nada a proteger o sistema <strong>de</strong><br />

uma pessoa que tenha acesso direto ao arquivo.<br />

Excluin<strong>do</strong> o código fonte das SP's e Triggers<br />

Quan<strong>do</strong> você escreve e <strong>de</strong>fine uma Stored Procedure ou Trigger para o banco <strong>de</strong> da<strong>do</strong>s <strong>Firebird</strong>, o servi<strong>do</strong>r<br />

armazena uma cópia quase completa <strong>do</strong> código fonte juntamente com a cópia compilada, chamada <strong>de</strong> BLR<br />

(Binary Language Representation). É a BLR que é executada pelo servi<strong>do</strong>r, o código fonte não é utiliza<strong>do</strong>.<br />

Alguns <strong>de</strong>senvolve<strong>do</strong>res tentam proteger ao menos uma parcela <strong>de</strong> seus <strong>metada<strong>do</strong>s</strong> <strong>de</strong>letan<strong>do</strong> o código fonte<br />

antes <strong>de</strong> distribuir o banco <strong>de</strong> da<strong>do</strong>s (apenas um update direto nos campos relevantes da tabela <strong>de</strong> <strong>metada<strong>do</strong>s</strong>).<br />

Eu recomen<strong>do</strong> não a<strong>do</strong>tar esta prática por duas razões:<br />

1. BLR é uma codificação muito simples <strong>do</strong> código fonte. Não seria muito difícil <strong>de</strong>codificar o BLR <strong>de</strong> volta<br />

para uma forma legível a humanos. A <strong>de</strong>codificação não traria comentários ou formatação, mas as SQL's<br />

que vão em SP's ou Triggers são raramente tão complicadas a ponto <strong>de</strong> isso causar problemas. Então, a<br />

proteção oferecida pela remoção <strong>do</strong> código fonte não é muito significante.<br />

2. O código fonte po<strong>de</strong> ser útil para outros propósitos. Ele permite que correções sejam aplicadas diretamente<br />

no banco <strong>de</strong> da<strong>do</strong>s, sem precisar trazer <strong>de</strong> volta o código fonte completo <strong>de</strong> algum outro lugar (e então,<br />

lembrar <strong>de</strong> remover novamente após aplicar as correções). O código fonte é também utiliza<strong>do</strong> em vários<br />

utilitários, como o meu DBak - uma ferramenta <strong>de</strong> backup alternativa ao “gbak”. Eu não me importei em<br />

escrever meu próprio <strong>de</strong>codifica<strong>do</strong>r <strong>de</strong> BLR neste momento, portanto, DBak <strong>de</strong>pen<strong>de</strong> da disponibilida<strong>de</strong><br />

<strong>do</strong> código fonte para conseguir criar o script DDL para reconstruir o banco <strong>de</strong> da<strong>do</strong>s.<br />

Servi<strong>do</strong>r <strong>Firebird</strong> Embed<strong>de</strong>d<br />

Há uma versão especial <strong>do</strong> servi<strong>do</strong>r <strong>Firebird</strong> chamada <strong>de</strong> “embed<strong>de</strong>d”. Esta versão é, na verda<strong>de</strong>, uma biblioteca<br />

cliente especial, que inclui o servi<strong>do</strong>r em si. Quan<strong>do</strong> um aplicativo chama essa biblioteca, ela carrega o servi<strong>do</strong>r<br />

e permite acesso direto a qualquer banco <strong>de</strong> da<strong>do</strong>s acessível ao computa<strong>do</strong>r local. Dessa forma, não faz uso <strong>do</strong><br />

banco <strong>de</strong> da<strong>do</strong>s <strong>de</strong> segurança. O nome <strong>de</strong> usuário especifica<strong>do</strong> durante o “logon” (não existe autenticação <strong>de</strong><br />

senha) é utiliza<strong>do</strong> para gerenciar o acesso aos objetos <strong>do</strong> banco <strong>de</strong> da<strong>do</strong>s (por permissões SQL), mas se este<br />

usuário for SYSDBA (ou o <strong>do</strong>no <strong>do</strong> banco <strong>de</strong> da<strong>do</strong>s), então, o acesso irrestrito é possível.<br />

As características <strong>do</strong> servi<strong>do</strong>r embed<strong>de</strong>d são úteis a <strong>de</strong>senvolve<strong>do</strong>res que querem criar aplicativos monousuários<br />

simples <strong>de</strong> se distribuir e que não requerem muita segurança.<br />

Dessa breve <strong>de</strong>scrição, po<strong>de</strong> parecer que ter um aplicativo com servi<strong>do</strong>r embed<strong>de</strong>d instala<strong>do</strong> em um servi<strong>do</strong>r<br />

que esteja armazenan<strong>do</strong> outros bancos <strong>de</strong> da<strong>do</strong>s po<strong>de</strong> representar um grave risco à segurança. Na realida<strong>de</strong> o<br />

risco não é maior <strong>do</strong> que se o servi<strong>do</strong>r embed<strong>de</strong>d não existisse.<br />

Quan<strong>do</strong> um aplicativo carrega o servi<strong>do</strong>r embed<strong>de</strong>d, ele opera no contexto <strong>de</strong> segurança <strong>do</strong> aplicativo (e portanto,<br />

<strong>do</strong> usuário). O que significa que o servi<strong>do</strong>r embed<strong>de</strong>d terá acesso apenas aos <strong>arquivos</strong> que o usuário po<strong>de</strong> acessar<br />

8

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!