Privilégios de controle de acesso refinado

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Nesta página, descrevemos os privilégios que podem ser concedidos a um papel de banco de dados para controle de acesso refinado.

Para saber mais sobre os papéis do banco de dados e o controle de acesso refinado, consulte Sobre o controle de acesso refinado.

SELECT

Permite que o papel execute instruções SELECT em uma tabela. Se uma lista de colunas for especificada, o privilégio será válido apenas nessas colunas. Se nenhuma lista de colunas for especificada, o privilégio será válido em todas as colunas da tabela, incluindo as colunas adicionadas posteriormente.

  • Depois de conceder SELECT em um subconjunto de colunas de uma tabela, o usuário do FGAC não pode mais usar o SELECT * nessa tabela. As consultas nessa tabela precisam nomear todas as colunas a serem incluídas.

  • SELECT concedida em uma coluna gerada não concede SELECT nas colunas de base subjacentes.

  • Para tabelas intercaladas, SELECT concedidas na tabela mãe não são propagadas para a tabela filha.

  • Quando SELECT é usado com uma função agregada em colunas específicas, por exemplo, SUM(col_a), o papel precisa ter o privilégio SELECT nessas colunas. Se a função de agregação não especificar colunas, por exemplo, COUNT(*), o papel precisará ter o privilégio SELECT em pelo menos uma coluna na tabela.

Examples

GRANT SELECT ON TABLE employees TO ROLE hr_director;

GRANT SELECT ON TABLE customers, orders, items TO ROLE account_mgr;

GRANT SELECT(name, level, cost_center, location, manager) ON TABLE employees TO ROLE hr_manager;

GRANT SELECT(name, address, phone) ON TABLE employees, contractors TO ROLE hr_rep;

No exemplo final anterior, todas as colunas nomeadas precisam estar presentes nas duas tabelas.

INSERT

Permite que o papel insira linhas nas tabelas especificadas. Se uma lista de colunas for especificada, a permissão será válida somente nessas colunas. Se nenhuma lista de colunas for especificada, o privilégio será válido em todas as colunas da tabela.

  • Se os nomes das colunas forem especificados, qualquer coluna não incluída receberá o valor padrão após a inserção.

  • INSERT não podem ser concedidos em colunas geradas.

Examples

GRANT INSERT ON TABLE employees, contractors TO ROLE hr_manager;

GRANT INSERT(name, address, phone) ON TABLE employees TO ROLE hr_rep;

UPDATE

Permite que o papel atualize linhas nas tabelas especificadas. As atualizações podem ser restritas a um subconjunto de colunas da tabela.

  • Além do privilégio UPDATE, o papel precisa do privilégio SELECT em todas as colunas principais e consultadas. As colunas consultadas incluem colunas na cláusula WHERE e colunas que são usadas para calcular os novos valores de colunas atualizadas e colunas geradas.

  • UPDATE não podem ser concedidos em colunas geradas.

Examples

GRANT UPDATE ON TABLE employees, contractors TO ROLE hr_manager;

GRANT UPDATE(name, address, phone) ON TABLE employees TO ROLE hr_rep;

DELETE

Permite que o papel exclua linhas das tabelas especificadas.

  • DELETE não podem ser concedidos no nível da coluna.

  • O papel também precisa de SELECT em todas as colunas de chave e em todas as colunas que possam ser incluídas nas cláusulas WHERE da consulta.

  • Nas tabelas intercaladas, o privilégio DELETE é exigido apenas na tabela mãe. Se uma tabela filha especificar ON DELETE CASCADE, as linhas da tabela filha serão excluídas mesmo sem o privilégio DELETE na tabela filha.

Exemplo

GRANT DELETE ON TABLE employees, contractors TO ROLE admin;

Mais informações

Veja mais informações em: