Como trabalhar com compartilhamentos

Este tópico descreve as tarefas associadas a uma conta de provedor de dados que cria e configura compartilhamentos, compartilhando os compartilhamentos com outras contas (ou seja, consumidor) e realiza a manutenção contínua dos compartilhamentos.

Exceto para preparar os objetos para compartilhamento, que pode ser feito usando qualquer função, você deve usar a função ACCOUNTADMIN ou uma função com o privilégio global CREATE SHARE para realizar estas tarefas. Para obter mais detalhes sobre o privilégio CREATE SHARE, consulte Habilitação de funções diferentes de ACCOUNTADMIN para executar tarefas de compartilhamento de dados.

Neste tópico:

Data Sharing e contas Business Critical

Se você tiver uma conta Business Critical, observe as seguintes condições para compartilhar dados com outras contas (ou seja, consumidor):

Provedor

Consumidor

Com suporte

Habilitado

Notas

Business Critical (com HIPAA e HITRUST)

a

Business Critical (com HIPAA e HITRUST)

Ambas as contas HIPAA devem ter um BAA assinado com a outra.

Business Critical (com HIPAA e HITRUST)

a

Todas as outras edições

Para obter mais informações, consulte Habilitação do compartilhamento de uma conta Business Critical para outro tipo de conta.

Business Critical

a

Business Critical ou Business Critical (com HIPAA e HITRUST)

Business Critical

a

Todas as outras edições

Para obter mais informações, consulte Habilitação do compartilhamento de uma conta Business Critical para outro tipo de conta.

Para todas as outras edições do Snowflake:

Atenção

O Snowflake não é responsável por garantir que as contas HIPAA (e HITRUST) que participam de compartilhamento de dados tenham um BAA assinado entre si; isto fica a critério das contas que estão compartilhando dados. Não ter um BAA assinado pode afetar a conformidade HIPAA (e HITRUST) de ambas as contas, especialmente a conta do provedor.

Se você tiver uma conta Business Critical, considere o seguinte para manter o nível esperado de proteção de dados antes de solicitar que o Snowflake habilite o Secure Data Sharing em contas diferentes de Business Critical:

  • Não compartilhe dados confidenciais com contas que não sejam Business Critical.

  • Pense em criar uma segunda conta, não Business Critical, onde você armazene dados menos confidenciais e compartilhe esses dados com contas não Business Critical.

  • Se você estiver usando Tri-Secret Secure com sua conta Business Critical e compartilhar dados com outras contas, o Snowflake trata o acesso aos dados dessas contas como se o acesso ocorresse a partir de sua própria conta. Especificamente, a concessão do acesso à conta de consumidor pode exigir que o Snowflake acesse seu AWS KMS.

Estas são apenas recomendações e não são aplicadas pelo Snowflake. A decisão de compartilhar dados fica sempre a critério do provedor de dados e o Snowflake não assume nenhuma responsabilidade por dados que sejam compartilhados de forma imprópria.

Uso e considerações gerais sobre o Data Sharing

Observe os seguintes detalhes importantes de uso para a criação e manutenção de compartilhamentos:

  • Você pode compartilhar dados entre regiões e plataformas de nuvem. Para obter mais informações, consulte Compartilhamento de dados de forma segura entre regiões e plataformas de nuvem.

  • Um compartilhamento pode incluir dados de múltiplos bancos de dados. Para obter mais informações, consulte Compartilhamento de dados a partir de diversos bancos de dados.

  • Por razões de segurança e privacidade de dados, apenas exibições seguras têm suporte em compartilhamentos neste momento. Se uma exibição padrão for adicionada a um compartilhamento, o Snowflake retorna um erro.

  • Não é recomendável criar exibições seguras em fluxos de seu banco de dados e depois compartilhar essas exibições com os consumidores. Este cenário exige a capacidade de modificar um fluxo em outra conta, o que não é uma operação com suporte e é, portanto, um antipadrão. Em vez disso, permita que os consumidores criem seus próprios fluxos nas tabelas e protejam as exibições que você compartilha. Para obter mais informações, consulte Fluxos em objetos compartilhados (neste tópico).

  • A adição de contas a um compartilhamento torna o compartilhamento imediatamente disponível para consumo pelas contas.

  • Se compartilhar tabelas do mesmo banco de dados através de compartilhamentos diferentes com a mesma conta de consumidor, quando o consumidor cria um banco de dados a partir de um dos compartilhamentos, todas as tabelas compartilhadas ficam visíveis no banco de dados importado. Para evitar que isso aconteça, crie um esquema separado para cada tabela que você deseja compartilhar.

  • Linhas novas e modificadas em tabelas de um compartilhamento (ou em tabelas referenciadas por uma exibição em um compartilhamento) estão disponíveis imediatamente para todos os consumidores que criaram um banco de dados a partir do compartilhamento. Tenha isto em mente ao atualizar estas tabelas.

  • Um novo objeto criado em um banco de dados em um compartilhamento não está automaticamente disponível para os consumidores.

    Para tornar o objeto disponível aos consumidores, você deve usar o comando GRANT <privilégio> … TO SHARE para adicionar explicitamente o objeto ao compartilhamento.

    Nota

    Isto também se aplica a objetos que foram descartados de um banco de dados e depois recriados com o mesmo nome no banco de dados; o objeto recriado é tratado como um novo objeto e, portanto, não é acessível até que o objeto tenha recebido explicitamente os privilégios necessários no compartilhamento.

  • Uma função de banco de dados compartilhada não oferece suporte a concessões futuras em objetos. Para obter mais detalhes, consulte GRANT DATABASE ROLE … TO SHARE.

