Solicitação de compartilhamento de dados com especificações do app¶
Este tópico descreve como configurar as especificações de um Snowflake Native App para solicitar permissão para compartilhar dados com provedores ou terceiros por meio de listagens. Isso permite casos de uso como relatórios de conformidade, compartilhamento de telemetria e pré-processamento de dados.
Fluxo de trabalho de especificação do app para compartilhamento de dados¶
A configuração de um app para compartilhar dados usando listagens segue este fluxo de trabalho geral:
Os provedores configuram a concessão automatizada de privilégios para o aplicativo. Isso permite que os consumidores concedam permissão a um app para criar compartilhamentos e listagens.
Nota
As especificações de app exigem que
manifest_version = 2seja definido no arquivo de manifesto.Os provedores adicionam os privilégios CREATE SHARE e CREATE LISTING ao arquivo de manifesto.
Os provedores adicionam instruções SQL ao script de configuração para criar os seguintes objetos, conforme necessário:
O script de configuração cria o compartilhamento e a listagem quando o app é instalado ou atualizado. A especificação do app pode ser criada durante a configuração ou em tempo de execução por meio de um procedimento armazenado.
Ao configurar o app, os consumidores revisam e aprovam as contas de destino e as configurações de preenchimento automático na listagem. As configurações de preenchimento automático são aplicáveis apenas ao compartilhamento entre regiões. Para mais informações sobre como os consumidores visualizam e aprovam especificações de aplicativos, consulte Aprovar conexões com recursos externos usando especificações de aplicativo.
Definição da especificação do app para compartilhamento de dados¶
Para uma especificação de app do tipo LISTING, sua definição contém as seguintes entradas:
TARGET_ACCOUNTS: uma lista separada por vírgulas de contas de destino com as quais compartilhar dados, entre aspas simples. Cada conta deve ser especificada no formato. ; por exemplo:'ProviderOrg.ProviderAccount,PartnerOrg.PartnerAccount'.LISTING: o identificador do objeto de listagem criado pelo app.AUTO_FULFILLMENT_REFRESH_SCHEDULE: Opcional. O cronograma de atualização para compartilhamento de dados entre regiões. Pode ser especificado como<num> MINUTEouUSING CRON <expression>.
Nota
O nome da listagem na especificação do app deve corresponder a uma listagem existente criada pelo app. Depois que isso for definido, o nome da listagem não poderá ser alterado.
Definição da versão do arquivo de manifesto¶
Para habilitar a concessão automatizada de privilégios para um app, defina a versão no início do arquivo de manifesto, conforme mostrado no exemplo a seguir:
manifest_version: 2
Criação de listagem externa¶
Para criar uma listagem externa anexada ao compartilhamento, adicione o comando CREATE LISTING ao script de configuração, como mostrado no seguinte exemplo:
CREATE EXTERNAL LISTING compliance_listing SHARE compliance_share AS $$ title: "Compliance Data Share" subtitle: "Regulatory compliance reporting data" description: "Share compliance and audit data with authorized accounts" listing_terms: type: "OFFLINE" $$ PUBLISH = FALSE REVIEW = FALSE;
Nota
Os apps só podem anexar compartilhamentos, e não pacotes de aplicativo, a uma listagem.
Os apps não podem adicionar diretamente contas de destino ou configurações de preenchimento automático à listagem.
O manifesto de listagem só pode incluir as seguintes propriedades: título, subtítulo, descrição e listing_terms.
Todas as novas listagens devem ser criadas em um estado não publicado, com PUBLISH e REVIEW definidos como FALSE.
O título e a descrição da listagem podem ser personalizados com base nas informações do consumidor, permitindo que os provedores distinguem as fontes de dados.
Criação de especificação do app para uma listagem¶
Para criar a especificação do app para uma listagem, siga este exemplo:
ALTER APPLICATION SET SPECIFICATION shareback_spec TYPE = LISTING LABEL = 'Compliance Data Sharing' DESCRIPTION = 'Share compliance data with provider for regulatory reporting' TARGET_ACCOUNTS = 'ProviderOrg.ProviderAccount,AuditorOrg.AuditorAccount' LISTING = compliance_listing AUTO_FULFILLMENT_REFRESH_SCHEDULE = '720 MINUTE';Este comando cria a especificação do app chamada
shareback_specque solicita permissão para compartilhar dados com as contas de destino especificadas.
Para compartilhamento entre regiões, o parâmetro
AUTO_FULFILLMENT_REFRESH_SCHEDULEé obrigatório. Você pode defini-lo como um dos seguintes valores:'<num> MINUTE': número de minutos, com um mínimo de 10e um máximo de 11.520 minutos ou oito dias
'USING CRON <expression> <time_zone>': Expressão cron com fuso horário
Nota
O app só deve criar a especificação do app depois que os objetos de listagem e compartilhamento existirem.
Cada listagem só pode ter uma especificação do app associada.
A atualização das contas de destino cria uma nova solicitação pendente de aprovação do consumidor.
Validação da configuração da listagem¶
Os apps podem validar se a listagem foi devidamente configurada após a aprovação executando os seguintes comandos:
-- Check if the app specification is approved:
SHOW APPROVED SPECIFICATIONS IN APPLICATION;
-- Validate the listing configuration:
DESC LISTING compliance_listing;
Fluxo de trabalho de aprovação do consumidor¶
A aprovação do consumidor de uma especificação do app LISTING aciona este fluxo de trabalho:
O Snowflake adiciona automaticamente as contas de destino à listagem.
Se especificado, o Snowflake configura o cronograma de atualização de preenchimento automático.
A listagem fica visível para as contas de destino.
Os dados anexados à listagem podem ser consultados pelas contas aprovadas.
A rejeição do consumidor de uma especificação do app LISTING aciona este fluxo de trabalho:
A listagem se torna não publicada, e as contas de destino existentes são removidas da listagem.
O preenchimento automático é desabilitado.
A listagem não fica mais visível para nenhuma conta de destino.
Práticas recomendadas para especificações de app LISTING¶
Ao implementar o compartilhamento de dados por meio da especificação do app, considere as seguintes práticas recomendadas:
Integridade do compartilhamento: o Snowflake não impede que os consumidores modifiquem os compartilhamentos criados por um aplicativo. Como resultado, o provedor é responsável pela implementação de medidas para proteger a integridade dos dados compartilhados subjacentes.
Tratamento de erros: implemente o tratamento de erros adequado para casos em que a especificação do app tenha sido recusada ou ainda não tenha sido aprovada.
Considerações entre regiões: o provedor do app é responsável por definir cronogramas de atualização que conciliem os requisitos de atualização de dados às considerações de custo. Os custos do preenchimento automático de listagem são cobrados do consumidor do app, mas a escolha do cronograma do provedor deve levar em conta os custos para minimizar gastos desnecessário para o consumidor do app.
Conformidade: documente claramente os dados que você está compartilhando e o motivo na descrição da especificação do app.
Uso de funções de retorno de chamada com especificações de app LISTING¶
Os apps podem usar retornos de chamada de ciclo de vida para responder quando os consumidores aprovam ou recusam especificações de listagem, adicionando o seguinte código ao arquivo de manifesto:
lifecycle_callbacks:
specification_action: callbacks.on_spec_update
No script de configuração, adicione o seguinte procedimento armazenado de retorno de chamada:
CREATE OR REPLACE PROCEDURE callbacks.on_spec_update (
name STRING,
status STRING,
payload STRING)
RETURNS STRING
LANGUAGE SQL
AS
$$
BEGIN
IF (name = 'shareback_spec' AND status = 'APPROVED') THEN
-- Start populating shared tables
CALL populate_compliance_data();
ELSEIF (name = 'shareback_spec' AND status = 'DECLINED') THEN
-- Clean up or notify provider
CALL cleanup_share_data();
END IF;
RETURN 'Processed specification update';
END;
$$;
O procedimento permite que o app reaja adequadamente às decisões do consumidor em relação à solicitação de compartilhamento de dados do app.
Limitações¶
Esta seção descreve as limitações ao usar especificações de app.
- Auditoria
O Snowflake não oferece auditoria interna para dados que um app compartilha de volta com o provedor. Se um consumidor tiver requisitos de conformidade ou regulatórios que incluam uma trilha de auditoria, ele deverá se alinhar diretamente com o provedor para implementar soluções de monitoramento próprias separadas.
- Compartilhamento de dentro do aplicativo
O Snowflake não recomenda o compartilhamento de dados com o provedor diretamente de dentro do aplicativo porque o preenchimento automático de listagem não é compatível com dados compartilhados dessa maneira.