Criação e configuração de 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 de consumidor, e realiza a manutenção contínua dos compartilhamentos.
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.
Considere criar uma conta não Business Critical para armazenar dados menos confidenciais e depois compartilhar esses dados com contas não Business Critical.
Se você estiver usando o 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. Mais especificamente, conceder acesso à conta do consumidor pode exigir que o Snowflake acesse o serviço de gerenciamento de chaves na plataforma de nuvem que hospeda sua conta Snowflake.
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. A Snowflake não assume nenhuma responsabilidade por dados compartilhados indevidamente.
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 Compartilhar 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 de vários bancos de dados.
Um compartilhamento fica disponível imediatamente para um consumidor quando você adiciona a conta desse consumidor ao compartilhamento.
Linhas novas e modificadas ficam disponíveis imediatamente para consumidores que criaram um banco de dados a partir do compartilhamento. Isso só acontece quando o consumidor já tem acesso.
Um novo objeto criado ou recriado em um banco de dados concedido a um compartilhamento não está automaticamente disponível aos consumidores. Por exemplo, se você descartar e depois recriar um objeto, ele ainda será considerado um novo objeto, mesmo que o nome seja o mesmo. Para tornar um novo objeto disponível aos consumidores, você deve usar o comando GRANT <privilégio> … TO SHARE para adicionar explicitamente o objeto ao compartilhamento.
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).
Uso de SQL com compartilhamentos de dados¶
A preparação de objetos para compartilhamento pode ser realizada usando qualquer função. Outras tarefas de compartilhamento de dados, como criar um compartilhamento ou adicionar contas de consumidor ao compartilhamento, exigem a função ACCOUNTADMIN ou uma função com o privilégio global CREATE SHARE. Para obter mais detalhes sobre o privilégio CREATE SHARE, consulte Permitir que funções não ACCOUNTADMIN executem tarefas de compartilhamento de dados.
Se você quiser usar DDL para criar e gerenciar funções de banco de dados, use os comandos listados aqui:
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.
Se quiser usar DDL para visualizar, conceder ou revogar acesso a objetos de banco de dados em um compartilhamento, use os comandos listados aqui:
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 Apache Iceberg™
Exibições seguras
Exibições materializadas seguras
Funções definidas pelo usuário seguras (UDFs)
Modelos sem código (como CORTEX_FINETUNED) - Visualização
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¶
Se você planeja compartilhar um banco de dados, pouca ou nenhuma preparação é necessária.
Se você planeja compartilhar tabelas inteiras, não é necessária nenhuma preparação.
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. O parâmetro de sessão SIMULATED_DATA_SHARING_CONSUMER só oferece suporte a exibições seguras e exibições materializadas seguras, mas não é compatível com 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 a conta de consumidor
xy12345
:ALTER SESSION SET SIMULATED_DATA_SHARING_CONSUMER = xy12345;
Copy
Para um exemplo detalhado, consulte Uso dos 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
As operações listadas aqui não são compatíveis:
Não há suporte para a criação de fluxos somente para anexação em compartilhamentos de objetos de origem secundários.
Modificar um fluxo em outra conta não é compatível.
Você pode permitir que os consumidores criem fluxos em tabelas compartilhadas ou exibições seguras. Antes de fazer isso, você precisa estender o período de retenção de dados para as tabelas e também precisa habilitar o rastreamento de alterações nas tabelas compartilhadas ou nas tabelas subjacentes para uma exibição compartilhada. Você define os parâmetros CHANGE_TRACKING e DATA_RETENTION_TIME_IN_DAYS ao criar ou alterar uma tabela, usando CREATE TABLE ou ALTER TABLE.
- 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.
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.
Uso do Snowsight para criar um compartilhamento¶
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.
Se você estiver criando um compartilhamento no qual precisa adicionar uma exibição segura que faça referência a objetos em outros bancos de dados, você deve criar seu compartilhamento usando SQL. Para obter mais informações, consulte Compartilhamento de dados de vários bancos de dados.
Para criar um compartilhamento direto:
Faça login no 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 localizador de conta. A inserção de um localizador 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 para criar um compartilhamento¶
Na página Shares em Classic Console, selecione a guia Outbound.
Uso de SQL para criar um compartilhamento¶
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 a conta de provedor prvdr1
está compartilhando os dados com as duas contas de consumidor xy12345
e yz23456
.
Uso de DDL para criar e gerenciar ações¶
Para criar e gerenciar compartilhamentos, você usa os comandos DDL listados aqui:
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
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 Tri-Secret Secure, o Snowflake trata o acesso aos dados de contas de consumidor como se o acesso ocorresse a partir de sua própria conta.
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.
Importante
Se você planeja compartilhar dados com segurança com consumidores em diferentes regiões ou plataformas de nuvem, observe que a replicação de um banco de dados primário é bloqueada se o banco de dados contiver alguns tipos de objetos. Para obter uma lista completa de objetos que causam falhas nas operações de atualização, consulte Limitações atuais da replicação.
Uso do Snowsight para adicionar objetos a um compartilhamento¶
Para modificar os dados associados a um compartilhamento usando Snowsight:
Faça login no 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.
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.
Não é possível adicionar uma exibição segura que faça referência a objetos em outros bancos de dados em um compartilhamento usando a interface da Web. Você deve criar seu compartilhamento usando SQL. Consulte Compartilhamento de dados de vários bancos de dados.
Uso do console clássico para adicionar objetos a um compartilhamento¶
Na página Shares em Classic Console, selecione a guia Outbound.
Uso de SQL para adicionar objetos a um compartilhamento¶
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.
Uso do Snowsight para remover objetos de um compartilhamento¶
Para remover os dados associados a um compartilhamento usando Snowsight:
Faça login no 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 para remover objetos de um compartilhamento¶
Na página Shares em Classic Console, selecione a guia Outbound.
Uso de SQL para remover objetos de um compartilhamento¶
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.
Uso do Snowsight para adicionar contas a um compartilhamento¶
Para adicionar consumidores a um compartilhamento existente usando Snowsight:
Faça login no 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 localizadores de conta. A inserção de parte de um localizador de conta lista todas as contas com correspondência.
Selecione Add.
Uso do console clássico para adicionar contas a um compartilhamento¶
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 contas a um compartilhamento¶
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.
Uso do Snowsight para remover contas de um compartilhamento¶
Para remover consumidores de um compartilhamento existente usando Snowsight:
Faça login no 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 para remover contas de um compartilhamento¶
Na página Shares em Classic Console, selecione a guia Outbound.
Uso de SQL para remover contas de um compartilhamento¶
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¶
Você pode descartar (remover) 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.
Uso do Snowsight para descartar um compartilhamento¶
Para descartar um compartilhamento usando Snowsight:
Faça login no 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 para descartar um compartilhamento¶
Na página Shares em Classic Console, selecione a guia Outbound.
Uso de SQL para descartar um compartilhamento¶
Descarte um compartilhamento usando o comando DROP SHARE.
Visualização de consumidores que criaram bancos de dados a partir de compartilhamentos¶
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 | |------------+-------+------------+---------| +------------+-------+------------+---------+
Visualização de compartilhamentos e dados¶
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 visualizar os dados compartilhados por sua conta, faça o seguinte:
Faça login no 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.
Gerenciamento de compartilhamentos e dados¶
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.