DDL para compartilhamentos

Para apoiar a criação e o gerenciamento de compartilhamentos, o Snowflake fornece o seguinte conjunto de comandos DDL especiais:

Para oferecer suporte à criação e ao gerenciamento de funções de banco de dados, o Snowflake fornece o seguinte conjunto de comandos DDL especiais:

Além disso, os provedores podem visualizar, conceder ou revogar o acesso aos objetos do banco de dados em um compartilhamento utilizando o seguinte DDL de controle de acesso padrão:

Preparação para criar um compartilhamento

Antes de criar um compartilhamento, o Snowflake recomenda identificar os objetos Snowflake que você planeja compartilhar:

  • Banco de dados

  • Tabelas

  • Tabelas externas

  • Exibições seguras

  • Exibições materializadas seguras

  • UDFs seguros

Isto pode exigir algumas tarefas administrativas e de planejamento adicionais, particularmente se você decidir compartilhar apenas um subconjunto de dados em qualquer uma de suas tabelas.

Banco de dados e tabelas

Pouca ou nenhuma preparação é necessária para compartilhar um banco de dados. Da mesma forma, se você optar por compartilhar tabelas inteiras em um banco de dados, nenhuma preparação é necessária.

Entretanto, se você decidir filtrar os dados em uma tabela (ou conjunto de tabelas), seja com base em certas condições, seja por conta de consumidor, você precisará criar uma ou mais exibições seguras para a(s) tabela(s).

Objetos seguros (exibições, exibições materializadas e UDFs)

Para proporcionar um controle rigoroso do acesso aos dados em um banco de dados compartilhado, você precisa usar exibições seguras, exibições materializadas seguras e/ou UDFs seguras. Por exemplo, você pode optar por filtrar dados por data ou alguma outra condição, ou pode decidir usar um único compartilhamento para dividir dados compartilhados para diferentes contas de consumidor. Objetos seguros permitem que você determine o nível de granularidade que deseja aplicar aos seus dados, garantindo ao mesmo tempo que as tabelas base e a lógica comercial sejam protegidas contra exposição.

Os objetos seguros são definidos de forma semelhante aos objetos padrão, usando os comandos CREATE <objeto> ou ALTER <objeto> correspondentes. Entretanto, observe as seguintes informações importantes de uso:

  • O seguros que façam referência a tabelas por seus nomes totalmente qualificados (ou seja, <nome_bd>.<nome_esquema>.<nome_tabela>) podem ser incluídos em um compartilhamento; entretanto, você deve garantir que o nome do banco de dados referenciado corresponda ao banco de dados para o compartilhamento.

  • Não inclua objetos seguros que usem as funções CURRENT_USER ou CURRENT_ROLE em sua definição. Os valores contextuais retornados por estas funções não têm relevância em uma conta de consumidor e farão com que o objeto falhe quando consultado/usado.

  • Ao definir um objeto seguro para compartilhar com contas de consumidor, um passo adicional vital a ser executado é validar que o objeto está configurado corretamente para exibir somente os dados que você deseja exibir. Isto é particularmente importante se você deseja limitar o acesso aos dados com base na conta com a qual os dados são compartilhados.

    Para facilitar a realização desta validação, o Snowflake fornece o parâmetro de sessão SIMULATED_DATA_SHARING_CONSUMER.

    Neste momento, o parâmetro de sessão SIMULATED_DATA_SHARING_CONSUMER só oferece suporte para exibições seguras e exibições materializadas seguras, mas não suporta UDFs seguras. A definição deste parâmetro em uma sessão permite simular a consulta de uma exibição segura como um usuário em qualquer uma das contas de consumidor com as quais você planeja compartilhar a exibição.

    Por exemplo, para uma conta de consumidor chamada xy12345:

    ALTER SESSION SET SIMULATED_DATA_SHARING_CONSUMER = xy12345;
    
    Copy

