Banco de Dados

17 mai, 2007

Gerenciando Usuários no Oracle 10g

Publicidade

Olá pessoal! O Oracle 10g gerencia e controla a segurança dos objetos criados em cada conta de usuários. Isso inclui:

  • Clusters
  • Índices
  • Tabelas
  • Views
  • Sequences

Cada banco de dados Oracle possui uma lista de usuários válidos, identificados por USERNAMES.

Todos os usuários são cadastrados no Dicionário de Dados do Banco em tabelas e views consultados pelo DBA. Quando o usuário do Banco de Dados é criado, um Schema correspondente com mesmo nome é criado para o usuário.

Um Schema é o conjunto de informações sobre o USERNAME. Isso inclui:

  • Username
  • Password
  • Privilégios permitidos
  • Tablespaces de seus objetos
  • Quotas nas Tablespace
  • Profile
  • Role

Agora que já entendemos o que vem a ser um usuário no Oracle, veremos como criar, alterar, excluir e monitorá-los.

Criando um novo usuário:

SQL> CREATE USER [Usuário]

IDENTIFIED BY [Senha/Externally/Globally as]

DEFAULT TABLESPACE [Nome Default]

TEMPORARY TABLESPACE [Nome Temporária]

PROFILE [Nome Profile]

QUOTA [K/M/Unlimited]

ON [Tablespace]

PASSWORD EXPIRE

ACCOUNT [Lock/Unlock]

Onde:

  • Usuário – Nome do usuário a ser criado.
  • Senha – Especifica a senha do usuário.
  • Externally – Verifica o acesso do usuário através do sistema operacional.
  • Globally As – Especifica que o usuário será autenticado por um sistema externo de Gerenciamento de Segurança (Oracle Security Server) ou outro Sistema de Gerenciamento de autenticação.
  • Default Tablespace – Identifica a Tablespace onde serão criados os objetos dos usuários.
  • Temporary Tablespace – Identifica a Tablespace para segmentos temporários.
  • Profile – O nome do Profile associado ao usuário.
  • Quota – Especifica o valor da quota na Tablespace
  • Unlimited – Permite ao usuário alocar espaço dentro de uma Tablespace sem limites.
  • On – Especifica o nome da Tablespace cujo espaço será controlado peça Quota.
  • Password Expire – Torna a senha do usuário extinta, solicitando uma nova senha no próximo login.
  • Lock – Desabilita o login.
  • Unlock – Habilita o login.
Exemplo:

SQL> CREATE USER iMasters

IDENTIFIED BY Revista

DEFAULT TABLESPACE User_Data

TEMPORARY TABLESPACE User_Temp

PROFILE [Nome Profile]

QUOTA 15M ON User_Data

QUOTA 10M ON User_Temp

PASSWORD EXPIRE

ACCOUNT Unlock

PROFILE Default;

Alterando um Usuário:

SQL> ALTER USER <Usuário>

<Opções a serem alteradas> <Novo Valor>

DEFAULT TABLESPACE [Nome Default]

Exemplo:

SQL> ALTER USER iMasters

QUOTA 5M ON User_Data;

Excluindo um Usuário:

SQL> DROP USER <Usuário> [CASCADE]

<Opções a serem alteradas> <Novo Valor>

DEFAULT TABLESPACE [Nome Default]

Onde:

CASCADE Permite a exclusão de todos os objetos associados ao usuário.

Essa opção somente será usado em raras exceções. Quando o usuário é excluído com a opção CASCADE, o Username e seu Schema associado são removidos do Dicionário de Dados e todos objetos contidos no usuário são imediatamente excluídos.

Exemplo:

SQL> DROP USER Imasters;

Monitorando Usuários:

O Oracle armazena, no Dicionário de Dados, informações completas de todos os usuários do banco.

Views do Dicionário de Dados:

  • DBA_USERS – Descreve todos os usuários do Banco de Dados
  • ALL_USERS – Lista os usuários visíveis ao usuário atual, mas não os descreve
  • USER_USERS – Descreve somente o usuário atual
  • DBA_TS_QUOTAS – Descreve as quotas da Tablespace
  • USER_TS_QUOTAS – Descreve as quotas da Tablespace
  • USER_PASSWORD_LIMITS – Descreve os parâmetros do perfil da senha que são atribuídos ao usuário
  • USER_RESOURCE_LIMITS – Indica os limites do recurso para o usuário atual
  • DBA_PROFILES – Indica todos os perfis e seus limites
  • RESOURCE_COST – Lista o custo para cada recurso
  • VSESSION – Lista a informação da sessão para cada sessão atual, incluí o nome do usuário
  • VSESSTAT – Lista as estatísticas da sessão do usuário
  • PROXY_USERS – Descreve os usuários que podem assumir a identidade de outros usuários

Todas as consultas às tabelas ou visões do Dicionário de Dados só serão possíveis com privilégio adequado.

Exemplo:

Mostrando informações dos usuários, a partir do Dicionário de Dados:

SQL> SELECT USERNAME, PROFILE, ACCOUNT_STATUS

FROM DBA_USERS;

USERNAME	PROFILE	     ACCOUNT_STATUS  
----------------          	--------------        ---------------------------- 
SYS             	                     DEFAULT         OPEN            
SYSTEM          	DEFAULT         OPEN            
IMASTER         	DEFAULT         OPEN           

Mostrando informações sobre a quantidade de espaço que um usuário pode usar nas Tablespaces, a partir do Dicionário de Dados:

SQL> SELECT *

FROM DBA_TS_QUOTAS

WHERE USERNAME IMASTER;

TABLESPACE    USERNAME    BYTES     MAX_BYTES    BLOCKS    MAX_BLOCKS
-------------------    ---------              ----------     -----------------     -----------     --------------------
USERS                 IMASTER         0                512000               0                  250

Para maiores detalhes e informações, você pode ler a Oracle Database Security Guide

(disponível para download no endereço http://www.oracle.com/pls/db102/homepage )

Por hoje é tudo pessoal. Até o próximo artigo!