Вы находитесь на странице: 1из 11

1

ADMINISTRAO DE USURIOS NO SGBD ORACLE 11G

JUVENAL LONGUINHO DA SILVA NETO 1


IREMAR NUNES DE LIMA 2

Resumo: Este artigo apresenta como criar, modificar e excluir usurios, privilgios, atribuies e

perfis em instncias de banco de dados Oracle 11g. A definio de cada item feito com base na

literatura sobre o assunto sendo apresentados exemplos prticos.

Palavras-chave: Banco de Dados, Oracle, Administrao, Usurio, Perfil, Atribuio e Privilgio.

1. INTRODUO

Para realizarmos qualquer ao em um servidor de banco de dados necessrio ter um usurio com

determinados privilgios de acesso ao servidor. No banco de dados Oracle 11g existem diferentes

privilgios que podem ser concedidos aos usurios, e gerenciar os privilgios individualmente pode

se tornar uma tarefa extremamente cansativa. Para facilitar essa tarefa de gerenciamento,

normalmente, utilizamos atribuies para agrupar os privilgios.

Geralmente temos vrios usurios conectados ao banco de dados e executando aes concorrentes e

simultneas. Para evitar que um usurio especfico consuma em excesso os recursos disponveis

(CPU, E/S, memria), o que prejudicaria os demais usurios, o banco de dados Oracle 11g fornece

1
Especialista em Banco de Dados e Business Inteligence (juvvenna@gmail.com).
2
DBA, Mestre em informtica e Professor do Centro Universitrio Newton Paiva (iremar.prof@uol.com.br).
2

um mecanismo, chamado de perfil, para controlar o limite desses recursos que o usurio pode

utilizar.

Este artigo discute as funcionalidades para criar usurios, controlar perfis, conceder privilgios e

estabelecer atribuies no SGBD Oracle 11g. Para entendimento deste artigo necessrio

conhecimentos de conceitos bsicos do SGBD Oracle.

2. USURIOS

Uma conta de usurio identificada por um nome (de no mximo trinta caracteres) e est associado

a somente um esquema, com o mesmo nome do usurio, no banco de dados. Os termos usurio e

esquema podem ser usados alternadamente em um ambiente Oracle, mas nem sempre querem

dizer a mesma coisa. Um usurio o nome utilizado para estabelecer uma conexo com o banco de

dados. Um esquema um conjunto de objetos de propriedade do usurio: tabelas, ndices,

seqncias, vises, entre outros (WATSON, 2010).

O comando utilizado para criar um usurio o CREATE USER. Esse comando possui somente dois

parmetros obrigatrios: o nome e a senha do usurio. No entanto, boa prtica definir vrios

outros parmetros para a conta do usurio (WATSON, 2010). Abaixo, conforme apresentando por

BRYLA & LONEY (2009), os principais parmetros utilizados quando um usurio criado.

Parmetros Uso

Nome do usurio Especifica o nome que identifica a conta do usurio. Ele pode ter
at 30 caracteres e no pode ser uma palavra reservada a menos
que ela esteja entre aspas (o que no recomendado).

IDENTIFIED BY senha Especifica a senha do usurio para acesso ao banco de dados.

DEFAULT TABLESPACE Especifica o tablespace padro onde os objetos permanentes da


conta do usurio sero criados, exceto, quando o tablespace
explicitamente especificado durante a criao dos objetos.

TEMPORARY TABLESPACE Especifica o tablespace onde os segmentos temporrios, da


conta do usurio, sero criados durante as operaes de
classificao, criao de ndices, etc.
3

Parmetros Uso
QUOTA Especifica a quantidade de espao, ou tamanho, permitido para
os objetos criados no tablespace especificado. O tamanho pode
ser em kilobytes(K) ou em megabytes(M).

PROFILE Especifica o perfil atribudo a este usurio. Ele ser discutido


mais adiante nesse artigo. Se um perfil no for especificado, o
perfil utilizado ser o DEFAULT.

PASSWORD EXPIRE Especifica que aps o primeiro logon, o usurio deve alterar a
senha.

ACCOUNT {LOCK | UNLOCK} Especifica se a conta do usurio est bloqueada (LOCK) ou


desbloqueada (UNLOCK). Por padro, a conta do usurio ser
criada desbloqueada.

Tabela 1: Principais parmetros para a criao da conta de usurio.


Fonte: BRYLA & LONEY (2009)

Exemplo do comando para criar a conta do usurio


CREATE USER JUVENAL
IDENTIFIED BY 123456
ACCOUNT UNLOCK
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

Exemplo do comando para alterar a conta do usurio


ALTER USER JUVENAL
IDENTIFIED BY 9998877
ACCOUNT LOCK;

Exemplo do comando para remover a conta do usurio


DROP USER JUVENAL;

3. PERFIS

