Como compartilhar dados não estruturados com uma exibição não segura

Este tópico aborda brevemente como compartilhar arquivos de dados não estruturados usando uma exibição segura e Secure Data Sharing. Com o Secure Data Sharing, os provedores de dados podem compartilhar objetos selecionados em um banco de dados de uma conta Snowflake com consumidores de dados em outra conta Snowflake.

Para obter mais informações e exemplos adicionais, consulte Como trabalhar com compartilhamentos.

Etapa 1: Criar uma exibição segura

Primeiro, use o comando CREATE SECURE VIEW para criar uma exibição segura de dados não estruturados em um estágio. Uma exibição permite que o resultado de uma consulta seja acessado como uma tabela, e uma exibição segura é designada especificamente para privacidade de dados. Para obter mais informações, consulte Visão geral de exibições.

Você pode permitir que os consumidores de dados recuperem dados URLs com escopo ou pré-assinados da exibição segura. URLs com escopo fornecem melhor segurança, enquanto URLs pré-assinados podem ser acessados sem autorização ou autenticação. Para escolher o URL correto para o seu caso de uso, consulte Tipos de URLs disponíveis para acessar arquivos.

Nota

Snowflake não cria URLs com escopo ou pré-assinados até que um usuário em uma conta de consumidor consulte uma exibição segura. Esse comportamento de criação sob demanda ajuda você a gerenciar o tempo de vida de URLs pré-assinados. Para minimizar o risco de vazamento de URLs pré-assinados, você também pode definir um curto intervalo de tempo para o parâmetro EXPIRATION_TIME da função GET_PRESIGNED_URL.

Os exemplos a seguir criam exibições seguras que permitem que os consumidores de dados consultem URLs com escopo ou pré-assinadas para um conjunto específico de arquivos preparados. Ambas as exibições consultam a coluna RELATIVE_PATH em uma tabela de diretórios para obter a URL com escopo ou pré-assinada.

URL com escopo

Este exemplo chama a função BUILD_SCOPED_FILE_URL para criar uma exibição segura com URLs com escopo para um conjunto de arquivos preparados. O exemplo passa a coluna RELATIVE_PATH em uma tabela de diretório em um estágio chamado mystage para a função BUILD_SCOPED_FILE_URL:

CREATE OR REPLACE SECURE VIEW images_scoped_v AS
SELECT BUILD_SCOPED_FILE_URL(@mystage, relative_path) AS scoped_file_url
FROM DIRECTORY(@mystage);
Copy

Você também pode criar uma exibição segura a partir de um subconjunto de arquivos em um estágio para não precisar compartilhar o estágio inteiro. O exemplo a seguir cria uma exibição segura de imagens em um estágio onde o campo client_name é igual a abc:

CREATE OR REPLACE SECURE VIEW images_for_client_abc AS
SELECT build_scoped_file_url(@myStage, relative_path) AS scoped_file_url
FROM directory(@mystage) d join clients c on d.relative_path = c.relative_path
WHERE c.client_name = 'abc';
Copy

URL pré-assinada

Este exemplo chama a função GET_PRESIGNED_URL para obter URLs pré-assinados de um conjunto de arquivos preparados. O exemplo especifica 60 segundos para o parâmetro EXPIRATION_TIME para que URLspré-assinados só fiquem acessíveis por um minuto.

CREATE OR REPLACE SECURE VIEW images_presigned_v AS
SELECT GET_PRESIGNED_URL(@mystage, relative_path, 60) AS presigned_url
FROM DIRECTORY(@mystage);
Copy

Etapa 2: Criar um compartilhamento

Em seguida, crie um compartilhamento vazio e conceda privilégios de acesso para sua exibição segura ao compartilhamento. Isso adiciona o objeto de exibição segura ao compartilhamento.

O exemplo a seguir cria um compartilhamento com o comando CREATE SHARE e, em seguida, usa o comando GRANT <privilégio> … TO SHARE para conceder o privilégio SELECT para uma exibição segura do compartilhamento.

CREATE SHARE my_share;
GRANT SELECT ON my_secure_view TO SHARE my_share;
Copy

Etapa 3: Adicionar contas ao compartilhamento

Por fim, você deve fornecer acesso para contas de consumidor ao seu compartilhamento, adicionando as contas ao seu compartilhamento.

O exemplo a seguir usa o comando ALTER SHARE para adicionar uma conta chamada consumer_account_1 ao compartilhamento chamado my_share.

ALTER SHARE my_share ADD ACCOUNTS=consumer_account_1;
Copy

Depois de concluir esta etapa, a conta consumer_account_1 pode ver o compartilhamento e acessar os arquivos na exibição segura.