クリーンルームのユーザーとアクセスの管理

概要

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 アクセス制御の概要. To see which users were granted a specific role, run the following SQL command:

SHOW GRANTS OF ROLE <role_name>;
Copy

Tip

このトピックでは、次の用語を使用します。

  • :emph:`クリーンルームユーザー:`Snowflakeアカウントでクリーンルーム UI または API へのアクセスを許可されたユーザー。

  • :emph:`クリーンルームのコラボレーター:`クリーンルームプロバイダーからクリーンルームへの参加を招待されたコンシューマー。コラボレーターは、クリーンルームの利用者でもあります。つまり、招待を受け入れてクリーンルームを利用するために、クリーンルーム UI または API へのアクセス権が必要です。

クリーンルーム UI へのアクセスを管理する

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.

以下のロールは、クリーンルーム UI を管理またはアクセスする権限を付与します。

  • ACCOUNTADMIN: クリーンルーム環境のインストールまたはアンインストールに使用されるロール。このロールは、クリーンルーム UI の Snowflake Admin ページにアクセスすることもできます。アカウント管理者はこのページを使用して、サービスユーザーとアカウントの機能 (Cross-Cloud Auto-Fulfillment、外部テーブルと Iceberg テーブル、UI ユーザーのデータセット登録など) を管理します。このロールにはすべてのクリーンルーム UI 権限があり、ACCOUNTADMIN として実行するユーザーには、追加の UI アプリケーションロールは必要ありません。

  • MANAGE_CLEANROOMS: クリーンルームの作成、更新、削除、インストール、およびクリーンルーム UI で分析の作成、更新、削除、実行を提供するアプリケーションロール。

  • MANAGE_DCR_PROFILE_AND_FEATURES: 会社プロファイルを管理し、クリーンルームで使用できるサードパーティコネクタを制御できる、UI の Admin セクションの Profile & Features ページへのアクセス権を提供するアプリケーションロール。

  • MANAGE_DCR_CONNECTORS: サードパーティコネクタを構成できる、UI の Connectors ページへのアクセス権を提供するアプリケーションロール。

  • MANAGE_DCR_COLLABORATORS: UI のクリーンルームプロバイダーが利用できる承認済みコラボレーターのリストを管理できる、UI の:ui:Collaborators ページへのアクセス権を提供するアプリケーションロール。このロールは、API を使用する場合にプロバイダーが利用できるコラボレーターのリストを制御しません。API ユーザーは誰でもコラボレーションに招待できます。詳細については、 clean roomのコラボレーターの管理 をご参照ください。

以下のコードは、カスタムロールを作成し、そのロールに複数の UI 機能を付与し、その後カスタムロールをユーザーに付与する方法を示しています。

-- 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

API ユーザーの管理

API アクセスはロールを使用して管理されます。次の Snowflake ロールは、API にアクセスまたは管理するために使用されます。

  • ACCOUNTADMIN: クリーンルーム環境のインストールまたはアンインストールに使用されるロール。このロールには SAMOOHA_APP_ROLE は含まれません。API を使用する場合は、SAMOOHA_APP_ROLE を使用する必要があります。

  • SAMOOHA_APP_ROLE: このロールは、このアカウントのクリーンルーム API に対して、フル権限 を付与します。(このロールは API と通信するためのクリーンルーム UI で使用されます。)

  • 実行のみの開発者ロール: SAMOOHA_APP_ROLE を使用しているユーザーは、アクセスが制限されたロールの使用権限を付与できます。このロールは、実行ロール とも呼ばれ、コンシューマーコンテキストのクリーンルームのサブセットでの API プロシージャのサブセットを使用する権限を付与します。これらの限定ロールをロールに付与すると、データアナリストなどの特定のユーザーに対してアカウント内のスコープを指定できます。

完全な 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.

完全な API アクセスの許可:

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

完全な API アクセスの取り消し:

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

制限付き API アクセスの許可

アカウント内の指定されたクリーンルームに対して、制限付き API アクセスを付与できます。制限付きアクセスでは、クリーンルームのインストール、作成、結合、変更はできませんが、コンシューマープロシージャのサブセット (``consumer.run_analysis``など) のみを呼び出す権限が付与されます。

ここでは、ユーザーに制限付きアクセスを付与する方法を説明します:

  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. ユーザーはその制限付きのロールを使用し、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

制限付き API アクセスの取り消し

  • 特定のロールから特定のクリーンルームの実行権限を取り消すには、revoke_run_on_cleanrooms_from_role を呼び出します。

  • 単一のユーザーから付与されたすべての実行権限を取り消すには、そのユーザーからそのロールを取り消します。

clean roomのコラボレーターの管理

*コラボレーター*は、クリーンルームプロバイダーからコンシューマーとしてクリーンルームに参加するよう招待されます。

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.

注釈

Snowflakeコラボレーターが自分のSnowflakeアカウントと異なるリージョンにアカウントを持っている場合、それらをコラボレーターとして追加する前に、アカウント管理者が Cross-Cloud Auto-Fulfillmentを有効に する必要があります。

クリーンルームUIで使用されるコラボレーターリストを管理するには、:ref:`MANAGE_DCR_COLLABORATORS ロール<label-dcr_manage_ui_users>`が必要です。

  1. Snowflake Data Clean Roomsのログインページ に移動します。

  2. 左側のナビゲーションで Collaborators を選択します。

  3. 次のいずれかを実行します。

    • コラボレーターがSnowflakeアカウントを持っている場合は、 Snowflake Partners » + Snowflake Partner を選択します。コラボレーターのSnowflakeアカウントの詳細を入力するプロンプトに応答します。

    • 共同作業者がSnowflakeのお客様でない場合。

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

      2. 権限が付与されたら、 Collaborators ペインに戻り、 Managed Accounts タブを選択し、共同作業者のクリーンルーム管理アカウントを作成します。