Um processo de usurio pode consumir, em excesso, recursos como CPU, espao em disco ou

largura de banda de E/S (Entrada / Sada). Como esses recursos geralmente so limitados, o Oracle

11g possui um mecanismo para limitar e controlar a quantidade desses recursos que os processos do

usurio podem consumir. Alm disso, os perfis tambm podem ser usados como um mecanismo de

autorizao para controlar como as senhas de usurios so criadas, reutilizadas e validadas (BRYLA

& LONEY, 2009).


4

Um perfil tem dupla funo: impor uma poltica para a senha da conta de usurio (limites para as

senhas) e restringir os recursos que uma sesso pode ocupar (limites para os recursos). No banco de

dados Oracle 11g os limites para as senhas so sempre obrigatrios; e os limites para os recursos s

so obrigatrios se o parmetro de instncia RESOURCE_LIMIT estiver como TRUE (por padro

ele FALSE). Todas as contas de usurios tm um perfil, por padro, chamado de DEFAULT. O

perfil DEFAULT pode ser ajustado, e a alterao ser imediatamente aplicada a todos os usurios

com o perfil. Perfis adicionais podem ser criados e atribudos explicitamente a certos usurios

(WATSON, 2010). A seguir descrito os dois limites apresentados:

a. Limites para as senhas

Segundo WATSON (2010), os limites que podem ser aplicados a poltica de senha so:

Parmetros Uso

FAILED_LOGIN_ATTEMPTS Especifica o nmero de erros consecutivos em uma senha antes


de a conta do usurio ser bloqueada. Se a senha correta for
fornecida antes desse limite ser alcanado, o contador
redefinido como zero.

PASSWORD_LOCK_TIME Especifica o nmero de dias que uma conta ficar bloqueada


depois que o FAILED_LOGIN_ATTEMPTS for atingido.

PASSWORD_LIFE_TIME Especifica o nmero de dias antes de uma senha expirar. Ela


ainda poder ser usada por algum tempo aps a expirao,
dependendo da configurao utilizada em
PASSWORD_GRACE_TIME.

PASSWORD_GRACE_TIME Especifica o nmero de dias depois do primeiro logon bem-


sucedido aps a senha ter expirado. A senha antiga ainda pode
ser usada durante esse perodo.

PASSWORD_REUSE_TIME Especifica o nmero de dias antes que uma senha possa ser
reutilizada.

PASSWORD_REUSE_MAX Especifica o nmero de vezes que uma senha pode ser


reutilizada.

PASSWORD_VERIFY_FUNCTION Especifica o nome de uma funo a ser executada sempre que


uma senha for alterada. A finalidade da funo deve ser verificar
se a nova senha tem um grau de complexidade adequado.

Tabela 2: Principais limites aplicados a poltica de senha.


5

Fonte: WATSON (2010)

b. Limites para os recursos

Segundo WATSON (2010), os limites que podem ser aplicados ao uso dos recursos (tambm

conhecidos como limites de kernel) so:

Parmetros Uso

SESSIONS_PER_USER Especifica o nmero de logins concorrentes que podem ser feitos


mesma conta de usurio. Sesses que tenta fazer login com o
mesmo nome de usurio aps esse limite ser alcanado sero
bloqueadas.

CPU_PER_SESSION Especifica o tempo de CPU, em centissegundos, que um


processo de servidor de uma sesso pode ser usado antes da
sesso ser foradamente terminada.

CPU_PER_CALL Especifica o tempo de CPU, em centissegundos, que um


processo de servidor de uma sesso pode ser usado para executar
uma instruo SQL, antes de a instruo ser foradamente
terminada.

LOGICAL_READS_PER_SESSION Especifica o nmero de blocos que podem ser lidos por uma
sesso (independentemente de eles estarem no cache de buffer
do banco de dados ou lidos no disco) antes que a sesso seja
foradamente terminada.

LOGICAL_READS_PER_CALL Especifica o nmero de blocos que podem ser lidos por uma
nica instruo SQL (independentemente de eles estarem no
cache de buffer do banco de dados ou lidos no disco) antes que a
instruo seja foradamente terminada.

PRIVATE_SGA Para sesses conectadas por meio da arquitetura de servidor


compartilhado, especifica o nmero, em kilobytes, que a sesso
pode usar na SGA (System Global Area).

CONNECT_TIME Especifica a durao mxima, em minutos, mxima de uma


sesso antes de ser foradamente terminada.

IDLE_TIME Especifica tempo mximo, em minutos, que uma sesso pode


ficar ociosa antes de ser foradamente terminada.

COMPOSITE_LIMIT Especifica uma soma ponderada dos parmetros acima.


Geralmente utilizamos esse parmetro quando precisamos dar
flexibilidade e tolerncia s operaes executadas pelos
usurios, assim estamos limitando o usurio pelo uso ponderado
6