Para um exemplo detalhado, consulte Uso de objetos seguros para controlar o acesso aos dados.

Fluxos em objetos compartilhados

Os consumidores de dados podem criar fluxos em seus próprios bancos de dados que registram as alterações de linguagem de manipulação de dados (DML) feitas nas tabelas ou exibições de origem.

Nota

Não há suporte para a criação de fluxos somente para anexação em compartilhamentos de objetos de origem secundários.

Habilitação dos consumidores de dados para criar fluxos de tabelas em tabelas compartilhadas

Para que os consumidores de dados possam criar fluxos em tabelas compartilhadas ou exibições seguras, habilite o rastreamento de alterações nas tabelas compartilhadas ou nas tabelas subjacentes para uma exibição compartilhada.

Além disso, o período de retenção de dados deve ser estendido para as tabelas.

Habilitar o rastreamento de alterações

Atualmente, quando o primeiro fluxo para uma tabela local é criado, um par de colunas ocultas é adicionado automaticamente à tabela e começa a armazenar metadados de rastreamento de alterações. Esta alteração não é possível para tabelas compartilhadas, porque um consumidor de um compartilhamento não pode modificar o banco de dados de origem. Em vez disso, para permitir o rastreamento de alterações para tabelas destinadas ao compartilhamento, execute ALTER TABLE … CHANGE_TRACKING = TRUE em cada uma das tabelas.

Estender o período de retenção de dados para a tabela

Quando um fluxo em uma tabela local não é consumido regularmente, o Snowflake estende temporariamente o período de retenção de dados para a tabela de origem para ajudar a evitar a desatualização.

Um fluxo em uma tabela compartilhada não estende o período de retenção de dados para a tabela. Da mesma forma, um fluxo em uma exibição compartilhada não estende o período de retenção de dados para as tabelas subjacentes. Para especificar manualmente um período mais longo de retenção de dados para qualquer tabela compartilhada, ou qualquer tabela subjacente para uma exibição compartilhada, defina o parâmetro DATA_RETENTION_TIME_IN_DAYS para a tabela.

Os parâmetros CHANGE_TRACKING e DATA_RETENTION_TIME_IN_DAYS podem ser definidos ao criar uma tabela (usando CREATE TABLE) ou mais tarde (usando ALTER TABLE).

Referências de tags compartilhadas

Um provedor de compartilhamento de dados pode definir uma tag em um objeto e compartilhar a tag e o objeto marcado com o consumidor do compartilhamento de dados. Além disso, as referências de tags do objeto compartilhado estão disponíveis para o consumidor. Compartilhar as referências de tag permite que o provedor compartilhe contexto adicional em relação ao objeto compartilhado, como a confidencialidade dos dados de uma tabela ou coluna com base no valor da cadeia de caracteres da tag.

O consumidor pode usar SQL para visualizar as atribuições de tags em objetos compartilhados e determinar as referências de tags dos objetos compartilhados. Ao visualizar as atribuições e referências de tags de objetos compartilhados, os administradores de dados na conta do consumidor podem fornecer uma avaliação mais abrangente de onde os dados se originam e como os dados estão sendo usados. Esses novos insights podem facilitar os requisitos de conformidade regulatória.

O provedor deve criar a tag no mesmo banco de dados dos objetos marcados e compartilhar esse banco de dados. Após o compartilhamento do banco de dados, se o provedor retirar uma tag de um objeto compartilhado, a alteração na atribuição da tag também ocorrerá na conta do consumidor. O consumidor não pode rastrear o objeto compartilhado usando a tag depois que ela for retirada. Ao retirar a tag, o provedor pode manter a discrição dos dados nos casos em que um objeto foi marcado inadvertidamente.

A linhagem de tags aplica-se a objetos marcados no banco de dados compartilhado. Por exemplo, se um provedor definir uma tag em um esquema no banco de dados compartilhado, os objetos e colunas desse esquema também serão marcados. No entanto, o consumidor não pode usar a função de tabela TAG_REFERENCES do Information Schema para determinar onde o provedor definiu inicialmente a tag. Snowflake oculta os valores na coluna LEVEL na saída da função de tabela para proteger o provedor de dados, não revelando onde a tag foi inicialmente definida.

Importante

Tags compartilhadas são somente leitura. O consumidor não pode definir uma tag compartilhada em um objeto de sua conta.

Opções de provedor

Para compartilhar uma tag, o provedor tem estas opções:

  • Use SQL para permitir que o compartilhamento acesse a tag e permitir que o consumidor visualize as atribuições da tag compartilhada nos objetos compartilhados.

    O provedor deve conceder o privilégio READ em cada tag para disponibilizá-la a um consumidor.

    GRANT READ ON TAG mydb.tags.tag1 TO SHARE my_share;
    
    GRANT USAGE ON DATABASE mydb TO SHARE my_share;
    GRANT USAGE ON SCHEMA mydb.tags TO SHARE my_share;
    
    Copy
  • Crie uma função de banco de dados, conceda o privilégio READ na tag à função de banco de dados e conceda a função de banco de dados ao compartilhamento. A função de banco de dados também precisa do privilégio USAGE no esquema que armazena a tag.

    GRANT READ ON TAG mydb.tags.tag1 TO DATABASE ROLE my_db_role;
    GRANT USAGE ON SCHEMA mydb.tags TO DATABASE ROLE my_db_role;
    GRANT DATABASE ROLE my_db_role TO SHARE my_share;
    
    Copy
Opções do consumidor

Para visualizar tags compartilhadas na conta do consumidor, o consumidor tem estas opções:

  • Use a função ACCOUNTADMIN. Os administradores de contas de consumidor podem visualizar as tags compartilhadas que o provedor disponibiliza.

  • Use uma função com IMPORTED PRIVILEGES. Uma função de conta que recebe ou herda uma função com IMPORTED PRIVILEGES no banco de dados criado a partir do compartilhamento pode visualizar a tag compartilhada que o provedor disponibiliza.

    GRANT IMPORTED PRIVILEGES ON DATABASE db_share TO ROLE db_share_role;
    
    Copy
  • Use uma função de banco de dados compartilhada. Se o provedor conceder o privilégio READ em uma tag à função de banco de dados e compartilhar a função de banco de dados, o consumidor poderá conceder a função de banco de dados compartilhada a uma função de conta em sua conta.

    GRANT DATABASE ROLE my_db_role TO ROLE consumer_analyst_role;
    
    Copy

Na conta do consumidor, você pode usar SQL para visualizar tags, referências de tags e objetos marcados que o provedor compartilha:

Atualmente, você não pode usar as seguintes opções na conta do consumidor para visualizar tags, referências de tags e objetos marcados que o provedor compartilha:

Criação de um compartilhamento

Você deve usar a função ACCOUNTADMIN ou uma função que tenha recebido o privilégio global CREATE SHARE para criar compartilhamentos.

Como usar o Snowsight

Há várias maneiras de compartilhar dados no Snowsight:

  • Fornecer uma listagem a consumidores específicos ou publicamente no Snowflake Marketplace usando Provider Studio. Consulte Criação e publicação de uma listagem.

  • Publique uma listagem em uma troca de dados

  • Crie um compartilhamento direto para compartilhar dados com contas de consumidores em sua região.

Para criar um compartilhamento direto para compartilhar dados com outras contas:

  1. Entre em Snowsight.

  2. Selecione Data » Private Sharing.

  3. Selecione Share » Create a Direct Share. A caixa de diálogo Share Data é aberta.

  4. Na caixa de diálogo Compartilhar dados, selecione + Select Data e depois:

    1. Selecione um banco de dados de origem.

    2. Selecione um objeto de origem ou objetos do banco de dados de origem.

    3. Opcionalmente, atualize o Secure Share Identifier criado para seu compartilhamento.

    4. Opcionalmente, insira uma Description.

    5. Na caixa de texto restante, insira um nome de conta. A inserção de um nome de conta parcial lista todas as contas que correspondem ao texto inserido. Repita conforme necessário para adicionar contas adicionais. Você só pode adicionar contas da mesma região ao compartilhamento.

    6. Selecione Create Share.

Uso do console clássico

Na página Shares Shares tab em Classic Console, selecione a guia Outbound.

Uso de SQL

Para criar um compartilhamento usando SQL:

  1. Use o comando CREATE SHARE para criar um compartilhamento vazio.

  2. Use o comando GRANT <privilégio> … TO SHARE para adicionar um banco de dados ao compartilhamento e depois conceder acesso seletivamente a objetos específicos do banco de dados (esquemas, tabelas e exibições seguras) para o compartilhamento.

  3. Use o comando ALTER SHARE para adicionar a uma ou mais contas o acesso ao compartilhamento.

Nota

As seguintes etapas assumem que uma conta de provedor chamada prvdr1 está compartilhando dados com duas contas de consumidor chamadas xy12345 e yz23456.

Etapa 1: criar o compartilhamento vazio

