Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Considerações e limitações ao usar políticas de RLS

Modo de foco
Considerações e limitações ao usar políticas de RLS - Amazon Redshift

Considerações

Veja as seguintes considerações para trabalhar com políticas de RLS:

  • O Amazon Redshift aplica políticas de RLS às instruções SELECT, UPDATE e DELETE.

  • O Amazon Redshift não aplica políticas de RLS a instruções INSERT, COPY e ALTER TABLE APPEND.

  • As políticas de RLS podem ser anexadas a tabelas, visualizações, visualizações de vinculação tardia (LBVs) e visões materializadas (MVs).

  • A segurança no nível da linha trabalha com a segurança no nível da coluna para proteger seus dados.

  • Quando o RLS é ativado para a relação de origem, o Amazon Redshift oferece suporte à instrução ALTER TABLE APPEND para superusuários, usuários que receberam explicitamente a permissão de sistema IGNORE RLS ou o perfil sys:secadmin. Nesse caso, é possível executar a instrução ALTER TABLE APPEND para acrescentar linhas a uma tabela de destino movendo dados de uma tabela de origem existente. O Amazon Redshift move todas as tuplas da relação de origem para a relação de destino. O status RLS da relação de destino não afeta a instrução ALTER TABLE APPEND.

  • Para facilitar a migração de outros sistemas de data warehouse, é possível definir e recuperar variáveis de contexto de sessão personalizadas para uma conexão especificando o nome e o valor da variável.

    O exemplo a seguir define variáveis de contexto de sessão para uma política de segurança no nível da linha (RLS).

    -- Set a customized context variable. SELECT set_config(‘app.category’, ‘Concerts’, FALSE); -- Create a RLS policy using current_setting() to get the value of a customized context variable. CREATE RLS POLICY policy_categories WITH (catgroup VARCHAR(10)) USING (catgroup = current_setting('app.category', FALSE)); -- Set correct roles and attach the policy on the target table to one or more roles. ATTACH RLS POLICY policy_categories ON tickit_category_redshift TO ROLE analyst, ROLE dbadmin;

    Para obter detalhes sobre como definir e recuperar variáveis de contexto de sessão personalizadas, acesse SET, SET_CONFIG, SHOW, CURRENT_SETTING e RESET. Para obter mais informações sobre como modificar a configuração do servidor em geral, acesse Modificar a configuração do servidor.

    Importante

    Quando são usadas variáveis de contexto de sessão em políticas de RLS, a política de segurança depende do usuário ou da função que invoca a política. Tenha cuidado para evitar vulnerabilidades de segurança ao usar variáveis de contexto de sessão em políticas de RLS.

  • Alterar o usuário da sessão usando SET SESSION AUTHORIZATION entre DECLARE e FETCH, ou entre instruções FETCH subsequentes, não atualizará o plano já preparado com base nas políticas do usuário no momento de DECLARE. Evite alterar o usuário da sessão quando os cursores são usados com tabelas protegidas por RLS.

  • Quando os objetos de base dentro de um objeto de visualização são protegidos por RLS, as políticas anexadas ao usuário que executa a consulta são aplicadas nos respectivos objetos de base. Isso é diferente das verificações de permissão por objeto, onde as permissões do proprietário da visualização são comparadas com os objetos de base da visualização. Você pode visualizar as relações protegidas por RLS de uma consulta na saída do plano EXPLAIN.

  • Quando uma função definida pelo usuário (UDF) é mencionada em uma política de RLS de uma relação anexada a um usuário, o usuário deve ter a permissão EXECUTE sobre a UDF para consultar a relação.

  • A segurança no nível da linha pode limitar a otimização de consultas. É recomendável avaliar cuidadosamente o desempenho da consulta antes de implantar exibições protegidas por RLS em conjuntos de dados grandes.

  • As políticas de segurança no nível da linha aplicadas às exibições de vinculação tardia podem ser inseridas em tabelas federadas. Essas políticas RLS podem estar visíveis em logs do mecanismo de processamento externos.

Limitações

