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

Alteração de uma listagem organizacional

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

Este exemplo compartilha a listagem de apenas uma conta. Ele também 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