Administrando Usuários

Propaganda
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
SEGURANÇA DE USUÁRIOS
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.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
•
•
•
•
•
•
•
•
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>
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
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
---------------SYS
SYSTEM
IMASTER
DEFAULT
PROFILE
-------------DEFAULT
DEFAULT
OPEN
ACCOUNT_STATUS
---------------------------OPEN
OPEN
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
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;
O gerenciamento de usuários e seus respectivos privilégios aos objetos do banco de
dados, dependendo do número de objetos e usuários, pode ser tornar uma tarefa
árdua para o administrador do banco de dados.
Quando este número ultrapassa 10 usuários a DBA já deve começar a tomar cuidado
para não se passar ao conceder os Grants (permissões) para os objetos do banco em
nível de usuário, ou seja, um a um. Uma forma muito simples de minimizar este
trabalho é a utilização de Roles (papéis).
O que é uma role?
Uma Role pode ser definida como um “pacote” de privilégios que podem ser associados
de forma muito fácil aos usuários do banco de dados. Por exemplo, podemos criar uma
role com privilégio total a todos os objetos de nosso banco de dados, ou seja, privilégio
de administrador. Sendo assim, todos os usuários com papel de administradores do
banco de dados deverão ser associados a esta role.
Desta forma, fica muito fácil o gerenciamento de privilégios para um grupo de
usuários, pois se antes era necessário realizarmos Grant de todas as tabelas, views,
functions e procedures para todos os usuários com permissão de administradores,
agora, com a Role, necessitamos apenas associar estes usuários a ela.
Metendo a mão na massa
Para ficar mais claro o conceito de Role vamos ilustrar com exemplos como funciona o
gerenciamento de um banco de dados com e sem Roles. Vamos conceder privilégios de
administrador para um usuário.
Definindo privilégios sem o uso de Role:
GRANT ALL ON CLIENTES TO PAULO;
GRANT ALL ON PRODUTOS TO PAULO;
GRANT ALL ON ESTOQUES TO PAULO;
Repare que se fosse necessário criamos outro usuário, deveríamos executar
novamente o mesmo script modificando apenas o nome do usuário:
GRANT ALL ON CLIENTES TO VERA;
GRANT ALL ON PRODUTOS TO VERA;
GRANT ALL ON ESTOQUES TO VERA;
Para bancos de dados com poucos usuários e poucos objetos esta tarefa é muito
simples e não exige grande esforço, porém, sabemos que na realidade, um banco de
dados pode tranqüilamente ultrapassar uma centena de objetos e algumas dezenas de
usuários. Quando isto ocorre o DBA pode ter muitas dores de cabeça caso tenha que
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
controlar privilégios para cada usuário, abaixo veremos como esta tarefa pode ser bem
mais tranqüila, com a utilização de Roles.
Primeiro vamos criar a Role:
CREATE ROLE ADMINISTRADOR;
Agora vamos atribuir os privilégios a esta Role ao invés de atribuir aos usuários:
GRANT ALL ON CLIENTES TO ADMINISTRADOR;
GRANT ALL ON PRODUTOS TO ADMINISTRADOR;
GRANT ALL ON ESTOQUES TO ADMINISTRADOR;
Uma vez que nossa Role ADMINISTRADOR já foi criada e recebeu privilégios para os
objetos do banco de dados, é hora de associarmos nossos usuários a ela, notem como
é muito mais simples atribuir privilégios aos usuários com a utilização da Role criada:
GRANT ADMINISTRADOR TO PAULO, VERA;
Reparem como ficou muito mais simples a atribuição de permissões aos objetos com a
utilização da Role, caso seja necessário modificar os privilégios dos usuários PAULO e
VERA, devemo apenas executar Grant e Revoke a Role que automaticamente isto se
refletirá em todos os usuários associados a ela.
Autenticando
usuários
Autenticação significa verificar a identidade de alguém ou algo (um usuário, dispositivo
ou outra entidade) que quer usar os dados, recursos ou aplicativos. Validando que a
identidade estabelece uma relação de confiança para interações mais. Autenticação
também permite a responsabilização, tornando possível a ligação de acesso e ações de
identidades específicas. Após a autenticação, processos de autorização podem permitir
ou limitar os níveis de acesso e de acção que têm permissão para essa entidade.
Quando você cria um usuário, você deve decidir sobre a técnica de autenticação para
usar,
que
podem
ser
modificados
posteriormente.
Senha: Este também é conhecido como autenticação pelo banco de dados Oracle.
Criar cada usuário com uma senha associada que deve ser fornecida quando o
utilizador tenta estabelecer uma conexão. Ao configurar uma senha, você pode expirar
a senha imediatamente, o que força o usuário a alterar a senha após a primeira
exploração madeireira polegadas Se você decidir que termina senhas de usuários,
certifique-se que os usuários têm a capacidade de alterar a senha. Alguns aplicativos
não têm esta funcionalidade. Todas as senhas criadas no Oracle Database 11g são
sensíveis ao caso por padrão. Essas senhas também podem conter caracteres
multibyte e são limitadas a 30 bytes. Cada senha criados em um banco de dados que é
atualizado para o Oracle Database 11g permanece maiúsculas e minúsculas até que a
senha
seja
alterada.
As senhas são sempre de forma automática e transparente criptografada usando o
algoritmo Advanced Encryption Standard (AES) em rede (cliente / servidor e servidor /
servidor) conexões antes de enviá-los através da rede.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
Externa: Esta é a autenticação através de um método fora do banco de dados
(sistema operacional, Kerberos ou RADIUS). A Opção de Segurança Avançada é
necessário para Kerberos ou RADIUS. Os usuários podem se conectar ao banco de
dados Oracle sem especificar um nome de usuário ou senha. A Opção de Segurança
Avançada (que é uma autenticação forte) permite que os usuários sejam identificados
através do uso da biometria, certificados x509 e dispositivos token. Com a
autenticação externa, sua base de dados depende do sistema operacional, serviço de
autenticação de rede ou serviço de autenticação externa para restringir o acesso a
contas de banco de dados. Uma senha de banco de dados não é usado para este tipo
de login. Se seu sistema operacional ou autorizações de serviços de rede, você pode
tê-lo autenticar os usuários. Se você usar autenticação do sistema operacional, definir
o parâmetro de inicialização OS_AUTHENT_PREFIX e utilizar este prefixo em nomes de
usuários Oracle. O parâmetro OS_AUTHENT_PREFIX define um prefixo que o banco de
dados Oracle adiciona ao início de cada nome da conta do usuário do sistema
operacional. O valor padrão desse parâmetro é $ OPS para compatibilidade com
versões anteriores do software Oracle. O banco de dados Oracle compara o nome
prefixado com os nomes de usuários Oracle em banco de dados quando um usuário
tenta se conectar. Por exemplo, suponha que OS_AUTHENT_PREFIX é definido como
segue:
OS_AUTHENT_PREFIX
OPS
=
$
Se um usuário com uma conta do sistema operacional chamado tsmith precisa se
conectar a um banco de dados Oracle e ser autenticado pelo sistema operacional, o
banco de dados Oracle verifica se há um usuário de banco correspondente OPS $
tsmith e, nesse caso, permite que o usuário se conectar. Todas as referências a um
usuário é autenticado pelo sistema operacional deve incluir o prefixo, como visto na de
inicialização.
Global: Com a opção do Oracle Advanced Security, a autenticação global permite que
os usuários sejam identificados através do uso do Oracle Internet Directory.
Para mais informações sobre métodos avançados de autenticação, consulte o Oracle
Database Security curso.
Perfis de Usuários :
Perfis impor um conjunto chamado de limite de recursos no uso dos recursos de banco
de dados ea instância. Os perfis também gerenciar o status da conta limitações e
colocar em senhas de usuários (comprimento, tempo de expiração, e assim por
diante). Cada utilizador é atribuído um perfil e pode pertencer a apenas um perfil em
um determinado momento. Se os usuários já registrados em quando você muda seu
perfil, a alteração não terá efeito até o seu próximo login.
O perfil DEFAULT serve como base para todos os outros perfis. Como ilustrado no
slide, as limitações de um perfil pode ser especificada implicitamente (como no CPU /
sessão), pode ser ilimitada (como no CPU / Call), ou pode fazer referência a qualquer
definição no perfil padrão (como no tempo de conexão).
Perfis não pode impor limitações de recursos de usuários a menos que o parâmetro de
inicialização RESOURCE_LIMIT é definida como TRUE. Com RESOURCE_LIMIT em seu
valor padrão de FALSE, as limitações do perfil são ignorados. Perfil de configurações de
senha sempre são aplicadas
Perfis permitir ao administrador controlar os recursos do sistema a seguir:
CPU: os recursos da CPU pode ser limitada por sessão ou por chamada. A CPU /
limitação Sessão de 1000 significa que se uma sessão individual, que utiliza este perfil
consome mais de 10 segundos de tempo de CPU (limitações de tempo de CPU está em
centésimos de segundo), a sessão recebe um erro e é registrado fora:
ORA-02392: ultrapassou o limite da sessão sobre a utilização de CPU, você está sendo
desconectado
Uma limitação por chamada faz a mesma coisa, mas ao invés de limitar global da
sessão do usuário, que impede qualquer comando único da CPU consumir muito. Se a
CPU / Call é limitada e que o usuário exceder o limite, anula comando. O usuário
recebe uma mensagem de erro como o seguinte:
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
ORA-02393: excedeu o limite de chamada em uso de CPU
Rede / Memória: Cada sessão de banco de dados consome recursos do sistema e
recursos de memória (se a sessão é de um usuário que não é local para o servidor) da
rede. Você pode especificar o seguinte:
Connect Time: Indica de quantos minutos o usuário pode estar conectado antes de ser
automaticamente desconectado
Idle Time: Indica de quantos minutos a sessão do usuário pode permanecer inativa
antes de ser automaticamente desconectado. O tempo ocioso é calculada para o
processo de servidor único. Ele não leva em conta a atividade dos aplicativos. O limite
IDLE_TIME não é afetado por consultas de longa duração e outras operações.
Sessões Simultâneas: indica quantas sessões simultâneas podem ser criados usando
uma conta de usuário do banco de dados
Private SGA: Limita a quantidade de espaço consumido no Sistema Global Area (SGA)
para a classificação, a fusão bitmaps, e assim por diante. Essa restrição tem efeito
apenas se a sessão utiliza um servidor compartilhado. (Servidores compartilhados são
abordados na lição intitulada "Configurando o Oracle Ambiente de Rede").
Disk I / O: Isso limita a quantidade de dados que um usuário pode ler no nível por
sessão ou o nível de cada chamada. Lê sessão e / Lê / Call estabelecer uma limitação
sobre o número total de leituras da memória e do disco. Isso pode ser feito para
garantir que nenhum I / O uso excessivo de memória intensiva declarações e discos.
Perfis permitem também um limite de composto. Composto limites são baseados em
uma combinação ponderada de CPU / Session, Lê / sessão, tempo de conexão, e
privados PIG. Composto limites são discutidos em mais detalhes no Oracle Database
Security Guide.
Para criar um perfil, clique na guia Servidor e clique em perfis sob o título Security. Na
página de perfis, clique no botão Criar.
Nota: Resource Manager é uma alternativa para muitas das configurações do perfil.
Para mais detalhes sobre o Resource Manager, consulte o Guia do Oracle Database
Administrator.
Download