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:
Você pode compartilhar conteúdo com um Virtual Private Snowflake (VPS) usando uma listagem se o cliente VPS tiver ativado o preenchimento automático. Consulte Suporte ao preenchimento automático no Virtual Private Snowflake para obter mais detalhes. O compartilhamento de e para VPS não é compatível com compartilhamento direto.
As edições Standard e Enterprise Edition oferecem suporte ao Secure Data Sharing com as considerações listadas em Uso e considerações gerais sobre o Data Sharing (neste tópico).
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.
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 concedido a 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 não está acessível aos consumidores do compartilhamento 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:
DESCRIBE SHARE — descreve todos os objetos em um compartilhamento
SHOW SHARES — lista todos os compartilhamentos, assim como as contas de consumidor especificadas para cada compartilhamento
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:
SHOW GRANTS TO SHARE … — lista todos os privilégios de objeto que foram concedidos a um compartilhamento
SHOW GRANTS OF SHARE … — lista todas as contas para o compartilhamento e indica as contas que estão usando o compartilhamento
Preparação para criar um compartilhamento¶
Antes de criar um compartilhamento, o Snowflake recomenda identificar os objetos Snowflake que você planeja compartilhar:
Bancos de dados
Tabelas
Tabelas dinâmicas
Tabelas externas
Tabelas Iceberg
Exibições seguras
Exibições materializadas seguras
Funções definidas pelo usuário seguras (UDFs)
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.
No entanto, 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;
CopyCrie 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;
CopyUse 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:
Comando: SHOW TAGS
Funções:
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:
Snowsight.
A exibição TAG_REFERENCES do Account Usage.
A função de tabela TAG_REFERENCES_WITH_LINEAGE do Account Usage.
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:
Entre em Snowsight.
Selecione Data Products » Private Sharing.
Selecione Share » Create a Direct Share. A caixa de diálogo Share Data é aberta.
Na caixa de diálogo Compartilhar dados, selecione + Select Data e depois:
Selecione um banco de dados de origem.
Selecione um objeto de origem ou objetos do banco de dados de origem.
Opcionalmente, atualize o Secure Share Identifier criado para seu compartilhamento.
Opcionalmente, insira uma Description.
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.
Selecione Create Share.
Se você quiser converter um compartilhamento direto com consumidores ativos em uma listagem, consulte Conversão de um compartilhamento direto em uma listagem.
Uso do console clássico¶
Na página Shares em Classic Console, selecione a guia Outbound.
Uso de SQL¶
Para criar um compartilhamento usando SQL:
Use o comando CREATE SHARE para criar um compartilhamento vazio.
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.
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 o banco de dados contiver alguns objetos, como tabelas externas ou Iceberg. Para obter uma lista completa de objetos que causam falhas nas operações de atualização, consulte Limitações atuais da replicação.
Para contornar a limitação de tabelas externas e Iceberg, você pode ativar o pacote 2024_02 para ignorar essas tabelas durante as operações de atualização. Para obter mais informações, consulte Replicação: ignorar tabelas externas e Iceberg durante a operação de atualização (pendente).
Como usar o Snowsight¶
Para modificar os dados associados a um compartilhamento usando Snowsight:
Entre em Snowsight.
Selecione Data Products » Private Sharing.
Selecione a guia Shared by Your Account.
Localize e selecione o compartilhamento que deseja modificar.
Na seção Data, selecione Edit.
Selecione os dados que você deseja adicionar.
Selecione Done.
Uso do console clássico¶
Na página Shares 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:
Entre em Snowsight.
Selecione Data Products » Private Sharing.
Selecione a guia Shared by Your Account.
Localize e selecione o compartilhamento que deseja modificar.
Na seção Data, selecione Edit.
Selecione os dados no compartilhamento e desmarque as caixas de seleção dos dados que você deseja remover do compartilhamento.
Selecione Done.
Uso do console clássico¶
Na página Shares 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:
Entre em Snowsight.
Selecione Data Products » Private Sharing.
Selecione a guia Shared by Your Account.
Localize o compartilhamento que você deseja modificar.
Na seção Shared With, selecione Add Consumers.
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.
Selecione Add.
Uso do console clássico¶
Na página Shares 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:
Entre em Snowsight.
Selecione Data Products » Private Sharing.
Selecione a guia Shared by Your Account.
Localize e selecione o compartilhamento que deseja modificar.
Na seção Shared With, selecione … » Remove.
Na caixa de diálogo de confirmação, selecione Remove.
Uso do console clássico¶
Na página Shares 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:
Entre em Snowsight.
Selecione Data Products » Private Sharing.
Selecione a guia Shared by Your Account.
Localize e selecione o compartilhamento que deseja descartar.
Selecione … » Drop.
Na caixa de diálogo de confirmação, selecione Drop.
Uso do console clássico¶
Na página Shares 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
esales_s2
foram disponibilizados para as contasxy12345
eyz23456
pelo proprietário da contaSNOW.PRVDR1
.A conta
xy12345
criou um banco de dados a partir do compartilhamentoprvdr1.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:
Entre em Snowsight.
Selecione Data Products » Private Sharing.
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.