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";
Copy

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;
Copy

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;
Copy

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:

  1. 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;
    
    Copy
  2. Converta 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";
    
    Copy
  3. Opcionalmente, 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

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;
Copy

Alternativamente, você pode recriar a exibição segura como uma exibição:

CREATE OR REPLACE VIEW high_performance_view WITH COPY GRANTS;
Copy

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>' ]
Copy

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.