Segurança de arquivos e metadados do Firebird
Segurança de arquivos e metadados do Firebird
Segurança de arquivos e metadados do Firebird
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