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

概要

このトピックでは、アカウント管理者が自分のアカウントのクリーンルーム UI および API へアクセスするユーザーを管理する方法について説明します。

クリーンルーム UI および API はへのアクセスは、個別に付与されます。クリーンルームは、API および UI のさまざまなサブセクションにアクセスを許可するいくつかのアプリケーションロールを定義します。アカウント管理者はカスタムロールを作成し、必要なアプリケーションロールを付与して、UI および API へのきめ細かいアクセスを許可し、そのアカウントのさまざまなユーザーにロールを付与します。

この戦略では、Snowflake のロールベースのアクセス制御 (RBAC) モデルを導入し、クリーンルームのユーザーとそのアカウントのコラボレーターに適切な権限を委任します。RBAC の詳細については、 アクセス制御の概要 をご参照ください。どのユーザーに特定のロールが付与されているかを確認するには、次の SQL コマンドを実行します。

SHOW GRANTS OF ROLE <role_name>;
Copy

Tip

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

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

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

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

適切なロールを持っていれば、クリーンルーム UI にアクセスできます。クリーンルームユーザーには、デフォルトのウェアハウスも割り当てられ、USAGE 権限を付与する必要があります。

以下のロールは、クリーンルーム 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 アクセスの許可または取り消し

SAMOOHA_APP_ROLE ロールは、ユーザーにアカウント内のすべてのクリーンルームへの完全な API アクセス権を付与します。

完全な 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. 完全な API アクセスを持ち、SAMOOHA_APP_ROLE ロールを付与できるユーザーが、新しいロールを作成し、制限された機能をそのロールに割り当てます。

    -- Create the role.
    USE ROLE ACCOUNTADMIN;
    CREATE ROLE MARKETING_ANALYST_ROLE;
    GRANT USAGE ON WAREHOUSE APP_WH TO MARKETING_ANALYST_ROLE; -- Or whichever warehouse you are using
    
    -- 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のコラボレーターの管理

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

クリーンルーム UI を使用する際、作成者は、MANAGE_DCR_COLLABORATORS ロールを使用して誰かが管理するコラボレーターリストからコラボレーターを招待することができます。

クリーンルーム API を使用する際、プロバイダーは事前に定義されたコラボレーターリストによって制限されず、Snowflake アカウントロケーターによって任意のクリーンルームのコラボレーターを追加することができます。Snowflake アカウントなしでコラボレーターを招待する場合は、まずコラボレーター用に:ref:`クリーンルーム管理アカウントを作成する<label-cleanrooms_intro_managed_account>`必要があります。

注釈

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の顧客でない場合は、 Managed Accounts タブを選択し、 clean room管理アカウント を作成します。