Tutorial: como criar e gerenciar uma listagem organizacional

As listas organizacionais no Snowflake permitem que você compartilhe produtos de dados com segurança dentro de sua organização, facilitando a descoberta e o uso de recursos confiáveis pelas equipes internas. Como provedor, é possível criar listagens que centralizam o acesso a conjuntos de dados, Native Apps e outros recursos, simplificando o compartilhamento de dados e a colaboração entre suas equipes. Este guia o ajudará a entender as etapas e os requisitos para criar e gerenciar listagens organizacionais de forma eficaz, garantindo que seus produtos de dados sejam acessíveis e, ao mesmo tempo, mantendo o controle sobre quem pode vê-los e usá-los.

Antes de começar, verifique se você tem os privilégios necessários para criar e gerenciar listagens organizacionais.

Neste tutorial, criamos uma função personalizada (ORG_LISTING_PROVIDER) para gerenciar as listagens em nome da organização.

Criação de uma função para gerenciar listagens organizacionais

Alterne para a função ORGADMIN (ou ACCOUNTADMIN) para criar uma nova função e adicionar um ou mais usuários. Estes usuários serão os administradores das listagens organizacionais. Em seguida, GRANT à nova função os privilégios necessários para criar e compartilhar listagens organizacionais.

USE ROLE ACCOUNTADMIN;
CREATE ROLE ORG_LISTING_PROVIDER;
GRANT ROLE ORG_LISTING_PROVIDER TO USER <user_name>;
GRANT CREATE SHARE ON ACCOUNT TO ROLE ORG_LISTING_PROVIDER;
Copy

Criação de um compartilhamento e concessão de uso a ele

Alterne para a função personalizada ORG_LISTING_PROVIDER que você acabou de criar para criar um compartilhamento e conceder uso ao compartilhamento.

USE ROLE ORG_LISTING_PROVIDER;
CREATE OR REPLACE DATABASE DEVORGDB;
USE DATABASE DEVORGDB;
CREATE SHARE ORG_SHARE SECURE_OBJECTS_ONLY=FALSE;
GRANT USAGE ON DATABASE DEVORGDB TO SHARE ORG_SHARE;
GRANT USAGE ON SCHEMA PUBLIC TO SHARE ORG_SHARE;
CREATE OR REPLACE TABLE TUTORIAL_TABLE ( item_id INT, item_name STRING );
GRANT SELECT ON TABLE DEVORGDB.PUBLIC.TUTORIAL_TABLE TO SHARE ORG_SHARE;
INSERT INTO TUTORIAL_TABLE (item_id, item_name) VALUES (1,'Tutorial table');
Copy

Criação de uma listagem organizacional

Crie uma listagem organizacional a partir do compartilhamento com os atributos necessários inclusos em YAML (inseridos entre delimitadores $$).

Esse exemplo compartilha a listagem com todas as contas da organização:

USE ROLE ORG_LISTING_PROVIDER;
CREATE ORGANIZATION LISTING ORG_LISTING
SHARE ORG_SHARE AS
$$
title : "My title"
organization_profile: INTERNAL
organization_targets:
    access:
    - all_accounts : true 
locations:
  access_regions:
  - name: "ALL"
auto_fulfillment:
  refresh_type: "SUB_DATABASE"
  refresh_schedule: "10 MINUTE"
$$;
Copy

Para obter uma lista completa de todos os campos e valores de uma listagem de organizações, consulte Referência do manifesto da listagem da organização.

Alteração de uma listagem organizacional

Altere as listagens organizacionais, incluindo quaisquer alterações ou atributos adicionais no YAML.

Cuidado

Ao alterar uma listagem organizacional, você deve incluir todos os atributos do manifesto da listagem original. A não inclusão de todos os atributos pode causar erros ou a remoção inesperada de atributos existentes do manifesto de listagem. A Snowflake recomenda capturar o manifesto de listagem existente com o comando DESCRIBE LISTING e, em seguida, usar os resultados como entrada no comando ALTER LISTING.

Esse exemplo compartilha a listagem com uma única conta e adiciona uma descrição à listagem:

USE ROLE ORG_LISTING_PROVIDER;
ALTER LISTING ORG_LISTING
AS
$$
title : "My title"
organization_profile: INTERNAL
organization_targets:
    access:
    - all_accounts : false 
locations:
  access_regions:
  - name: "ALL"
auto_fulfillment:
  refresh_type: "SUB_DATABASE"
  refresh_schedule: "10 MINUTE"
$$;
Copy

Veja uma lista de listagens organizacionais

Para visualizar as listagens organizacionais, execute o seguinte comando:

SHOW LISTINGS;
DESCRIBE LISTING ORG_LISTING;
Copy

(Opcional) Como adicionar preenchimento automático para listagens organizacionais

Para ativar o preenchimento automático para suas listagens organizacionais, execute os seguintes comandos:

Importante

Antes de executar o comando para ativar o preenchimento automático, verifique se ele já está ativado e anote as configurações atuais. Se já estiver ativado, você não precisa executar o comando.

USE ROLE ACCOUNTADMIN;
GRANT MANAGE LISTING AUTO FULFILLMENT ON ACCOUNT TO ROLE ORG_LISTING_PROVIDER;

USE ROLE ORG_LISTING_PROVIDER;
SHOW ORGANIZATION ACCOUNTS;
SELECT SYSTEM$IS_GLOBAL_DATA_SHARING_ENABLED_FOR_ACCOUNT('<ORGACCOUNT>');

CALL SYSTEM$ENABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT('<ORGACCOUNT>');
Copy

Limpeza após o tutorial

Para eliminar quaisquer objetos indesejados que você tenha criado durante este tutorial, execute um ou mais dos seguintes comandos, conforme necessário:

Importante

Se o preenchimento automático tiver sido ativado quando você executou a última etapa, DO NOT desative-o ao fazer a limpeza após a consulta. Se fizer isso, você interromperá o preenchimento automático de sua conta!

DROP LISTING <organizational_listing_name>;
DROP SHARE org_listing1_share1;
DROP DATABASE org_listing_db1;
--CALL SYSTEM$DISABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT('ORGACCOUNT');
DROP ROLE ORG_LISTING_PROVIDER;
Copy