Veja a seguir as limitações ao trabalhar com políticas de RLS:

  • Não é possível anexar políticas de RLS a tabelas externas e a vários outros tipos de relação. Para obter mais informações, consulte ATTACH RLS POLICY.

  • O Amazon Redshift é compatível com a instruções SELECT para determinadas políticas de RLS com pesquisas que têm junções complexas, mas não são compatíveis com instruções UPDATE ou DELETE. Nos casos com instruções UPDATE ou DELETE, o Amazon Redshift retorna o seguinte erro:

    ERROR: One of the RLS policies on target relation is not supported in UPDATE/DELETE.
  • Sempre que uma função definida pelo usuário (UDF) é mencionada em uma política de RLS de uma relação anexada a um usuário, o usuário deve ter a permissão EXECUTE sobre a UDF para consultar a relação.

  • Subconsultas correlacionadas não são compatíveis. O Amazon Redshift retorna o erro a seguir:

    ERROR: RLS policy could not be rewritten.
  • O Amazon Redshift não oferece suporte ao compartilhamento de dados com RLS. Se uma relação não tiver o RLS desativado para unidades de compartilhamento de dados, a consulta falhará no cluster de consumidores com o seguinte erro:

    RLS-protected relation "rls_protected_table" cannot be accessed via datasharing query.

    É possível desativar o RLS para unidades de compartilhamento de dados usando o comando ALTER TABLE com o parâmetro ROW LEVEL SECURITY OFF FOR DATASHARES. Consulte mais informações sobre como usar ALTER TABLE para habilitar ou desabilitar o RLS em ALTER TABLE.

  • Em consultas entre bancos de dados, o Amazon Redshift bloqueia as leituras de relações protegidas por RLS. Usuários com a permissão IGNORE RLS podem acessar a relação protegida usando consultas entre bancos de dados. Quando um usuário sem a permissão IGNORE RLS acessa uma relação protegida por RLS por meio de uma consulta entre bancos de dados, o seguinte erro é exibido:

    RLS-protected relation "rls_protected_table" cannot be accessed via cross-database query.
  • ALTER RLS POLICY só comporta a modificação de uma política de RLS por meio da cláusula USING ( using_predicate_exp ). Não é possível modificar uma política de RLS com uma cláusula WITH ao executar ALTER RLS POLICY.

  • Você não poderá consultar relações que tenham a segurança por linha ativada se os valores de qualquer uma das opções de configuração abaixo não corresponderem ao valor padrão da sessão:

    • enable_case_sensitive_super_attribute

    • enable_case_sensitive_identifier

    • downcase_delimited_identifier

    Considere redefinir as opções de configuração da sessão se você tentar consultar uma relação com a segurança por linha ativada e vir a mensagem “RLS protected relation does not support session level config on case sensitivity being different from its default value”.

  • Quando o cluster provisionado ou namespace sem servidor tem alguma política de segurança por linha, os seguintes comandos são bloqueados para usuários comuns:

    ALTER <current_user> SET enable_case_sensitive_super_attribute/enable_case_sensitive_identifier/downcase_delimited_identifier

    Ao criar políticas de RLS, recomendamos que você altere as definições de opções da configuração padrão para usuários comuns a fim de que correspondam às definições de opções da configuração da sessão no momento em que a política foi criada. Superusuários e usuários com o privilégio ALTER USER podem fazer isso usando as configurações do grupo de parâmetros ou o comando ALTER USER. Para obter informações sobre grupos de parâmetros, consulte Amazon Redshift parameter groups no Guia de gerenciamento do Amazon Redshift. Para obter mais informações sobre o comando ALTER USER, consulte ALTER USER.

  • As exibições e as exibições de vinculação tardia com políticas de segurança no nível da linha não podem ser substituídas por usuários regulares usando o comando CREATE VIEW. Para substituir exibições ou LBVs por políticas RLS, primeiro desanexe todas as políticas RLS anexadas, substitua as exibições ou LBVs e reanexe as políticas. Os superusuários e usuários com o sys:secadmin permission podem usar CREATE VIEW em exibições ou LBVs com políticas RLS sem desanexar as políticas.

  • As exibições com políticas de segurança no nível da linha não podem referenciar tabelas e exibições de sistema.

  • Uma exibição de vinculação tardia referenciada por uma exibição normal não pode ser protegida por RLS.

  • As relações protegidas por RLS e os dados aninhados de data lakes não podem ser acessados na mesma consulta.

Nesta página

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.