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');