Parmetros Uso
dos recursos e pela disponibilidade de cada recurso no servidor.

Tabela 3: Principais limites aplicados aos recursos.


Fonte: WATSON (2010)

Os limites para os recursos s so obrigatrios se o parmetro de instncia RESOURCE_LIMIT

estiver como TRUE. Por padro, esse parmetro definido com FALSE. Uma das maneiras para

ativar o RESOURCE_LIMIT utilizar a sintaxe: ALTER SYSTEM SET

RESOURCE_LIMIT=TRUE;

Segundo BRYLA & LONEY (2009), nos limites aplicados ao uso dos recursos existem dois tipos

de valores especiais que podem ser aplicados aos seus parmetros: UNLIMITED e DEFAULT. O

valor de parmetro UNLIMITED significa que no h limites sobre quanto do recurso determinado

pode ser utilizado, j o valor de parmetro DEFAULT significa que este parmetro assume seus

valores a partir do perfil DEFAULT.

Ainda conforme BRYLA & LONEY (2009), a maneira como o banco de dados Oracle 11g trata um

dos limites de recursos que est sendo excedido, depende do tipo deste. Mas na maioria dos casos, a

sesso ser foradamente terminada quando o limite para um recurso determinado for excedido. Por

exemplo, caso haja uma transao em andamento quando uma sesso for terminada porque o limite

de um recurso foi alcanado, ela sofrer rollback. Se uma instruo for terminada, o trabalho feito

por ela sofrer um rollback, mas todas as instrues anteriores permanecero intactas.

Exemplo para criar um perfil


CREATE PROFILE EXEMPLO LIMIT
CONNECT_TIME 120
FAILED_LOGIN_ATTEMPTS 8;

Exemplo para alterar um perfil


ALTER PROFILE EXEMPLO LIMIT
PASSWORD_LIFE_TIME 180
7

PASSWORD_GRACE_TIME 7
PASSWORD_REUSE_MAX UNLIMITED
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LOCK_TIME 1;

Exemplo para remover um perfil


DROP PROFILE EXEMPLO;

4. PRIVILGIOS

Segundo WATSON (2010), em um banco de dados Oracle 11g no possvel fazer nada sem o(s)

privilgio(s) correto(s). Um usurio no pode sequer conectar-se sem ter o privilgio para tal e, uma

vez que conectado, ele no pode fazer mais nada de til (ou perigoso) sem receber mais privilgios.

Os privilgios so atribudos s contas de usurios com o comando GRANT e removidos atravs do

comando REVOKE. Na maioria das vezes que o usurio no possui privilgio para executar uma

ao, o banco de dados Oracle 11g emite uma mensagem de advertncia semelhante a esta: ORA-

01031: Privilgios Insuficientes.

Ainda segundo WATSON (2010), podemos dividir os privilgios em dois grupos: privilgios de

sistemas e privilgios de objeto. O primeiro grupo permite que os usurios executem aes que

afetam o dicionrio de dados, j o segundo grupo permite aos usurios executar aes que afetam os

dados.

Outra definio que podemos usar dada por BRYLA & LONEY (2009): eles nos dizem que um

privilgio de sistema um direito para executar aes, que no envolvam nenhum objeto especfico,

mas sim procedimentos tais como alterar os parmetros da instncia, criar atribuies e criar

usurios. Em um banco de Oracle 11g existem aproximadamente duzentos privilgios de sistemas.

A relao completa desses privilgios pode ser encontrada na tabela do dicionrio de dados

chamada SYSTEM_PRIVILEGE_MAP. Os privilgios de objeto so definidos por BRYLA &

LONEY (2009) como um direito que permite executar comandos como ALTER, SELECT,
8

INSERT, UPDATE e DELETE em tabelas, vises, procedimentos ou seqncias existentes no

banco de dados.

Os privilgios de sistema podem ser concedidos para um usurio, atribuio (ser discutido mais

adiante) ou para o grupo PUBLIC. Um fator importante ressaltado tanto por BRYLA & LONEY

(2009), como por WATSON (2010), que os privilgios de sistema ou de objeto devem ser

concedidos para o grupo PUBLIC somente quando for realmente necessrio. PUBLIC um grupo

especial que inclui todos os usurios do banco de dados e um atalho para conceder privilgios

para todas as contas de usurios.

Quando estamos concedendo um privilgio, podemos permitir que os beneficiados pelos privilgios

concedam estes mesmos a outros usurios, para isso basta incluir o parmetro WITH ADMIN

OPTION ao final do comando GRANT. A seguir temos a descrio de alguns privilgios de sistema

(BRYLA & LONEY, 2009):

Privilgio Capacidade

ALTER SYSTEM Permite modificar os parmetros de inicializao do banco de


dados Oracle 11g.

