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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Nota<br />

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

A segurança “a<strong>de</strong>quada” <strong>de</strong>pen<strong>de</strong> <strong>do</strong> nível <strong>de</strong> segurança que é necessário ao ambiente em questão. Este quesito<br />

varia muito <strong>de</strong> instalação para instalação.<br />

Isto significa que, para uma segurança razoável, toda instalação <strong>de</strong>ve manter os <strong>arquivos</strong> <strong>do</strong> banco <strong>de</strong> da<strong>do</strong>s<br />

a<strong>de</strong>quadamente seguros. Na maioria <strong>do</strong>s casos, isto significa que o servi<strong>do</strong>r <strong>Firebird</strong> <strong>de</strong>ve rodar em um usuário<br />

específico no sistema operacional, e apenas esse usuário (e provavelmente o administra<strong>do</strong>r/root) <strong>de</strong>ve ter acesso<br />

direto aos <strong>arquivos</strong> <strong>do</strong> banco <strong>de</strong> da<strong>do</strong>s. Estes <strong>arquivos</strong> não <strong>de</strong>vem ficar em diretórios compartilha<strong>do</strong>s na re<strong>de</strong> ou<br />

que sejam acessíveis por qualquer pessoa que não o pessoal autoriza<strong>do</strong>.<br />

Para uma segurança ainda mais efetiva, é preferível que o computa<strong>do</strong>r que será o servi<strong>do</strong>r fique armazena<strong>do</strong><br />

em um local físico <strong>de</strong> acesso restrito, <strong>de</strong> forma a prevenir que alguém tente acessar os <strong>arquivos</strong> por trás das<br />

restrições <strong>do</strong> sistema operacional.<br />

No entanto, a explicação acima não necessariamente ajuda <strong>de</strong>senvolve<strong>do</strong>res que, ten<strong>do</strong> <strong>de</strong>senvolvi<strong>do</strong> um banco<br />

<strong>de</strong> da<strong>do</strong>s para distribuição e instalação em locais remotos, <strong>de</strong>sejam proteger as proprieda<strong>de</strong>s intelectuais contidas<br />

nestes <strong>arquivos</strong>. Tais preucupações po<strong>de</strong>m incluir <strong>de</strong>s<strong>de</strong> os <strong>metada<strong>do</strong>s</strong> (estruturas, relacionamentos, stored<br />

procedures e triggers) até os da<strong>do</strong>s em si, incluí<strong>do</strong>s em algumas tabelas. É este o ponto que representa o foco<br />

<strong>de</strong>ste artigo.<br />

O Problema<br />

Um <strong>de</strong>senvolve<strong>do</strong>r cria um banco <strong>de</strong> da<strong>do</strong>s (e, normalmente, um aplicativo cliente que o acompanha) para instalação<br />

em locais remotos. Nestes locais, é natural que ao menos uma pessoa <strong>de</strong> lá tenha acesso irrestrito ao computa<strong>do</strong>r<br />

no qual o servi<strong>do</strong>r <strong>Firebird</strong> será executa<strong>do</strong> - para po<strong>de</strong>r executar tarefas como backup's e manutenção.<br />

Como <strong>de</strong>scrito no tópico acima, acesso direto aos <strong>arquivos</strong> permitem que se ganhe acesso completo e irrestrito<br />

a toda a informação das tabelas (da<strong>do</strong>s e <strong>metada<strong>do</strong>s</strong>).<br />

Nestes casos, o <strong>de</strong>senvolve<strong>do</strong>r po<strong>de</strong> não confiar que os usuários <strong>de</strong>ste local respeitarão a proprieda<strong>de</strong> intelectual<br />

que este banco <strong>de</strong> da<strong>do</strong>s representa. Então, fica o receio <strong>de</strong> que o usuário faça a engenharia reversa <strong>do</strong> banco <strong>de</strong><br />

da<strong>do</strong>s por interesse próprio, ou que não haja, neste local, uma preocupação real em manter seguros os <strong>arquivos</strong><br />

a acesso <strong>de</strong> terceiros.<br />

Isto nos leva às frequentes perguntas nas listas <strong>de</strong> <strong>Firebird</strong> como:<br />

“Eu quero—”<br />

“—proteger os <strong>metada<strong>do</strong>s</strong> <strong>de</strong> meu banco <strong>de</strong> da<strong>do</strong>s (estruturas, stored procedures, triggers etc.) <strong>de</strong> to<strong>do</strong>s os<br />

usuários em uma instalação remota. Como posso fazer isso com <strong>Firebird</strong>?”<br />

“Eu quero—”<br />

“—impedir que qualquer usuário <strong>de</strong> uma instalação remota tenha acesso a estas tabelas em particular. Elas<br />

contêm informação proprietária que é usada internamente pelo aplicativo.”<br />

O <strong>Firebird</strong> (pelo menos até a v1.5) não oferece nenhuma facilida<strong>de</strong> integrada <strong>de</strong> encriptação. A resposta simples<br />

às questões acima é que isto não po<strong>de</strong> ser feito com as atuais capacida<strong>de</strong>s <strong>do</strong> <strong>Firebird</strong>. Um usuário que tem<br />

acesso direto ao arquivo, tem acesso irrestrito às informações <strong>de</strong>le.<br />

Na primeira questão, nenhum arranjo po<strong>de</strong> ser feito, porque o servi<strong>do</strong>r em si <strong>de</strong>ve ser capaz <strong>de</strong> ler os <strong>metada<strong>do</strong>s</strong><br />

da tabela. Na segunda questão, é possível implementar rotinas <strong>de</strong> encriptação/<strong>de</strong>sencriptação no aplicativo cliente,<br />

mas neste caso, você per<strong>de</strong> a capacida<strong>de</strong> <strong>de</strong> fazer um uso efetivo <strong>do</strong>s índices e das facilida<strong>de</strong>s <strong>de</strong> busca <strong>do</strong><br />

<strong>Firebird</strong> - e o gerenciamento <strong>de</strong> senhas <strong>de</strong> encriptação torna-se um problema ainda maior (mais adiante).<br />

4

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

Saved successfully!

Ooh no, something went wrong!