Gerenciamento de usuários e acesso a salas limpas

Visão geral

This topic describes how a clean rooms account administrator manages user access to the clean rooms UI and API.

Clean rooms defines several application roles that permit access to the API and various subsections of the UI. Access to the clean rooms UI and API are granted separately. Typically, the account administrator creates a custom role, grants the desired application roles to allow fine-grained access to the UI and API, then grants the role to various users in that account.

This strategy uses the Snowflake role-based access control (RBAC) model to delegate privileges appropriately to clean room users and collaborators in their account. For more information about RBAC, see Visão geral do controle de acesso. To see which users were granted a specific role, run the following SQL command:

SHOW GRANTS OF ROLE <role_name>;
Copy

Dica

Este tópico usa os seguintes termos:

  • Usuários de sala limpa: Usuários que receberam acesso à UI ou à API de salas limpas na conta Snowflake.

  • Colaboradores de sala limpa: Consumidores convidados a ingressar em uma sala limpa pelo provedor da sala limpa. Um colaborador também é um usuário de sala limpa, ou seja, ele deve ter acesso à UI ou à API de salas limpas para poder aceitar um convite e usar a sala limpa.

Gerenciamento do acesso à UI de salas limpas

An administrator grants access to the clean rooms UI in a Snowflake account by granting the appropriate roles, either directly or indirectly. The administrator should also assign a default warehouse and grant USAGE privilege on it to UI users.

As seguintes funções concedem permissão para gerenciar ou acessar a UI de salas limpas:

  • ACCOUNTADMIN: função usada para instalar ou desinstalar o ambiente de salas limpas. Essa função também permite o acesso à página Snowflake Admin na UI de salas limpas. Os administradores de conta usam essa página para gerenciar o usuário de serviço e os recursos da conta, como preenchimento automático entre nuvens, tabelas externas e Iceberg e registro de conjunto de dados para usuários da UI. Essa função tem todos os privilégios da UI de salas limpas. Um usuário que faz execuções como ACCOUNTADMIN não precisa de outras funções de aplicativo da UI.

  • MANAGE_CLEANROOMS: função de aplicativo que permite criar, atualizar, excluir e instalar salas limpas, bem como criar, atualizar, excluir e executar análises na UI de salas limpas.

  • MANAGE_DCR_PROFILE_AND_FEATURES: função de aplicativo que fornece acesso à página Profile & Features na seção Admin da UI, em que é possível gerenciar o perfil da empresa e controlar os conectores de terceiro que podem ser usados em salas limpas.

  • MANAGE_DCR_CONNECTORS: função de aplicativo que fornece acesso à página Connectors na UI, em que é possível configurar conectores de terceiro.

  • MANAGE_DCR_COLLABORATORS: função de aplicativo que fornece acesso à página Collaborators na UI, em que é possível gerenciar a lista de colaboradores aprovados disponíveis para provedores de sala limpa na UI. Essa função não controla a lista de colaboradores disponíveis para os provedores ao usar a API. Os usuários da API podem convidar qualquer pessoa para colaborar. Para obter mais informações, consulte Gerencie os colaboradores da clean room.

Exemplo

O código a seguir mostra como criar uma função personalizada, conceder a ela vários recursos da UI e, em seguida, conceder a função personalizada a um usuário.

-- Create the role.
USE ROLE ACCOUNTADMIN;
CREATE ROLE dcr_access;

-- Grant capabilities to the new role.
GRANT APPLICATION ROLE SAMOOHA_BY_SNOWFLAKE.MANAGE_CLEANROOMS TO ROLE dcr_access;
GRANT APPLICATION ROLE SAMOOHA_BY_SNOWFLAKE.MANAGE_DCR_COLLABORATORS TO ROLE dcr_access;
GRANT APPLICATION ROLE SAMOOHA_BY_SNOWFLAKE.MANAGE_DCR_PROFILE_AND_FEATURES TO ROLE dcr_access;
GRANT APPLICATION ROLE SAMOOHA_BY_SNOWFLAKE.MANAGE_DCR_CONNECTORS TO ROLE dcr_access;

-- Assign the role to a user.
-- You must also grant access to a default warehouse to the role.
GRANT USAGE ON WAREHOUSE <your_warehouse> TO ROLE dcr_access;
ALTER USER <some_user> SET DEFAULT_WAREHOUSE  =  <your_warehouse>;
GRANT ROLE dcr_access to USER <some_user>;
Copy

Gerenciamento de usuários de API

O acesso à API é gerenciado por meio de funções. As seguintes funções do Snowflake são usadas para acessar ou gerenciar a API:

  • ACCOUNTADMIN: a função usada para instalar ou desinstalar o ambiente de salas limpas. Essa função não inclui SAMOOHA_APP_ROLE. Para usar a API, você deve usar SAMOOHA_APP_ROLE.

  • SAMOOHA_APP_ROLE: essa função concede permissão total à API de salas limpas nesta conta. (Essa função é usada pela UI de salas limpas para se comunicar com a API.)

  • Função de desenvolvedor somente execução: alguém que usa SAMOOHA_APP_ROLE pode conceder o uso em uma função de acesso limitado. Essa função, também chamada de função de execução, concede permissão para usar um subconjunto de procedimentos da API em um subconjunto de salas limpas no contexto do consumidor. Essas funções limitadas podem ser concedidas a funções para permitir o uso com escopo em sua conta para usuários específicos, como analistas de dados.