CREATE USER Permite criar novos usurios.

CREATE SESSION Permite abrir uma conexo com o banco de dados.

CREATE TABLE Permite criar tabelas somente no seu esquema.

SYSDBA Esse um privilgio especial, permite ao usurio executar


qualquer ao dentro do banco de dados Oracle 11g.

Tabela 4: Alguns privilgios de sistema.


Fonte: (BRYLA & LONEY, 2009)

Exemplo de como conceder um privilgio de sistema


GRANT CREATE SESSION TO JUVENAL;

Exemplo de como retirar um privilgio de sistema


REVOKE CREATE ANY TABLE FROM JUVENAL;
9

Assim como nos privilgios de sistema, podemos conceder privilgios de objeto a um usurio,

atribuio ou para o grupo PUBLIC. E tambm podemos usar o parmetro WITH ADMIN

OPTION para permitir que os beneficiados repassem os mesmo privilgios a outros usurios. A

seguir temos a descrio de alguns privilgios de objeto (BRYLA & LONEY, 2009):

Privilgio Capacidade

ALTER Permite alterar a estrutura de uma tabela ou seqncia.

EXECUTE Permite executar a funo (FUNCTION) ou procedimento


(PROCEDURE).

SELECT Permite ler as linhas de tabela ou viso, e adicionalmente, ler o


valor corrente e o prximo valor para uma seqncia.

INSERT Permite inserir dados em uma tabela ou viso.

DELETE Permite apagar os dados de uma tabela ou viso.

UPDATE Permite atualizar os dados em uma tabela ou viso.

Tabela 5: Alguns privilgios de objeto.


Fonte: (BRYLA & LONEY, 2009):

Exemplo de como conceder privilgios de objeto


GRANT SELECT ON LUCAS.TABELA01 TO JUVENAL;
GRANT SELECT, INSERT, UPDATE ON LUCAS.TABELA02 TO JUVENAL;

Exemplo de como retirar privilgios de objeto


REVOKE UPDATE ON LUCAS.TABELA02 FROM JUVENAL;

5. ATRIBUIES

No contexto do banco de dados Oracle 11g, uma atribuio (role em ingls) conjunto de

privilgios de sistema e/ou privilgios de objeto que podem ser concedidos e revogados com uma

unidade (WATSON, 2010).

Tambm podemos dizer que uma atribuio um grupo nomeado de privilgios, sejam eles de

sistema ou de objeto, ou uma combinao de ambos, que facilita a administrao dos privilgios em
10

um banco de dados Oracle 11g. Em vez de conceder privilgios de sistemas ou de objeto

individualmente para cada usurio, possvel conceder um grupo de privilgios a uma atribuio e,

por sua vez, a atribuio pode ser concedida aos usurios (BRYLA & LONEY, 2009).

Criamos as atribuies utilizando o comando CREATE ROLE e as removemos atravs do comando

DROP ROLE. As atribuies no so objetos de um esquema, ou seja, elas no pertencem a

nenhum usurio especfico. Uma vez que a atribuio esteja criada, podemos conceder todos os

privilgios que julgamos necessrios para a atribuio, os privilgios so concedidos atravs do

comando GRANT visto anteriormente (WATSON, 2010).

Exemplo para criar uma atribuio


CREATE ROLE DESENVOLVEDORES;

Exemplo para conceder privilgios uma atribuio


GRANT CREATE SESSION TO DESENVOLVEDORES;
GRANT CREATE TABLE TO DESENVOLVEDORES;
GRANT CREATE VIEW TO DESENVOLVEDORES;
GRANT CREATE PROCEDURE TO DESENVOLVEDORES;
GRANT SELECT, UPDATE ON IREMAR.TABELA02 TO DESENVOLVEDORES;

Exemplo para atribuir uma atribuio a usurio


GRANT DESENVOLVEDORES TO JOAO;

Exemplo para excluir uma atribuio


DROP ROLE DESENVOLVEDORES;

6. CONCLUSO

Um banco de dados Oracle 11g fornece excelentes mecanismos para o gerenciamento da segurana

do usurio, alm de permitir controlar, atravs de perfil, os recursos disponveis e a poltica de

senha para os usurios. O mecanismo de privilgios, juntamente com as atribuies, transparente e

de fcil utilizao, permitindo conceder aos usurios os direitos necessrios para a execuo das

tarefas.
11

REFERNCIAS

BRYLA, Bob; LONEY, Kevin. Oracle Database 11g: Manual do DBA. Traduo Altair Caldas
Dias de Moraes. Porto Alegre. Ed. Bookman. 2009.

WATSON, John. OCA Oracle Database 11g: Administrao I: guia do exame 1Z0-052.
Traduo Altair Caldas Dias de Moraes. Porto Alegre. Ed. Bookman. 2010.

Вам также может понравиться