Continuando a série que trata de conceitos de administração do DB2 em ambiente UNIX, inicia-se agora o capítulo sobre segurança de dados. Neste artigo eu apresento uma visão geral da segurança no DB2.
Recomendo ao leitor interessado em acompanhar o curso que acesse o portal do DB2 para abaixar uma cópia do DB2 Express-C, edição gratuita do produto, ou então, para obter instruções de como acessar e configurar uma instalação do DB2 rodando na nuvem. Para mais detalhes, clique aqui.
AULA 5 – Segurança no DB2: Visão Geral
Este artigo traz uma visão geral destes componentes, que serão estudados em mais detalhes nas próximas aulas. Basicamente a estratégia de segurança do DB2 LUW envolve três níveis:
- Autenticação
- Autorização
- Papéis (“roles”)
A combinação destes níveis garante o controle do DBA sobre o acesso e alteração dos dados, dos objetos do banco de dados e/ou de toda a instância.
Uma vez feita a autenticação do usuário (login/senha), o DB2 verificará autorizações e/ou papéis atribuídos a este usuário a cada comando que for executado.
Veja a seguir mais detalhes sobre cada um destes níveis.
Autenticação
É a verificação do ID e da senha informados pelo usuário. A autenticação do DB2 é integrada ao sistema operacional, ou seja, não é o DB2 quem autentica ID/senha, mas sim o próprio sistema operacional (AIX, HP-UX, LINUX, WINDOWS, Z/OS, etc).
Por default, esta autenticação é feita no servidor, ou seja, seu ID e senha precisam ser reconhecidos no servidor onde roda instância à qual você está se conectando. Apesar de não ser recomendável, é possível mudar esta configuração, obrigando, por exemplo, que a autenticação seja feita pelo sistema operacional da máquina onde roda o cliente do DB2 (autenticação no cliente).
Uma prática comum no universo dos SGBDs é criar grupos de usuários que receberão privilégios de acesso em bancos de dados específicos. Assim os privilégios são atribuídos ao grupo de usuários e os usuários que forem incluídos nestes grupos herdam tais privilégios.
Pois bem, uma vez que a autenticação no DB2 é integrada com o sistema operacional, estes grupos de usuários também devem ser criados no sistema operacional. Na prática, acontecem as seguintes ações:
- Criam-se os grupos de usuários no sistema operacional
- Atribuem-se os privilégios no DB2 adequados a cada grupo (exemplo: “GRANT CONNECT ON DATABASE db1 TO GROUP usergroupA”)
- Criam-se os IDs no sistema operacional
- Faz-se as associações entre IDs e grupos de usuários
Desta forma, tem-se um método simples de controlar os privilégios de usuários em cada banco de dados. Importante notar que a relação entre grupos e usuários é NxN: cada ID pode pertencer a N grupos e cada grupo pode conter N usuários.
Em toda instalação do DB2, são criados automaticamente no sistema operacional alguns IDs e grupos de usuários padrão. São eles:
TIPO | NOME | FUNÇÃO |
ID | db2inst1 | proprietário da instância de mesmo nome |
ID | db2fenc1 | usuário dos serviços isolados do DB2 |
ID | dasusr1 | usuário administrador do DB2 |
grupo | db2iadm1 | proprietários de instâncias |
grupo | db2fadm1 | usuários de serviços isolados do DB2 |
grupo | dasadm1 | usuário administrador do DB2 |
(a aula 6 tratará da criação de novos IDs e grupos em servidores UNIX).
Políticas de segurança variam de empresa para empresa. Mas muitas vezes, o DBA não tem direito de executar operações de segurança no sistema operacional. Nestes casos, ele deve acionar o administrador do sistema (SYSADMIN) para que este crie os usuários e grupos de usuários no servidor.
Autorização
Identifica os privilégios dentro do DB2 atribuídos aos usuários e/ou grupos. Estas autorizações podem ser atribuídas de duas formas:
Autorizações granulares: usando os comandos GRANT/REVOKE para cada ação ou objeto do banco de dados ou instância – este assunto será discutido em detalhe na aula 7. Veja a seguir alguns privilégios que podem ser atribuídos ou revogados:
- CONNECT (no banco de dados)
- CREATE, ALTER, DELETE (para tabelas, visões, procedimentos..)
- INSERT, DELETE, UPDATE, SELECT (para tabelas, visões)
- INDEX (criação de índices em tabelas)
- REFERENCES (criação de chaves estrangeiras)
- Autoridades predefinidas: são autoridades padrão do DB2, que podem ter direitos sobre um banco de dados ou sobre toda instância – este assunto será discutido em detalhe na aula 8. Para fins de ilustração, apresento a seguir algumas das autoridades pré-definidas:
- Nível de instância: SYSADM, SYSCTRL, SYSMAINT, SYSMON
- Nível de base de dados: DBADM, SECADM, SQLADM, WLMADM, EXPLAIN, ACCESSCTRL, DATAACCESS, etc
Papéis (“roles”)
O DB2 permite ao administrador combinar autoridades pré-definidas e autorizações granulares, criando autoridades personalizadas, chamadas papéis.
Isso permite que o DBA tenha um controle detalhado das autorizações no banco de dados e/ou na instância do DB2, atribuindo uma autoridade especificamente criada para um grupo de usuários (ou um único ID, quando necessário).
A seguir, apresento um exemplo de como criar um papel, detalhar as autoridades e atribuir o papel a um usuário.
Referências
O leitor interessado encontrará informações mais detalhadas nas seguintes referências.
- DB2 Essential Training I http://bigdatauniversity.com/courses/course/view.php?id=121
- DB2 Essential Training II http://bigdatauniversity.com/courses/course/view.php?id=243
- DB2 Academic Training – 302A Exam preparation http://bigdatauniversity.com/courses/course/view.php?id=272
- Securing information management systems http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=%2Fcom.ibm.db2.luw.admin.sec.doc%2Fdoc%2Fc0021804.html