Data

26 mar, 2014

Administração do DB2 em Ambiente UNIX – Parte 8

Publicidade

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:

  1. Autoridades ao nível de sistema
  2. 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:

FONTE: DB2 Academic Training - 302A Exam preparation
FONTE: DB2 Academic Training – 302A Exam preparation

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:

wc11

 

Então para atribuir autoridade de SYSADM ao grupo DB2GRP, por exemplo, o comando seria:

wc12

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).

wc13

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:

wc14

 

wc15

wc16

Para atribuir uma autoridade de banco a um grupo de usuários se usa a seguinte sintaxe:

wc17

Veja, por exemplo, o comando para dar autoridade de DBADM ao grupo DB2GRP:

wc18

Para revogar esta autoridade do grupo DB2GRP, basta executar um comando REVOKE.

wc19

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:

wc20

Em seguida atribuímos as autorizações e autoridades desejadas. A sintaxe é

wc21

A terceira etapa é atribuir as ações do papel para o usuário, grupo ou mesmo outro papel (com mais privilégios).

wc22

Quando necessário, pode-se revogar a autorização do papel com a sintaxe:

wc23

Assim encerramos mais uma aula. Até a próxima!

Referências

O leitor interessado encontrará informações mais detalhadas nas seguintes referências.

  1. DB2 Essential Training I
  2. DB2 Essential Training II   
  3. DB2 Academic Training – 302A Exam preparation   
  4. DB2 security model overview 
  5. Sysadm_group – System administration authority group name configuration parameter  
  6. REVOKE (database authorities) statement 
  7. ROLES