CREATE RLS POLICY - Amazon Redshift

CREATE RLS POLICY

Cria uma nova política de segurança no nível da linha para fornecer acesso granular aos objetos do banco de dados.

Superusuários e usuários ou funções que têm a função sys:secadmin podem criar uma política.

Sintaxe

CREATE RLS POLICY policy_name [ WITH (column_name data_type [, ...]) [ [AS] relation_alias ] ] USING ( using_predicate_exp )

Parâmetros

policy_name

O nome da política de .

WITH (column_name data_type [, ...])

Especifica o column_name e data_type referenciada às colunas de tabelas às quais a política está anexada.

É possível omitir a cláusula WITH somente quando a política de RLS não fizer referência a nenhuma coluna de tabelas às quais a política está anexada.

AS relation_alias

Especifica um alias opcional para a tabela à qual a política de RLS será anexada.

USING ( using_predicate_exp )

Especifica um filtro que é aplicado à cláusula WHERE da consulta. O Amazon Redshift aplica um predicado de política antes dos predicados do usuário no nível da consulta. Por exemplo, current_user = ‘joe’ and price > 10 limita Joe a ver apenas registros com o preço superior a US$ 10.

Observações de uso

Ao trabalhar com a instrução CREATE RLS POLICY, observe o seguinte:

  • O Amazon Redshift é compatível com filtros que podem fazer parte de uma cláusula WHERE de uma consulta.

  • Todas as políticas anexadas a uma tabela devem ter sido criadas com o mesmo alias de tabela.

  • A permissão SELECT não é necessária nas tabelas de pesquisa. Quando você cria uma política, o Amazon Redshift concede a permissão SELECT na tabela de pesquisa para a respectiva política. Uma tabela de pesquisa é um objeto de tabela usado dentro de uma definição de política.

  • A segurança por linha do Amazon Redshift não é compatível com os seguintes tipos de objeto dentro de uma definição de política: tabelas de catálogo, relações entre bancos de dados, tabelas externas, visualizações regulares, visualizações de vinculação tardia, tabelas com políticas RLS ativadas e tabelas temporárias.

Exemplos

As instruções SQL a seguir criam as tabelas, os usuários e as funções para o exemplo CREATE RLS POLICY.

-- Create users and roles reference in the policy statements. CREATE ROLE analyst; CREATE ROLE consumer; CREATE USER bob WITH PASSWORD 'Name_is_bob_1'; CREATE USER alice WITH PASSWORD 'Name_is_alice_1'; CREATE USER joe WITH PASSWORD 'Name_is_joe_1'; GRANT ROLE sys:secadmin TO bob; GRANT ROLE analyst TO alice; GRANT ROLE consumer TO joe; GRANT ALL ON TABLE tickit_category_redshift TO PUBLIC;

O exemplo a seguir cria uma política chamada policy_concerts.

CREATE RLS POLICY policy_concerts WITH (catgroup VARCHAR(10)) USING (catgroup = 'Concerts');