O exemplo seguinte cria um compartilhamento vazio chamado sales_s:

CREATE SHARE sales_s;
Copy

Etapa 2: conceder privilégios a um compartilhamento para um banco de dados e objetos

Adicione objetos (banco de dados, esquema, tabelas, exibições seguras etc.) ao compartilhamento. Você pode optar por adicionar privilégios nestes objetos a um compartilhamento por uma função de banco de dados ou conceder privilégios nos objetos diretamente ao compartilhamento. Para obter mais informações sobre estas opções, consulte Como compartilhar objetos de banco de dados.

Opção 1

O exemplo a seguir ilustra a criação de uma função de banco de dados, concedendo privilégios nos seguintes objetos à função de banco de dados e, em seguida, concedendo a função de banco de dados ao compartilhamento sales_s criado na etapa anterior:

  • sales_db (banco de dados)

  • aggregates_eula (esquema)

  • aggregate_1 (tabela)

CREATE DATABASE ROLE sales_db.dr1;

GRANT USAGE ON DATABASE sales_db TO DATABASE ROLE sales_db.dr1;

GRANT USAGE ON SCHEMA sales_db.aggregates_eula TO DATABASE ROLE sales_db.dr1;

GRANT SELECT ON TABLE sales_db.aggregates_eula.aggregate_1 TO DATABASE ROLE sales_db.dr1;

GRANT USAGE ON DATABASE sales_db TO SHARE sales_s;

GRANT DATABASE ROLE sales_db.dr1 TO SHARE sales_s;
Copy
Opção 2

Para incluir objetos no compartilhamento, conceda privilégios sobre cada objeto. Ao conceder privilégios, primeiro conceda o uso para qualquer objeto de contêiner antes de conceder o uso para do contêiner. Por exemplo, conceda o uso para um banco de dados antes de conceder o uso para qualquer esquema contido no banco de dados.

Nota

Realize esta tarefa antes de adicionar contas ao compartilhamento. A tentativa de adicionar uma conta antes de conceder o uso para um banco de dados resulta em um erro.

O exemplo a seguir ilustra a concessão de privilégios para os seguintes objetos ao compartilhamento sales_s criado na etapa anterior:

  • sales_db (banco de dados)

  • aggregates_eula (esquema)

  • aggregate_1 (tabela)

GRANT USAGE ON DATABASE sales_db TO SHARE sales_s;

GRANT USAGE ON SCHEMA sales_db.aggregates_eula TO SHARE sales_s;

GRANT SELECT ON TABLE sales_db.aggregates_eula.aggregate_1 TO SHARE sales_s;
Copy

Para confirmar o conteúdo do compartilhamento:

SHOW GRANTS TO SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
Copy

Isto garante que o compartilhamento seja configurado corretamente antes de torná-lo disponível para outras contas para consumo.

Etapa 3: Adicionar contas ao compartilhamento

Atenção

Se você tem uma conta Business Critical e está compartilhando dados com contas de consumidor:

  • O Snowflake suporta o compartilhamento de dados confidenciais com contas diferentes de Business Critical (desabilitado por padrão), mas não encoraja isso.

  • Para garantir o cumprimento das exigências HIPAA e HITRUST, o Snowflake não permite que contas HIPAA compartilhem dados com contas que não sejamHIPAA.

  • Se você estiver usando a proteção de dados Tri-Secret Secure, observe que o Snowflake trata o acesso aos dados de contas de consumidor como se o acesso ocorresse a partir de sua própria conta.

Para obter mais informações sobre estas recomendações e restrições, consulte Data Sharing e contas Business Critical.

O exemplo seguinte acrescenta duas contas ao compartilhamento sales_s:

ALTER SHARE sales_s ADD ACCOUNTS=xy12345, yz23456;
Copy

As contas xy12345 e yz23456 são agora capazes de ver o compartilhamento e criar um banco de dados a partir dele.

Nota

Ao adicionar contas a um compartilhamento, se as contas não existirem, o comando é concluído com sucesso, mas nenhuma atualização é feita no compartilhamento. Para garantir que o compartilhamento esteja devidamente atualizado, verifique se as contas existem e se você inseriu os nomes corretamente.

Use SHOW SHARES para confirmar o compartilhamento. A saída do comando lista o compartilhamento sales_s. A coluna kind indica que o compartilhamento é OUTBOUND, o que significa que ele compartilha um banco de dados com outras contas Snowflake. A coluna to lista todas as contas para as quais o compartilhamento foi disponibilizado:

SHOW SHARES;
Copy
+-------------------------------+----------+----------------------+---------------+-----------------------+------------------+--------------+----------------------------------------+---------------------+
| created_on                    | kind     | owner_account        | name          | database_name         | to               | owner        | comment                                | listing_global_name |
|-------------------------------+----------+----------------------+---------------+-----------------------+------------------+--------------+----------------------------------------|---------------------|
| 2017-07-09 19:18:09.821 -0700 | INBOUND  | SNOW.XY12345         | SALES_S2      | UPDATED_SALES_DB      |                  |              | Transformed and updated sales data     |                     |
| 2017-06-15 17:02:29.625 -0700 | OUTBOUND | SNOW.MY_TEST_ACCOUNT | SALES_S       | SALES_DB              | XY12345, YZ23456 | ACCOUNTADMIN |                                        |                     |
+-------------------------------+----------+----------------------+---------------+-----------------------+------------------+--------------+----------------------------------------+---------------------+

Manutenção de compartilhamentos

Você deve usar uma função com privilégio OWNERSHIP em um compartilhamento e o privilégio global CREATE SHARE para gerenciar compartilhamentos.

Adição de objetos a um compartilhamento

Você pode adicionar objetos a um compartilhamento existente a qualquer momento. Os objetos que você adiciona a um compartilhamento ficam imediatamente disponíveis para as contas de consumidor que criaram bancos de dados a partir do compartilhamento. Por exemplo, se você adicionar uma tabela a um compartilhamento, os usuários em contas de consumidor podem consultar os dados na tabela assim que a tabela for adicionada ao compartilhamento.

Nota

A interface da Web não suporta a adição ou remoção de tabelas externas, a proteção de exibições materializadas ou UDFs seguras para/de compartilhamentos. Todo o gerenciamento desses objetos em compartilhamentos deve ser feito usando SQL.

Importante

Se você planeja compartilhar dados com segurança com consumidores em diferentes regiões ou plataformas de nuvem, observe que, atualmente, a replicação de um banco de dados primário é bloqueada se houver uma ou mais tabelas externas no banco de dados.

Como usar o Snowsight

Para modificar os dados associados a um compartilhamento usando Snowsight:

  1. Entre em Snowsight.

  2. Selecione Data » Private Sharing.

  3. Selecione a guia Shared by Your Account.

  4. Localize e selecione o compartilhamento que deseja modificar.

  5. Na seção Data, selecione Edit.

  6. Selecione os dados que você deseja adicionar.

  7. Selecione Done.

Uso do console clássico

Na página Shares Shares tab em Classic Console, selecione a guia Outbound.

Uso de SQL

Use o comando GRANT <privilégio> … TO SHARE.

Nota

  • Se o esquema para o objeto já estiver no compartilhamento, basta adicionar o objeto.

  • Se o esquema para o objeto ainda não estiver no compartilhamento, é preciso primeiro adicionar o esquema e depois o objeto.

O exemplo seguinte acrescenta uma exibição segura chamada agg_secure no esquema aggregates_eula ao compartilhamento sales_s:

SHOW GRANTS TO SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+

GRANT SELECT ON VIEW sales_db.aggregates_eula.agg_secure TO SHARE sales_s;

SHOW GRANTS TO SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-17 12:33:15.310 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGG_SECURE  | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
Copy

Remoção de objetos de um compartilhamento

Você pode remover objetos de um compartilhamento existente a qualquer momento. Quaisquer objetos que você remova de um compartilhamento estão imediatamente indisponíveis para as contas de consumidor que criaram bancos de dados a partir do compartilhamento.

Por exemplo, se você remover uma tabela de um compartilhamento, os usuários em contas de consumidor não poderão mais consultar os dados da tabela assim que a tabela for removida do compartilhamento.

Nota

A interface da Web não suporta a adição ou remoção de tabelas externas, a proteção de exibições materializadas ou UDFs seguras para/de compartilhamentos. Todo o gerenciamento desses objetos em compartilhamentos deve ser feito usando SQL.

Como usar o Snowsight

Para remover os dados associados a um compartilhamento usando Snowsight:

  1. Entre em Snowsight.

  2. Selecione Data » Private Sharing.

  3. Selecione a guia Shared by Your Account.

  4. Localize e selecione o compartilhamento que deseja modificar.

  5. Na seção Data, selecione Edit.

  6. Selecione os dados no compartilhamento e desmarque as caixas de seleção dos dados que você deseja remover do compartilhamento.

  7. Selecione Done.

Uso do console clássico

Na página Shares Shares tab em Classic Console, selecione a guia Outbound.

Uso de SQL

Remova os objetos de um compartilhamento existente a qualquer momento usando o comando REVOKE <privilégio> … FROM SHARE.

