Controle de acesso a tabelas dinâmicas¶
Este tópico discute os privilégios necessários para realizar operações com tabelas dinâmicas, como criação, consulta, alteração, exibição e exclusão.
Para saber mais sobre o modelo de privilégio Snowflake, consulte Visão geral do controle de acesso e Privilégios de controle de acesso.
Transferência de propriedade¶
Para fornecer a um usuário acesso total a uma tabela dinâmica, você pode fazer o seguinte:
Conceda todos os privilégios, exceto OWNERSHIP, na tabela dinâmica a uma função.
Conceda o privilégio OWNERSHIP ou ALL PRIVILEGES em futuras tabelas dinâmicas a uma função.
Ao atribuir concessões, certifique-se de especificar o tipo de objeto como DYNAMIC TABLE
porque as tabelas dinâmicas têm um conjunto de privilégios diferente das tabelas regulares.
Para conceder o privilégio OWNERSHIP em tabelas dinâmicas, certifique-se de que a função receptora tenha o privilégio USAGE nos seguintes itens. Caso contrário, as atualizações agendadas subsequentes falharão.
O banco de dados e o esquema que contém a tabela dinâmica.
O warehouse usado para atualizar a tabela.
Para transferir a propriedade de uma tabela dinâmica, você pode usar o comando GRANT OWNERSHIP ou o Snowsight.
O exemplo a seguir usa o comando GRANT OWNERSHIP para conceder os privilégios de propriedade em my_dynamic_table
para a função budget_admin
.
GRANT OWNERSHIP ON DYNAMIC TABLE my_dynamic_table TO ROLE budget_admin;
O exemplo a seguir usa o comando GRANT OWNERSHIP para conceder os privilégios de propriedade em todas as futuras tabelas dinâmicas criadas no esquema mydb.myschema
à função budget_admin
.
GRANT OWNERSHIP ON FUTURE DYNAMIC TABLES IN SCHEMA mydb.myschema TO ROLE budget_admin;
Faça login no Snowsight.
Na navegação, vá para Monitoring » Dynamic Tables.
Localize sua tabela dinâmica na lista e selecione
» Transfer Ownership.
Selecione a função para a qual deseja transferir a propriedade.
Para saber mais sobre o modelo de privilégio Snowflake, consulte Visão geral do controle de acesso e Privilégios de controle de acesso.
Privilégios para criar uma tabela dinâmica¶
Para criar uma tabela dinâmica, você deve usar uma função que tenha os seguintes privilégios:
Privilégio |
Objeto |
---|---|
CREATE DYNAMIC TABLE |
Esquema no qual você planeja criar a tabela dinâmica. |
SELECT |
As tabelas e exibições existentes que você planeja consultar para a nova tabela dinâmica. |
USAGE |
Banco de dados e esquema que você planeja usar para a nova tabela dinâmica. Warehouse que você planeja usar para atualizar a tabela. Nota Embora você possa executar |
Para criar uma tabela dinâmica que depende de outra tabela dinâmica, você deve usar uma função que tenha os seguintes privilégios:
Privilégio |
Objeto |
---|---|
SELECT |
Tabela dinâmica que você planeja consultar para criar a nova tabela dinâmica. |
OPERATE |
Todas as tabelas dinâmicas upstream das quais a nova tabela dinâmica depende. Necessário apenas se você definir a tabela dinâmica para ser atualizada de forma síncrona na criação. |
Privilégios para consultar uma tabela dinâmica¶
Para consultar uma tabela dinâmica, você pode usar uma função que tenha privilégios para criar uma tabela dinâmica. Para cenários em que um usuário só precisa consultar uma tabela dinâmica – por exemplo, um analista de dados – use uma função que tenha os seguintes privilégios:
Privilégio |
Objeto |
---|---|
USAGE |
Banco de dados e esquema que contém a tabela dinâmica. Warehouse utilizado para executar a consulta. |
SELECT |
A tabela dinâmica que está sendo consultada. |
Privilégios para alterar uma tabela dinâmica¶
Para alterar uma tabela dinâmica, você deve usar uma função que tenha o privilégio OWNERSHIP ou OPERATE nessa tabela dinâmica.
Se você tiver o privilégio OPERATE em uma tabela dinâmica, poderá fazer o seguinte com o comando ALTER DYNAMIC TABLE:
Suspender uma tabela dinâmica usando ALTER … SUSPEND.
Retomar uma tabela dinâmica usando ALTER … RESUME.
Atualizar uma tabela dinâmica usando ALTER … REFRESH.
Definir ou alterar o warehouse e/ou o meta de atraso usando ALTER … SET.
Se você tiver o privilégio OWNERSHIP em uma tabela dinâmica, poderá fazer o seguinte, além das operações listadas acima:
Defina ou desmarque um comentário usando ALTER … SET | UNSET COMMENT.
Renomeie uma tabela dinâmica usando ALTER … RENAME TO.
Troque uma tabela dinâmica por outra usando ALTER … SWAP WITH
Defina um novo parâmetro usando ALTER … SET
Especifique ou elimine as chaves de clustering. Consulte Ações de clustering (clusteringAction).
Altere as políticas de governança. Consulte Política de governança de dados e ações de tag (dataGovnPolicyTagAction).
Altere a otimização de pesquisa. Consulte Ações de otimização de pesquisa (searchOptimizationAction).
Privilégios para visualizar os metadados de uma tabela dinâmica¶
Para exibir metadados, você deve usar uma função que tenha privilégio MONITOR nessa tabela dinâmica.
Para cenários em que o usuário só precisa visualizar os metadados e a exibição Information Schema de uma tabela dinâmica (por exemplo, funções ocupadas por cientistas de dados), use uma função que tenha o privilégio MONITOR nessa tabela dinâmica. Embora o privilégio OPERATE conceda esse acesso, ele também inclui a capacidade de alterar tabelas dinâmicas, tornando MONITOR a opção mais adequada para cenários em que um usuário não precisa alterar uma tabela dinâmica.
Se você tiver o privilégio MONITOR em uma tabela dinâmica, poderá fazer o seguinte:
Usar o comando DESCRIBE DYNAMIC TABLE e a página de detalhes de tabelas dinâmicas Snowsight para visualizar os detalhes específicos de uma tabela dinâmica. Os campos a seguir ficarão ocultos se você tiver apenas o privilégio SELECT em uma tabela dinâmica:
text
,warehouse
,scheduling_state
,last_suspended_on
esuspend_reason_code
(somente UI).Usar o comando SHOW DYNAMIC TABLES para visualizar a quais tabelas dinâmicas você tem acesso.
Chame a função de tabela DYNAMIC_TABLE_GRAPH_HISTORY para exibir o histórico do gráficos.
Chame a função de tabela DYNAMIC_TABLE_REFRESH_HISTORY para exibir o histórico de atualizações.
Privilégios para descartar uma tabela dinâmica¶
Para descartar uma tabela dinâmica, você deve usar uma função que tenha o privilégio OWNERSHIP nessa tabela dinâmica.