Como criar usuários e tabelas de banco de dados privados?
Cenário
O administrador do sistema dbadmin tem permissão para acessar tabelas criadas por usuários comuns por padrão. Quando a Separação de permissões está ativada, o administrador dbadmin não tem permissão para acessar tabelas de usuários comuns ou executar operações de controle (DROP, ALTER e TRUNCATE).
Se um usuário privado e uma tabela privada (tabela criada pelo usuário privado) precisarem ser criados, e a tabela privada puder ser acessada apenas pelo usuário privado e o administrador do sistema dbadmin e outros usuários comuns não tiverem permissão para acessar a tabela (INSERT, DELETE, UPDATE, SELECT e COPY). No entanto, o administrador do sistema dbadmin às vezes precisa executar as operações DROP, ALTER ou TRUNCATE sem autorização do usuário privado. Neste caso, pode criar um usuário (usuário privado) com o atributo INDEPENDENT.
Princípios
Esta função é implementada através da criação de um usuário com o atributo INDEPENDENT.
INDEPENDENT | NOINDEPENDENT define funções privadas e independentes. Para uma função com o atributo INDEPENDENT, os direitos dos administradores para controlar e acessar essa função são separados. As regras específicas são as seguintes:
- Os administradores não têm direitos para adicionar, excluir, consultar, modificar, copiar ou autorizar os objetos de tabela correspondentes sem a autorização da função INDEPENDENT.
- Os administradores não têm direitos para modificar a relação de herança da função INDEPENDENT sem a autorização desta função.
- Os administradores não têm direitos para modificar o proprietário dos objetos de tabela para a função INDEPENDENT.
- Os administradores não têm direitos para alterar a senha do banco de dados da função INDEPENDENT. A função INDEPENDENT deve gerenciar sua própria senha, que não pode ser redefinida se perdida.
- O atributo SYSADMIN de um usuário não pode ser alterado para o atributo INDEPENDENT.
Procedimento
- Conecte-se ao banco de dados do DWS como usuário dbadmin.
- Execute a seguinte instrução SQL para criar o usuário privado u1:
1
CREATE USER u1 WITH INDEPENDENT IDENTIFIED BY 'password';
- Alterne para o usuário u1, crie a tabela test e insira dados na tabela.
1 2 3
CREATE TABLE test (id INT, name VARCHAR(20)); INSERT INTO test VALUES (1, 'joe'); INSERT INTO test VALUES (2, 'jim');
- Alterne para o usuário dbadmin e execute a seguinte instrução SQL para verificar se o usuário dbadmin pode acessar a tabela privada test criada pelo usuário privado u1:
1
SELECT * FROM u1.test;
O resultado da consulta indica que o usuário dbadmin não tem a permissão de acesso. Isso significa que o usuário privado e a tabela privada foram criados com sucesso.
- Execute a instrução DROP como usuário dbadmin para excluir a tabela test.
1
DROP TABLE u1.test;