Conceda ou revogue o acesso completo à API

The SAMOOHA_APP_ROLE role grants a user full API access to all clean rooms in a Snowflake account. This role has usage on all warehouses installed with clean rooms.

Conceda acesso total à API:

USE ROLE ACCOUNTADMIN;
GRANT ROLE SAMOOHA_APP_ROLE TO USER <user_name>;
Copy

Revogue o acesso total à API:

USE ROLE ACCOUNTADMIN;
REVOKE ROLE SAMOOHA_APP_ROLE FROM USER <user_name>;
Copy

Conceda acesso limitado à API

Você pode conceder acesso limitado à API a salas limpas especificadas em sua conta. O acesso limitado permite chamar apenas um subconjunto de procedimentos do consumidor, como consumer.run_analysis, mas não permite instalar, criar, ingressar ou modificar uma sala limpa.

Veja a seguir como conceder acesso limitado a um usuário:

  1. A user who can grant the SAMOOHA_APP_ROLE role creates a new role, and assigns limited functionality to that role. The role must also be granted USAGE to any warehouses that they will use to access the clean rooms.

    -- Create the role.
    USE ROLE ACCOUNTADMIN;
    CREATE ROLE MARKETING_ANALYST_ROLE;
    
    -- Grant USAGE on one of the basic clean room warehouses.
    -- You can grant USAGE to any warehouses that you want them to use.
    GRANT USAGE ON WAREHOUSE APP_WH TO MARKETING_ANALYST_ROLE;
    
    -- Grant limited functionality to the role for a subset of clean rooms.
    CALL samooha_by_snowflake_local_db.consumer.grant_run_on_cleanrooms_to_role(
      [$cleanroom_1, $cleanroom_2],
      'MARKETING_ANALYST_ROLE'
    );
    
    -- Grant the role to a user.
    GRANT ROLE MARKETING_ANALYST_ROLE TO USER george.washington;
    
    Copy
  2. Em seguida, o usuário usa sua função limitada para executar ações específicas na conta da clean room:

     -- User george.washington logs in and uses the limited role.
     USE WAREHOUSE APP_WH
     USE ROLE MARKETING_ANALYST_ROLE;
     USE SECONDARY ROLES NONE;
    
     -- Consumer-run analyses should succeed.
     CALL samooha_by_snowflake_local_db.consumer.run_analysis(
       $cleanroom_name,
       'prod_overlap_analysis',
       ['MY_DB.MYDATA.CONVERSIONS'],  -- Consumer tables
       ['MY_DB.MYDATA.EXPOSURES'],      -- Provider tables
       object_construct(
         'max_age', 30
       )
     );
    
    -- Clean room creation and management procedures fail.
    CALL samooha_by_snowflake_local_db.provider.cleanroom_init($cleanroom_name, 'INTERNAL');
    
    Copy

Revogue o acesso limitado à API

  • Para revogar os privilégios de execução em uma sala limpa específica de uma determinada função, chame revoke_run_on_cleanrooms_from_role.

  • Para revogar todos os privilégios de execução concedidos de um único usuário, revogue a função do usuário.

Gerencie os colaboradores da clean room

Colaboradores são usuários convidados a ingressar em uma sala limpa como consumidores por um provedor da sala limpa.

When using the clean rooms UI, creators can invite collaborators from a list that is managed by someone using the MANAGE_DCR_COLLABORATORS role.

When using the clean rooms API, providers are not limited by a predefined collaborators list, and can add any clean room collaborator by Snowflake account locator. If you want to invite a collaborator without a Snowflake account, you must first create a clean room managed account for them. Remember that you invite an account to collaborate, not an individual user. Any user with clean rooms access in the invited account can join and use the clean room.

Nota

Se um colaborador Snowflake tiver uma conta em uma região diferente de sua conta Snowflake, o administrador de conta deverá ativar o preenchimento automático entre nuvens antes que você possa adicioná-lo como colaborador.

Para gerenciar a lista de colaboradores usada na UI de salas limpas, você precisa da função MANAGE_DCR_COLLABORATORS.

  1. Navegue até a página de login do Snowflake Data Clean Rooms.

  2. Na navegação da esquerda, selecione Collaborators.

  3. Faça uma das seguintes opções:

    • Se o colaborador tiver uma conta Snowflake, selecione Snowflake Partners » + Snowflake Partner. Responda às solicitações para inserir os detalhes da conta Snowflake do colaborador.

    • Se o colaborador não for um cliente Snowflake:

      1. You can contact Snowflake Support to grant you the ability to create a managed account.

      2. Quando você tiver essa capacidade, retorne ao painel Collaborators e selecione a guia Managed Accounts para criar uma conta gerenciada de sala limpa para seu colaborador.