O exemplo seguinte remove a exibição segura chamada agg_secure no esquema aggregates_eula do compartilhamento sales_s:

SHOW GRANTS TO SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-17 12:33:15.310 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGG_SECURE  | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+

REVOKE SELECT ON VIEW sales_db.aggregates_eula.agg_secure FROM SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
Copy

Adição de contas a um compartilhamento

Você pode adicionar contas a um compartilhamento existente a qualquer momento. Depois que uma conta é adicionada ao compartilhamento, ele fica imediatamente “visível” para a conta, e a conta pode criar um banco de dados a partir do compartilhamento e começar a consultar os objetos Snowflake no banco de dados.

Como usar o Snowsight

Para adicionar consumidores a um compartilhamento existente usando Snowsight:

  1. Entre em Snowsight.

  2. Selecione Data » Private Sharing.

  3. Selecione a guia Shared by Your Account.

  4. Localize o compartilhamento que você deseja modificar.

  5. Na seção Shared With, selecione Add Consumers.

  6. Para Share With Snowflake Accounts, insira um ou mais nomes de conta. A inserção de parte de um nome da conta lista todas as contas com correspondência.

  7. Selecione Add.

Uso do console clássico

Na página Shares Shares tab em Classic Console, selecione a guia Outbound.

Quando você adiciona contas, pode optar por adicionar contas completas ou de leitura. Você também pode optar por criar uma conta de leitor imediatamente e depois adicioná-la ao compartilhamento.

Uso de SQL

Para adicionar consumidores a um compartilhamento existente usando SQL, use o comando ALTER SHARE.

Remoção de contas de um compartilhamento

Você pode remover contas de um compartilhamento existente a qualquer momento. A remoção de uma conta de um compartilhamento invalida instantaneamente o banco de dados que ela criou a partir do compartilhamento. Todas as consultas e outras operações que os usuários da conta realizam no banco de dados não funcionarão mais.

Após remover uma conta de um compartilhamento, você pode adicioná-la novamente ao compartilhamento; no entanto, isto não restaura o banco de dados que ela criou anteriormente a partir do compartilhamento. Ela deve criar um novo banco de dados a partir do compartilhamento.

Nota

Antes de remover uma conta de um compartilhamento, considere o impacto subsequente que isso terá na conta. Como o banco de dados é imediatamente invalidado, todas as consultas e outras operações que os usuários (na conta) realizam no banco de dados deixarão de funcionar, o que pode ter um impacto significativo sobre as operações comerciais da conta.

Como usar o Snowsight

Para remover consumidores de um compartilhamento existente usando Snowsight:

  1. Entre em Snowsight.

  2. Selecione Data » Private Sharing.

  3. Selecione a guia Shared by Your Account.

  4. Localize e selecione o compartilhamento que deseja modificar.

  5. Na seção Shared With, selecione » Remove.

  6. Na caixa de diálogo de confirmação, selecione Remove.

Uso do console clássico

Na página Shares Shares tab em Classic Console, selecione a guia Outbound.

Uso de SQL

Remova contas de um compartilhamento existente usando o comando ALTER SHARE.

Você remove uma conta de um compartilhamento definindo uma nova lista de contas para o compartilhamento e deixando a conta desejada fora da lista.

Descarte de um compartilhamento usando SQL

Você pode descartar um compartilhamento a qualquer momento. Descartar um compartilhamento invalida instantaneamente todos os bancos de dados criados a partir do compartilhamento por contas de consumidor. Todas as consultas e outras operações realizadas nestes bancos de dados não funcionam mais.

Após descartar um compartilhamento, você pode recriá-la com o mesmo nome; no entanto, isto não restaura nenhum dos bancos de dados criados a partir do compartilhamento por contas de consumidor. O compartilhamento recriado é tratado como novo, e todas as contas de consumidor devem criar um novo banco de dados a partir do novo compartilhamento.

Nota

Antes de descartar um compartilhamento, considere o impacto subsequente que isso terá em todas as contas de consumidor que usam o compartilhamento.

Ao invés disso, considere remover objetos individuais do compartilhamento. Os objetos removidos podem ser adicionados de volta a um compartilhamento sem exigir nenhuma tarefa adicional por parte das contas de consumidor.

Como usar o Snowsight

Para descartar um compartilhamento usando Snowsight:

  1. Entre em Snowsight.

  2. Selecione Data » Private Sharing.

  3. Selecione a guia Shared by Your Account.

  4. Localize e selecione o compartilhamento que deseja descartar.

  5. Selecione » Drop.

  6. Na caixa de diálogo de confirmação, selecione Drop.

Uso do console clássico

