Compartilhamento de dados em exibições não seguras¶
Para aproveitar ao máximo os ganhos de desempenho das otimizações de consulta nas exibições que você compartilha, você pode criar um compartilhamento que permite compartilhar exibições não seguras com outras contas.
Nota
Sempre que possível, use exibições seguras para reforçar a segurança dos seus dados. Consulte Uso dos objetos seguros para controlar o acesso aos dados.
Você só pode adicionar exibições não seguras a compartilhamentos que foram explicitamente configurados para permitir objetos não seguros. Você não pode compartilhar outros objetos não seguros, como funções não seguras. Consulte Limitações de compartilhamento de exibições não seguras.
Criar um compartilhamento que permita objetos não seguros¶
Para compartilhar exibições não seguras, crie um compartilhamento que permita objetos não seguros.
Por exemplo, execute o seguinte:
CREATE OR REPLACE SHARE allow_non_secure_views
SECURE_OBJECTS_ONLY=FALSE
COMMENT="Share views that require query optimization";
Nota
Para a sintaxe completa, consulte Sintaxe para compartilhar exibições não seguras neste tópico.
Depois de criar um compartilhamento que permite compartilhar exibições, use o comando GRANT <privilégio> … TO SHARE para conceder uma exibição a um compartilhamento. Por exemplo, para conceder uma exibição nomeada non_secure_view
ao compartilhamento, execute o seguinte:
GRANT SELECT ON VIEW non_secure_view TO SHARE allow_non_secure_views;
Como alternativa, você pode conceder o privilégio SELECT na exibição a uma função de banco de dados e, em seguida, conceder essa função de banco de dados ao compartilhamento. Por exemplo, para conceder privilégios SELECT na exibição non_secure_view
à função de banco de dados performance_engineer
e, em seguida, conceder a função ao compartilhamento, execute o seguinte:
GRANT SELECT ON VIEW non_secure_view TO DATABASE ROLE performance_engineer;
GRANT DATABASE ROLE performance_engineer TO SHARE allow_non_secure_views;
Converter um compartilhamento existente para permitir o compartilhamento de exibições não seguras¶
Você pode converter um compartilhamento existente com exibições seguras em um compartilhamento que aceite o compartilhamento de exibições não seguras.
Por exemplo, para converter um compartilhamento existente secure_views_only
em um que aceite o compartilhamento de exibições não seguras, faça o seguinte:
Use o comando SHOW GRANTS para determinar quais objetos são concedidos ao compartilhamento e quais contas têm acesso ao compartilhamento, respectivamente:
SHOW GRANTS TO SHARE secure_views_only; SHOW GRANTS OF SHARE secure_views_only;
CopyConverta o compartilhamento existente em um que permita compartilhar exibições:
ALTER SHARE secure_views_only SET SECURE_OBJECTS_ONLY = FALSE, COMMENT = "Convert to allow sharing non-secure views that require query optimization";
CopyOpcionalmente, converta uma exibição segura existente em uma exibição. Nesse exemplo, altere
secure_view2
para uma exibição não segura:ALTER VIEW secure_view2 UNSET SECURE;
Copy
Para obter mais detalhes, consulte Converter uma exibição segura de um compartilhamento em uma exibição não segura.
Converter uma exibição segura de um compartilhamento em uma exibição não segura¶
Se você quiser converter uma exibição segura existente de uma exibição, poderá fazer isso antes ou depois de conceder a exibição a um compartilhamento.
Para converter uma exibição segura existente de um compartilhamento em uma exibição, o seguinte deve ser verdadeiro:
A exibição segura deve ser concedida somente a compartilhamentos configurados para permitir o compartilhamento de objetos não seguros.
A exibição segura não pode ser concedida a:
Funções de banco de dados concedidas a compartilhamentos que não permitem o compartilhamento de objetos não seguros.
Compartilhamentos que não permitem o compartilhamento de objetos não seguros.
Por exemplo, para uma exibição segura existente chamada high_performance_view
, remova a configuração da propriedade SECURE:
ALTER VIEW high_performance_view UNSET SECURE;
Alternativamente, você pode recriar a exibição segura como uma exibição:
CREATE OR REPLACE VIEW high_performance_view WITH COPY GRANTS;
Limitações de compartilhamento de exibições não seguras¶
Se você planeja compartilhar exibições, considere o seguinte:
Depois de criar um compartilhamento com a propriedade SECURE_OBJECTS_ONLY definida como FALSE, você não poderá remover a configuração dessa propriedade ou configurar a propriedade como TRUE.
Você só pode compartilhar exibições não seguras. Outros objetos não seguros, como funções, não podem ser compartilhados.
Sintaxe para compartilhar exibições não seguras¶
CREATE [ OR REPLACE ] SHARE <name>
[ SECURE_OBJECTS_ONLY = <boolean> ]
[ COMMENT = '<string_literal>' ]
Parâmetros obrigatórios¶
name
Especifica o identificador da ação; deve ser único para a conta na qual a ação é criada.
Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas. Por exemplo,
"My object"
. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.Para obter mais informações sobre os requisitos de identificador, consulte Requisitos para identificadores.
Parâmetros opcionais¶
SECURE_OBJECTS_ONLY = boolean
Especifica se permite a concessão somente de objetos seguros ou também permite a concessão de objetos não seguros ao compartilhamento.
Padrão: true (verdadeiro)
COMMENT = 'string_literal'
Especifica um comentário para o compartilhamento.
Padrão: sem valor
Requisitos de controle de acesso¶
Uma função usada para executar este comando SQL deve ter os seguintes privilégios no mínimo:
Privilégio |
Objeto |
Notas |
---|---|---|
CREATE SHARE |
Conta |
Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. |
Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.
Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.
Para obter mais informações sobre os requisitos de controle de acesso para o Snowflake Secure Data Sharing especificamente, consulte Permitir que funções não ACCOUNTADMIN executem tarefas de compartilhamento de dados.
Notas de uso¶
Você não pode ver o valor da propriedade SECURE_OBJECTS_ONLY quando executa SHOW SHARES. Use a propriedade COMMENT para anotar o valor da propriedade SECURE_OBJECTS_ONLY.
As notas existentes para CREATE SHARE também se aplicam.
Exemplos¶
Para ver um exemplo de como criar um compartilhamento com exibições não seguras, consulte Criar um compartilhamento que permita objetos não seguros.
Para um exemplo usando ALTER SHARE, consulte Converter um compartilhamento existente para permitir o compartilhamento de exibições não seguras.