O assunto nesta oitava aula são as autoridades reconhecidas pelo DB2 e os papéis. Autoridades são um meio bastante prático de gerenciar a segurança. E os papéis ajudam a customizar os privilégios atribuídos aos usuários e grupos.
Recomendo ao leitor interessado em acompanhar este 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 8 – Autoridades & Papéis
Autoridades e papéis são elementos essenciais na administração da segurança do DB2. Sem eles, o administrador teria que cuidar manualmente de longas e tediosas listas de comandos de autorização e/ou revogação de privilégios. Além de tornar o processo muito mais ágil, por tabela as autoridades e papéis acabam por minimizar o risco de erros na definição da segurança do DB2.
Autoridades
DB2 reconhece dezenas de autoridades predefinidas com privilégios sobre vários aspectos da segurança de dados. Estas autoridades se dividem entre autoridades de instância e de banco.
Na prática, cada autoridade agrupa um conjunto de privilégios. Alguns privilégios são específicos de determinadas autoridades, mas é importante entender que um usuário ou grupo de usuários pode acumular diversas autoridades.
Categorias de autoridades
Dentro de uma instância do DB2, podemos associar um usuário a diversas autoridades padrão. Estas autoridades são organizadas em duas categorias:
- Autoridades ao nível de sistema
- Autoridades ao nível de banco de dados
A seguir, veremos mais detalhes sobre estas categorias e as autoridades nelas contidas.
Autoridades de sistema ou instância
Estas autoridades dão privilégios sobre a instância do DB2 e/ou sobre configurações e operação do DB2 no nível de sistema operacional.
As autoridades de sistema para o DB2 LUW são SYSMON, SYSMAINT, SYSCTRL e SYSADM. Elas são cumulativas e estão aqui listadas em ordem crescente de privilégios. Isso quer dizer que o SYSADM possui todos os privilégios ao nível de instância. Mas é importante observar que as autoridades de sistema não dão ao usuário nenhum tipo de privilégio de acesso aos bancos de dados contidos nesta instância.
O diagrama a seguir mostra os privilégios de cada autoridade:
Por default, todas as autoridades de sistema estão atribuídas ao grupo primário a que pertence o proprietário da instância. Para mudar isso, é preciso alterar a configuração do gerenciador de bancos de dados, usando a seguinte sintaxe:
Então para atribuir autoridade de SYSADM ao grupo DB2GRP, por exemplo, o comando seria:
Para restaurar a autoridade de SYSADM para o grupo primário do proprietário da instância, deve substituir o nome do grupo pela palavra reservada NULL (em maiúsculas).
Cada autoridade é atribuída a um único grupo. Portanto é recomendável se criar quatro grupos de usuários para que estes grupos recebam cada uma das autoridades de instância.
Autoridades de banco de dados
Outro grupo completamente independente são as autoridades de bancos de dados. Elas garantem privilégios exclusivamente no banco de dados em que se está trabalhando. Portanto o usuário precisa receber as autoridades necessárias em cada um dos bancos de dados nos quais ele precisa trabalhar.
Um ponto importante é que as autoridades de banco são constituídas de três grupos independentes. A autoridade DATAACCESS, por exemplo, tem direito de fazer qualquer manipulação de dados: leitura, escrita, alteração, exclusão, carga de dados e execução de qualquer procedimento armazenado ou pacote. Mas esta autoridade é independente de todas as demais.
A autoridade ACCESSCTRL é um subconjunto da autoridade SECADM, que tem todos os privilégios de administração de segurança dentro do banco de dados.
Finalmente, a autoridade DBADM administra tudo dentro do banco de dados, a não ser o que se relaciona a segurança (SECADM) e acesso a dados (DATAACCESS). Existem mais três autoridades que são subconjuntos do DBADM:
- SQLADM: que gerencia declarações SQL;
- EXPLAIN: subconjunto do SQLADM, que só lida com planos de execução;
- WLMADM: gerencia cargas de trabalho (workloads).
O diagrama a seguir mostra com mais detalhes os privilégios e o relacionamento entre as várias autoridades de banco de dados:
Para atribuir uma autoridade de banco a um grupo de usuários se usa a seguinte sintaxe:
Veja, por exemplo, o comando para dar autoridade de DBADM ao grupo DB2GRP:
Para revogar esta autoridade do grupo DB2GRP, basta executar um comando REVOKE.
Papéis
Os papéis (“roles”) permitem que o administrador da segurança do DB2 customize as autorizações atribuídas a usuários e grupos.
Algumas vezes os papéis são confundidos com grupos (de usuários). Mas não é difícil perceber as diferenças. Grupos são “containers” aos quais vinculamos usuários. Lembrando a nomenclatura que descrevemos na Aula 7, um grupo é um tipo de agente.
Em contrapartida, os papéis têm autorizações vinculadas a eles. Papéis definem ações permitidas sobre os segurados, ou seja, os objetos sobre os quais se dá ou revoga a autorização.
Importante observar que os papéis são objetos associados à segurança do banco de dados. Portanto um papel pode combinar autorizações e autoridades pertinentes a um determinado banco de dados. E, naturalmente, seu escopo de atuação se limita a este banco de dados.
Para se criar um papel, use a sintaxe a seguir:
Em seguida atribuímos as autorizações e autoridades desejadas. A sintaxe é
A terceira etapa é atribuir as ações do papel para o usuário, grupo ou mesmo outro papel (com mais privilégios).
Quando necessário, pode-se revogar a autorização do papel com a sintaxe:
Referências
O leitor interessado encontrará informações mais detalhadas nas seguintes referências.