Na página Shares Shares tab em Classic Console, selecione a guia Outbound.

Uso de SQL

Descarte um compartilhamento usando o comando DROP SHARE.

Visualização de consumidores que criaram bancos de dados a partir de compartilhamentos usando SQL

Para ver as contas que criaram bancos de dados a partir de um compartilhamento, use o comando SHOW GRANTS OF SHARE. A saída deste comando é diferente da lista de contas retornada por SHOW SHARES das seguintes maneiras:

  • SHOW SHARES lista todos os compartilhamentos que estão disponíveis para contas, assim como as contas que podem acessar cada compartilhamento.

  • SHOW GRANTS OF SHARE lista todas as contas que criaram um banco de dados a partir do compartilhamento. Se nenhuma conta criou um banco de dados a partir do compartilhamento, os resultados estão vazios.

O exemplo a seguir mostra:

  • Dois compartilhamentos, sales_s e sales_s2 foram disponibilizados para as contas xy12345 e yz23456 pelo proprietário da conta SNOW.PRVDR1.

  • A conta xy12345 criou um banco de dados a partir do compartilhamento prvdr1.sales_s.

  • Nenhuma conta criou bancos de dados a partir do compartilhamento sales_s2.

SHOW SHARES;
Copy
+-------------------------------+----------+----------------------+---------------+-----------------------+------------------+--------------+----------------------------------------+---------------------+
| created_on                    | kind     | owner_account        | name          | database_name         | to               | owner        | comment                                | listing_global_name |
|-------------------------------+----------+----------------------+---------------+-----------------------+------------------+--------------+----------------------------------------|---------------------|
| 2017-06-15 17:02:29.625 -0700 | OUTBOUND | SNOW.PRVDR1          | SALES_S       | SALES_DB              | XY12345, YZ23456 | ACCOUNTADMIN |                                        |
| 2017-06-15 17:02:29.625 -0700 | OUTBOUND | SNOW.PRVDR1          | SALES_S2      | SALES_DB              | XY12345, YZ23456 | ACCOUNTADMIN |                                        |                     |
+-------------------------------+----------+----------------------+---------------+-----------------------+------------------+--------------+----------------------------------------+---------------------+
SHOW GRANTS OF SHARE sales_s;
Copy
+-------------------------------+----------------+------------+----------+
| created_on                    | share          | granted_to | account  |
|-------------------------------+----------------+------------+----------|
| 2017-06-15 18:00:03.803 -0700 | PRVDR1.SALES_S | ACCOUNT    | XY12345  |
+-------------------------------+----------------+------------+----------+
SHOW GRANTS OF SHARE sales_s2;
Copy
+------------+-------+------------+---------+
| created_on | share | granted_to | account |
|------------+-------+------------+---------|
+------------+-------+------------+---------+

Exibição e gerenciamento dos dados compartilhados por você

Usando Snowsight, você pode ver os dados que foram compartilhados por sua conta usando uma listagem, um compartilhamento direto ou como parte de uma troca de dados.

Para ver os dados compartilhados por sua conta, faça o seguinte:

  1. Entre em Snowsight.

  2. Selecione Data » Private Sharing.

  3. Selecione a guia Shared by Your Account.

Nesta página, você pode fazer o seguinte:

  • Ver os compartilhamentos que você criou ou tem privilégios de acesso. Isso inclui informações como o banco de dados do compartilhamento, as contas de consumidor, se houver, adicionadas ao compartilhamento, a data de criação do compartilhamento e os objetos compartilhados.

  • Explore os compartilhamentos associados a listagens oferecidas especificamente para determinados consumidores ou disponíveis para qualquer consumidor no Snowflake Marketplace.

  • Acesse compartilhamentos que são compartilhados em trocas de dados privados.

Você pode usar os seguintes filtros para exibir de forma seletiva os dados compartilhados:

  • Filtrar por tipo com a lista suspensa All Types. Escolha exibir apenas compartilhamentos ou listagens seguros compartilhados em uma troca de dados. Alguns compartilhamentos seguros são compartilhamentos associados a listagens.

  • Filtrar por conta do consumidor ou troca de dados com a lista suspensa Shared With. Selecione um ou mais consumidores específicos ou trocas de dados para ver todos os compartilhamentos ou listagens associadas à sua seleção ou seleções.

Selecione um compartilhamento para administrar o compartilhamento, revogar o acesso para contas de consumidor individuais ou adicionar uma descrição ao compartilhamento. Para gerenciar compartilhamentos seguros oferecidos como listagens ou para gerenciar suas listagens no Snowflake Marketplace, use Provider Studio. Para obter mais informações, consulte Gerenciamento de listagens como um provedor.