Políticas de projeção¶
Este tópico fornece informações sobre o uso de políticas de projeção para permitir ou impedir a projeção de colunas na saída de um resultado de consulta SQL.
Visão geral¶
Uma política de projeção é um objeto de primeira classe em nível de esquema que define se uma coluna pode ser projetada na saída de um resultado de consulta SQL. Uma coluna com uma política de projeção atribuída a ela é considerada projeção restrita.
As políticas de projeção podem ser usadas para restringir colunas de identificadores (por exemplo, nome, número de telefone) para objetos ao compartilhar dados com segurança. Por exemplo, considere duas empresas que gostariam de trabalhar como parceiras de soluções e querem identificar um conjunto de clientes comuns antes de desenvolver uma solução integrada. O provedor pode atribuir uma política de projeção às colunas identificadoras no compartilhamento que sejam necessárias para permitir que o consumidor identifique informações confidenciais. O consumidor pode usar os dados compartilhados para realizar uma correspondência com base em colunas previamente acordadas que sejam necessárias para a solução, mas não pode retornar valores dessas colunas.
Os benefícios de usar a política de projeção neste exemplo incluem:
O consumidor pode combinar registros com base em um valor específico sem poder visualizar esse valor.
Informações confidenciais do provedor não podem ser exibidas no resultado da consulta SQL. Para obter detalhes, consulte a seção Considerações (neste tópico).
Depois de criar a política de projeção, um administrador de política pode atribuir a política de projeção a uma coluna. Uma coluna só pode ter uma política de projeção atribuída a ela em um determinado momento. Um usuário poderá projetar a coluna somente se sua função ativa corresponder a uma condição de política de projeção que permita que a coluna seja projetada.
Observe que uma coluna com projeção restrita também pode ser protegida por uma política de mascaramento e a tabela que contém a coluna com projeção restrita pode ser protegida por uma política de acesso a linhas. Para obter mais detalhes, consulte Políticas de mascaramento e acesso a linhas (neste tópico).
Uso da coluna¶
O Snowflake rastreia o uso da coluna. Referências indiretas a uma coluna, como uma definição de exibição, UDF (neste tópico) e uma expressão de tabela comum, impactam a projeção da coluna quando uma política de projeção é definida em uma coluna.
Quando uma política de projeção é definida na coluna e a coluna não pode ser projetada, a coluna:
Não está incluída na saída de um resultado de consulta.
Não pode ser inserida em outra tabela.
Não pode ser um argumento para uma função externa ou procedimento armazenado.
Limitações¶
- UDFs:
Para limitações relacionadas às funções definidas pelo usuário (UDFs), consulte Funções definidas pelo usuário (UDFs) (neste tópico).
- Política:
Uma política de projeção não pode ser aplicada a:
Uma tag, e essa tag não pode ser atribuída a uma tabela ou coluna (ou seja, “políticas de projeção baseadas em tags”).
Uma coluna virtual ou para a coluna VALUE em uma tabela externa.
Como solução alternativa, crie uma exibição e atribua uma política de projeção a cada coluna que não deve ser projetada.
O
value_column
em uma construção PIVOT. Para detalhes relacionados, consulte UNPIVOT (neste tópico).
Uma política de projeção
body
não pode fazer referência a uma coluna protegida por uma política de mascaramento ou a uma tabela protegida por uma política de acesso a linhas. Para detalhes adicionais, consulte Políticas de mascaramento e acesso a linhas (neste tópico).
Considerações¶
Use políticas de projeção quando o caso de uso exigir a consulta de uma coluna confidencial sem expor diretamente o valor da coluna a um analista ou função semelhante. O valor da coluna dentro de uma coluna restrita por projeção pode ser analisado com maior flexibilidade do que um valor mascarado ou tokenizado. No entanto, considere o seguinte antes de definir uma política de projeção em uma coluna:
Uma política de projeção não impede a segmentação de um indivíduo.
Por exemplo, um usuário pode filtrar linhas onde a coluna
name
corresponde a um indivíduo específico, mesmo que a coluna seja restrita por projeção. No entanto, o usuário não pode executar uma instrução SELECT para visualizar os nomes dos indivíduos na tabela.Quando uma coluna restrita de projeção é a chave de junção para uma consulta que combina dados da tabela protegida com dados de uma tabela desprotegida, nada impede que o usuário projete valores da coluna na tabela desprotegida. Como resultado, se um valor na tabela desprotegida corresponder a um valor na coluna protegida, o usuário poderá obter esse valor projetando-o da tabela desprotegida.
Por exemplo, suponha que uma política de projeção tenha sido atribuída à coluna
email
da tabelat_protected
. Um usuário ainda pode verificar os valores na colunat_protected.email
executando:SELECT t_unprotected.email FROM t_unprotected JOIN t_protected ON t_unprotected.email = t_protected.email;
Uma restrição de projeção não garante que uma pessoa mal-intencionada não possa usar consultas deliberadas para obter dados potencialmente confidenciais de uma coluna com restrição de projeção. As políticas de projeção são mais adequadas para uso com parceiros e clientes com os quais você já tem um nível de confiança. Além disso, os provedores devem estar atentos a possíveis utilizações indevidas dos seus dados (por exemplo, revendo o histórico de acesso às suas listagens).
Criação de uma política de projeção¶
Uma política de projeção contém um body
que chama a função interna PROJECTION_CONSTRAINT para determinar se uma coluna deve ser projetada.
CREATE OR REPLACE PROJECTION POLICY <name> AS () RETURNS PROJECTION_CONSTRAINT -> <body>Onde:
name
especifica o nome da política.
AS () RETURNS PROJECTION_CONSTRAINT
é a assinatura e o tipo de retorno da política. A assinatura não aceita argumentos e o tipo de retorno é PROJECTION_CONSTRAINT, que é um tipo de dados interno. Todas as políticas de projeção possuem a mesma assinatura e tipo de retorno.
body
é a expressão SQL que determina se a coluna deve ser projetada. A expressão chama a função interna PROJECTION_CONSTRAINT para permitir ou impedir a projeção de uma coluna:
PROJECTION_CONSTRAINT(ALLOW => true)
permite projetar uma coluna.
PROJECTION_CONSTRAINT(ALLOW => false)
não permite projetar uma coluna.
Exemplos de política¶
As políticas de projeção mais simples chamam a função PROJECTION_CONSTRAINT diretamente:
- Permitir a projeção de coluna
CREATE OR REPLACE PROJECTION POLICY mypolicy AS () RETURNS PROJECTION_CONSTRAINT -> PROJECTION_CONSTRAINT(ALLOW => true)
- Impedir a projeção da coluna
CREATE OR REPLACE PROJECTION POLICY mypolicy AS () RETURNS PROJECTION_CONSTRAINT -> PROJECTION_CONSTRAINT(ALLOW => false)
Expressões SQL mais complicadas podem ser escritas para chamar a função PROJECTION_CONSTRAINT. A expressão pode usar Funções de expressão condicional e Funções de contexto para introduzir lógica para permitir que determinados usuários com uma função específica projetem uma coluna e impedir que todos os outros usuários projetem uma coluna.
Por exemplo, use uma expressão CASE para permitir que apenas usuários com a função personalizada analyst
projetem uma coluna:
CREATE OR REPLACE PROJECTION POLICY mypolicy AS () RETURNS PROJECTION_CONSTRAINT -> CASE WHEN CURRENT_ROLE() = 'ANALYST' THEN PROJECTION_CONSTRAINT(ALLOW => true) ELSE PROJECTION_CONSTRAINT(ALLOW => false) END;
Para casos de uso de compartilhamento de dados, o provedor pode escrever uma política de projeção para restringir a projeção de colunas para todas as contas do consumidor usando a função de contexto CURRENT_ACCOUNT ou restringir seletivamente a projeção de colunas em compartilhamentos específicos usando a função de contexto INVOKER_SHARE. Por exemplo:
- Restringir todas as contas de consumidor
Neste exemplo,
provider.account
é o identificador da conta no formato do nome da conta:CREATE OR REPLACE PROJECTION POLICY restrict_consumer_accounts AS () RETURNS PROJECTION_CONSTRAINT -> CASE WHEN CURRENT_ACCOUNT() = 'provider.account' THEN PROJECTION_CONSTRAINT(ALLOW => true) ELSE PROJECTION_CONSTRAINT(ALLOW => false) END;
- Restringir a compartilhamentos específicos
Considere uma conta de provedor de compartilhamento de dados que tenha uma política de projeção definida em uma coluna de uma exibição segura. Há dois compartilhamentos diferentes (
SHARE1
eSHARE2
) que podem acessar a exibição segura para oferecer suporte a dois consumidores diferentes de compartilhamento de dados.Se um usuário na conta do consumidor de compartilhamento de dados tentar projetar a coluna por meio de qualquer compartilhamento, ele poderá projetar a coluna, caso contrário, a coluna não poderá ser projetada:
CREATE OR REPLACE PROJECTION POLICY projection_share AS () RETURNS PROJECTION_CONSTRAINT -> CASE WHEN INVOKER_SHARE() IN ('SHARE1', 'SHARE2') THEN PROJECTION_CONSTRAINT(ALLOW => true) ELSE PROJECTION_CONSTRAINT(ALLOW => false) END;
Atribuir uma política de projeção¶
Uma política de projeção é aplicada a uma coluna de tabela usando um comando ALTER TABLE … ALTER COLUMN e a uma coluna de exibição usando um comando ALTER VIEW. Cada coluna oferece suporte a apenas uma política de projeção.
ALTER { TABLE | VIEW } <name> { ALTER | MODIFY } COLUMN <col1_name> SET PROJECTION POLICY <policy_name> [ FORCE ] [ , <col2_name> SET PROJECTION POLICY <policy_name> [ FORCE ] ... ]
Onde:
name
especifica o nome da tabela ou exibição.col1_name
especifica o nome da coluna na tabela ou exibição.col2_name
especifica o nome de uma coluna adicional na tabela ou exibição.policy_name
especifica o nome da política de projeção definida na coluna.FORCE
é um parâmetro opcional que permite ao comando atribuir a política de projeção a uma coluna que já possui uma política de projeção atribuída a ela. A nova política de projeção substitui atomicamente a existente.
Por exemplo, para definir uma política de projeção proj_policy_acctnumber
na coluna account_number
de uma tabela:
ALTER TABLE finance.accounting.customers MODIFY COLUMN account_number SET PROJECTION POLICY proj_policy_acctnumber;
Você também pode usar a cláusula WITH dos comandos CREATE TABLE e CREATE VIEW para atribuir uma política de projeção a uma coluna quando a tabela ou exibição for criada. Por exemplo, para atribuir a política my_proj_policy
à coluna account_number
de uma nova tabela, execute:
CREATE TABLE t1 (account_number NUMBER WITH PROJECTION POLICY my_proj_policy);
Substituir uma política de projeção¶
O método recomendado para substituir uma política de projeção é usar o parâmetro FORCE
para separar a política de projeção existente e atribuir a nova em um único comando. Isso permite substituir atomicamente a política antiga, sem deixar lacunas na proteção.
Por exemplo, para atribuir uma nova política de projeção a uma coluna que já está restrita à projeção:
ALTER TABLE finance.accounting.customers
MODIFY COLUMN account_number
SET PROJECTION POLICY proj_policy2 FORCE;
Você também pode desanexar a política de projeção de uma coluna em uma instrução (… UNSET PROJECTION POLICY) e depois definir uma nova política na coluna em uma instrução diferente (… SET PROJECTION POLICY <nome>). Se você escolher esse método, a coluna não será protegida por uma política de projeção entre a desanexação de uma política e a atribuição de outra. Uma consulta poderia potencialmente acessar dados confidenciais durante esse período.
Desanexação de uma política de projeção¶
Use a cláusula UNSET PROJECTION POLICY de um comando ALTER TABLE ou ALTER VIEW para desanexar uma política de projeção da coluna de uma tabela ou exibição. O nome da política de projeção não é obrigatório porque uma coluna não pode ter mais de uma política de projeção anexada.
ALTER { TABLE | VIEW } <name> { ALTER | MODIFY } COLUMN <col1_name> UNSET PROJECTION POLICY [ , <col2_name> UNSET PROJECTION POLICY ... ]
Onde:
name
especifica o nome da tabela ou exibição.col1_name
especifica o nome da coluna na tabela ou exibição.col2_name
especifica o nome de uma coluna adicional na tabela ou exibição.
Por exemplo, para remover a política de projeção da coluna account_number
:
ALTER TABLE finance.accounting.customers MODIFY COLUMN account_number UNSET PROJECTION POLICY;
Monitoramento de políticas de projeção com SQL¶
Pode ser útil pensar em duas abordagens gerais para determinar como monitorar o uso de política de projeção.
Como descobrir as políticas de projeção¶
Você pode usar a exibição PROJECTION_POLICIES no esquema Account Usage do banco de dados SNOWFLAKE compartilhado. Essa exibição é um catálogo de todas as políticas de projeção em sua conta Snowflake. Por exemplo:
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.PROJECTION_POLICIES ORDER BY POLICY_NAME;
Identificar referências de política de projeção¶
A função de tabela POLICY_REFERENCES do Information Schema pode identificar referências de política de projeção. Existem duas opções de sintaxe diferentes:
Retorna uma linha para cada objeto (ou seja, tabela ou exibição) que tenha a política de projeção especificada definida em uma coluna:
USE DATABASE my_db; SELECT policy_name, policy_kind, ref_entity_name, ref_entity_domain, ref_column_name, ref_arg_column_names, policy_status FROM TABLE(information_schema.policy_references(policy_name => 'my_db.my_schema.projpolicy'));
Devolver uma linha para cada política atribuída à tabela chamada
my_table
:USE DATABASE my_db; USE SCHEMA information_schema; SELECT policy_name, policy_kind, ref_entity_name, ref_entity_domain, ref_column_name, ref_arg_column_names, policy_status FROM TABLE(information_schema.policy_references(ref_entity_name => 'my_db.my_schema.my_table', ref_entity_domain => 'table'));
Exemplo estendido¶
A criação de uma política de projeção e a atribuição da política de projeção a uma coluna segue o mesmo procedimento geral da criação e atribuição de outras políticas, como políticas de mascaramento e acesso a linhas:
Para uma abordagem de gerenciamento centralizado, crie uma função personalizada (por exemplo,
proj_policy_admin
) para gerenciar a política.Conceda a esta função os privilégios para criar e atribuir uma política de projeção.
Crie a política de projeção.
Atribua a política de projeção a uma coluna.
Com base neste procedimento geral, conclua as etapas a seguir para atribuir uma política de projeção a uma coluna:
Crie uma função personalizada para gerenciar a política de projeção:
USE ROLE useradmin; CREATE ROLE proj_policy_admin;
Conceda à função personalizada
proj_policy_admin
os privilégios para criar uma política de projeção em um esquema e atribuir a política de projeção a qualquer tabela ou coluna de exibição na conta Snowflake.Esta etapa pressupõe que a política de projeção seja armazenada em um banco de dados e esquema denominado
privacy.projpolicies
e que esse banco de dados e esquema já existem:GRANT USAGE ON DATABASE privacy TO ROLE proj_policy_admin; GRANT USAGE ON SCHEMA privacy.projpolicies TO ROLE proj_policy_admin; GRANT CREATE PROJECTION POLICY ON SCHEMA privacy.projpolicies TO ROLE proj_policy_admin; GRANT APPLY PROJECTION POLICY ON ACCOUNT TO ROLE proj_policy_admin;
Para obter mais detalhes, consulte Privilégios e comandos (neste tópico).
Crie uma política de projeção para evitar a projeção de colunas:
USE ROLE proj_policy_admin; USE SCHEMA privacy.projpolicies; CREATE OR REPLACE PROJECTION POLICY proj_policy_false AS () RETURNS PROJECTION_CONSTRAINT -> PROJECTION_CONSTRAINT(ALLOW => false);
Atribua a política de projeção a uma coluna da tabela:
ALTER TABLE customers MODIFY COLUMN active SET PROJECTION POLICY privacy.projpolicies.proj_policy_false;
Políticas de projeção com recursos Snowflake¶
As subseções a seguir resumem brevemente como as políticas de projeção interagem com vários recursos e serviços do Snowflake.
Políticas de mascaramento e acesso a linhas¶
Esta seção descreve como uma política de projeção interage com uma política de mascaramento e uma política de acesso a linhas.
- Várias políticas:
Uma coluna pode ter uma política de mascaramento e uma política de projeção ao mesmo tempo, e a tabela que contém esta coluna pode ser protegida por uma política de acesso a linhas. Se todas as três políticas estiverem presentes, o Snowflake processará a tabela e as políticas da seguinte forma:
Aplique filtros de linha de acordo com a política de acesso a linhas.
Determine se a consulta está tentando projetar alguma coluna restrita pela política de projeção e, em caso afirmativo, rejeite a consulta.
Aplique máscaras de coluna de acordo com a política de mascaramento.
Uma coluna protegida por uma política de mascaramento também pode ter projeção restrita. Por exemplo, uma política de mascaramento definida em uma coluna contendo números de conta pode ter uma condição que permite que usuários com a função personalizada
finance_admin
vejam os números de conta e outra condição para substituir os números de conta por um hash para todas as outras funções.Uma política de projeção pode restringir ainda mais a coluna de forma que os usuários com a função personalizada
analyst
não possam projetar a coluna. Observe que os usuários com a função personalizadaanalyst
ainda podem analisar a coluna agrupando hashes ou unindo-se a esses hashes.Snowflake recomenda que os administradores de políticas trabalhem com responsáveis internos de conformidade e regulamentação para determinar as colunas que devem ser restritas à projeção.
- Avaliação de políticas:
Uma coluna restrita por projeção não pode ser referenciada por uma política de mascaramento ou por uma política de acesso a linhas ao:
Atribuir uma política de acesso a linhas para uma tabela.
Enumerar uma ou mais colunas em uma política de mascaramento condicional.
Executar uma pesquisa na tabela de mapeamento.
Conforme mencionado em Limitações (neste tópico), uma política de projeção
body
não pode fazer referência a uma coluna protegida por uma política de mascaramento ou a uma tabela protegida por uma política de acesso a linhas.
Objetos dependentes com outras políticas de projeção¶
Considere a seguinte série de objetos:
base_table
»v1
»v2
Onde:
v1
é uma exibição construída a partir da tabela chamadabase_table
.
v2
é uma exibição construída a partir dev1
.
Se houver uma consulta em uma coluna em uma exibição com restrição de projeção e essa coluna depender de uma coluna com restrição de projeção em base_table
, a coluna da exibição será projetada somente se ambas as políticas de projeção permitirem que a coluna seja projetada.
O Snowflake verifica a cadeia de linhagem da coluna até a tabela base para garantir que quaisquer referências à coluna não sejam restritas à projeção. Se alguma coluna na cadeia de linhagem estiver restrita à projeção e a coluna não puder ser projetada, o Snowflake bloqueará a consulta.
Exibições e exibições materializadas¶
Uma política de projeção em uma coluna de exibição restringe a coluna de exibição e não a coluna da tabela base subjacente.
Com relação às referências, uma política de projeção que restringe uma coluna da tabela é transferida para uma exibição que faz referência à coluna restrita da tabela.
Fluxos e tarefas¶
As políticas de projeção em colunas de uma tabela são transferidas para um fluxo na mesma tabela. Observe que uma política de projeção não pode ser definida em um fluxo.
Da mesma forma, uma coluna com projeção restrita permanece restrita quando uma tarefa faz referência à coluna restrita.
UNPIVOT¶
O resultado de uma construção UNPIVOT depende se uma coluna foi inicialmente restringida por uma política de projeção. Nota:
Colunas restritas antes e depois da execução de UNPIVOT permanecem com projeção restrita.
O
name_column
sempre aparece no resultado da consulta.Se alguma coluna em
column_list
tiver restrição de projeção,value_column
também terá restrição de projeção.
Objetos clonados¶
A abordagem a seguir ajuda a proteger dados de usuários com o privilégio SELECT em uma tabela ou exibição clonada armazenada no banco de dados ou esquema clonado:
A clonagem de um objeto individual de política de projeção não é permitida.
A clonagem de um esquema resulta na clonagem de todas as políticas de projeção dentro do esquema.
Uma tabela clonada é mapeada para as mesmas políticas de projeção que a tabela de origem.
Quando uma tabela é clonada no contexto da clonagem de seu esquema principal, se a tabela de origem tiver uma referência a uma política de projeção no mesmo esquema principal (ou seja, uma referência local), a tabela clonada terá uma referência à política de projeção clonada.
Se a tabela de origem se referir a uma política de projeção em um esquema diferente (ou seja, uma referência estrangeira), então a tabela clonada manterá a referência estrangeira.
Para obter mais informações, consulte CREATE <objeto> … CLONE.
Replicação¶
As políticas de projeção e suas atribuições podem ser replicadas usando replicação de banco de dados e grupos de replicação.
Para replicação de banco de dados, a operação de replicação falha se uma das seguintes condições for verdadeira:
O banco de dados primário está em uma conta Enterprise (ou superior) e contém uma política, mas uma ou mais das contas aprovadas para replicação estão em edições anteriores.
Uma tabela ou exibição contida no banco de dados primário tem uma referência pendente a uma política de projeção em outro banco de dados.
O comportamento de referência pendente para a replicação de banco de dados pode ser evitado ao replicar múltiplos bancos de dados em um grupo de replicação.
Funções definidas pelo usuário (UDFs)¶
Observe o seguinte em relação às restrições de projeção e UDFs:
- UDFs de SQL escalares:
Snowflake avalia UDF e, em seguida, aplica a política de projeção à coluna restrita de projeção.
Se uma coluna em uma instrução SELECT for derivada transitivamente de uma UDF, que também é derivada de uma coluna com restrição de projeção, o Snowflake bloqueará a consulta. Em outras palavras:
Coluna
pc_column
» UDF » (na instrução SELECT)Onde:
pc_column
refere-se a uma coluna restrita por projeção.
Como a coluna na instrução SELECT pode ser rastreada até uma coluna restrita por projeção, o Snowflake bloqueia a consulta.
- SQL UDTFs:
As funções de tabela definidas pelo usuário SQL (UDTF) seguem o mesmo comportamento de UDFs SQL, exceto que, como as linhas são retornadas na saída da função, o Snowflake avalia cada coluna da tabela independentemente para determinar se a coluna deve ser projetada na saída da função.
- Outras UDFs:
O seguinte se aplica a Introdução a UDFs de Java, Introdução a UDFs de JavaScript, Introdução a UDFs de Python:
Uma coluna restrita por projeção é restrita na saída da UDTF.
- Registro em log e tabelas de eventos:
Quando uma UDF, UDTF ou UDF JavaScript tem um argumento restrito à projeção, o Snowflake não captura detalhes de log e eventos na tabela de eventos correspondente. No entanto, o Snowflake permite que a UDF/UDTF seja executada e não falha na instrução que chama a UDF/UDTF devido a motivos de registro.
Privilégios e comandos¶
As subseções a seguir fornecem informações para ajudar a gerenciar as políticas de projeção.
Privilégios da política de projeção¶
Snowflake oferece suporte aos seguintes privilégios no objeto de política de projeção.
Observe que operar em qualquer objeto de um esquema também requer o privilégio USAGE no banco de dados e esquema principais.
Privilégio |
Uso |
---|---|
APPLY |
Habilita as operações de ativação e desativação para uma política de projeção em uma coluna. |
OWNERSHIP |
Transfere a propriedade da política de projeção, o que concede controle total sobre a política de projeção. Necessário para alterar a maioria das propriedades de uma política de projeção. |
Para obter mais detalhes, consulte Resumo de comandos DDL, operações e privilégios (neste tópico).
Referência DDL da política de projeção¶
O Snowflake oferece suporte ao seguinte DDL para criar e gerenciar políticas de projeção.
Resumo de comandos DDL, operações e privilégios¶
A tabela a seguir resume a relação entre privilégios da política de projeção e operações DDL.
Observe que operar em qualquer objeto de um esquema também requer o privilégio USAGE no banco de dados e esquema principais.
Operação |
Privilégio necessário |
---|---|
Crie uma política de projeção. |
Uma função com o privilégio CREATE PROJECTION POLICY no mesmo esquema. |
Altere a política de projeção. |
A função com o privilégio OWNERSHIP na política de projeção. |
Descrição da política de projeção |
Um dos seguintes:
|
Descarte a política de projeção. |
Uma função com o privilégio OWNERSHIP na política de projeção. |
Mostre as políticas de projeção. |
Um dos seguintes:
|
Defina ou remova uma política de projeção em uma coluna. |
Um dos seguintes:
|
O Snowflake aceita diferentes permissões para criar e definir uma política de projeção em um objeto.
Para uma abordagem centralizada de gerenciamento de políticas de projeção, na qual a função personalizada
projection_policy_admin
cria e define políticas de projeção: em todas as colunas, são necessárias as seguintes permissões:USE ROLE securityadmin; GRANT USAGE ON DATABASE mydb TO ROLE projection_policy_admin; GRANT USAGE ON SCHEMA mydb.schema TO ROLE projection_policy_admin; GRANT CREATE PROJECTION POLICY ON SCHEMA mydb.schema TO ROLE projection_policy_admin; GRANT APPLY ON PROJECTION POLICY ON ACCOUNT TO ROLE projection_policy_admin;
Em uma abordagem híbrida de gerenciamento, uma única função tem o privilégio CREATE PROJECTIONPOLICY para assegurar que as políticas de projeção sejam nomeadas de forma consistente e que equipes ou funções individuais tenham o privilégio APPLY para uma política de projeção específica.
Por exemplo, a função personalizada
finance_role
pode receber a permissão para definir a política de projeçãocost_center
em tabelas e exibições que a função possui (ou seja, a função tem o privilégio OWNERSHIP sobre a tabela ou exibição):USE ROLE securityadmin; GRANT CREATE PROJECTION POLICY ON SCHEMA mydb.schema TO ROLE projection_policy_admin; GRANT APPLY ON PROJECTION POLICY cost_center TO ROLE finance_role;