Snowflake Data Clean Rooms: 管理者のタスク

このトピックでは、 Snowflake Data Clean Room の管理者のタスクについて説明します。初めてクリーン環境を導入する場合の情報については、 Snowflake Data Clean Rooms の概要 をご参照ください。

clean roomユーザーの管理

UI および API へのアクセスは、アプリケーションロールを使用して管理されます。API と UI ではアクセスを許可するロールが異なります。

また、ユーザーにデフォルトのウェアハウスを割り当てて、そのウェアハウスでの使用を許可する必要があります。

clean room UI へのアクセスの管理

clean room UI へのアクセスを許可するには、適切なclean room UI ロールをユーザーロールまたはサブロールに割り当てます。以下は、clean room UIへのアクセスまたは管理に使用されるロールです:

  • ACCOUNTADMIN: clean room環境のインストールまたはアンインストールに使用します。サービスユーザーや、Cross-Cloud Auto-Fulfillment や外部テーブル、Icebergテーブル、 UI ユーザーのデータセット登録などのアカウント機能の管理に使用する Snowflake Admin ページへのアクセスを許可します。このロールには、他のすべてのclean roomロールの権限が含まれます。

  • MANAGE_CLEANROOMS: clean roomの作成、更新、削除、インストール、およびclean room UI での分析の作成、更新、削除、実行を許可します。

  • MANAGE_DCR_PROFILE_AND_FEATURES: Profile & Features ページの :ui:Admin セクションのへのアクセスを許可します。このページで会社プロファイルを管理し、clean roomで使用できるサードパーティコネクタを制御します。

  • MANAGE_DCR_CONNECTORS: Connectors ページへのアクセスを許可します。このページでサードパーティコネクタを構成します。

  • MANAGE_DCR_COLLABORATORS: Collaborators ページへのアクセスを許可します。このページで UI ユーザーの承認済みコラボレーターのリストを管理します。任意のSnowflakeアカウントを招待してコラボレーションできる API ユーザーが使用するコラボレーターリストは管理しません。

USE ROLE ACCOUNTADMIN;
CREATE ROLE dcr_access;

-- Choose your privileges:
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;

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 ユーザーの管理

Clean roomでは以下のロールを定義して、 UI および API へのアクセスを管理しています。すべてのロールはアプリケーションロールであり、 SAMOOHA_BY_SNOWFLAKE の範囲に含まれます。

以下のSnowflakeロールが、 APIへのアクセスまたは管理に使用されます。

  • ACCOUNTADMIN: clean room環境のインストールまたはアンインストールに使用されるロール。

  • SAMOOHA_APP_ROLE: このアカウントでclean room API に完全な許可を付与します。(このロールはウェブアプリケーションによる API との通信に使用されます。

  • 実行専用の開発者ロール: SAMOOHA_APP_ROLE を持つユーザーは、 制限付きアクセスロール を作成できます。このロールは 実行ロール とも呼ばれ、clean roomのサブセットでの API プロシージャのサブセット使用を許可します。これらの制限付きロールをユーザーに付与することで、データアナリストなどの特定のユーザーに対し、アカウント内でスコープを指定して使用を許可できます。consumer.grant_run_on_cleanrooms_to_role を呼び出して、制限付きロールを作成します。

完全な API アクセスの許可または取り消し

SAMOOHA_APP_ROLE ロールは、アカウント内のすべてのclean roomへの完全な 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 アクセスの許可

アカウントで指定したclean roomに制限付きで API アクセスを許可できます。制限付きアクセスにより、 consumer.run_analysis など コンシューマープロシージャのサブセット のみ実行が可能になりますが、clean roomの作成、結合、変更は許可されません。

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

  1. 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 the role limited privileges on 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;
    
     -- 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

どのユーザーに特定のロールが付与されたかを確認するには:

SHOW GRANTS OF ROLE <run_role_name>;
Copy

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

  • このロールから実行権限を取り消すには、 consumer.revoke_run_on_cleanrooms_from_role を呼び出します。

  • 1人のユーザーの実行権限を取り消すには、そのユーザーからロールを取り消します。

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

コラボレーター はclean room作成者によってclean roomに招待されたユーザーです。

clean room UI を使用する場合、クリエイターはリストからコラボレーターを招待できます。このリストは、 MANAGE_DCR_COLLABORATORS ロールを持つユーザーによって管理されます。

Clean room API ユーザーは、事前定義のリストによって制限されることなく、Snowflakeアカウントロケーターによって任意のclean roomコラボレーターを追加できます。

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

Snowflakeアカウントのないコラボレーターを招待したい場合は、まず clean roomマネージドのアカウントを作成する 必要があります。

clean room UI で使用されるコラボレーターリストをキュレートするには、 MANAGE_DCR_COLLABORATORS ロールが必要です。

  1. /INCLUDE/cleanrooms/text/text-sign-in-page.txt

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

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

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

    • コラボレーターがSnowflakeの顧客でない場合は、 Managed Accounts タブを選択し、 clean room管理アカウント を作成します。

ウェアハウスオプションを追加

SAMOOHA_APP_ROLE ロールが使用権限と操作権限を持つウェアハウスであれば、分析を実行できます。クリーンルームユーザーが分析を実行するために使用できるウェアハウスを追加するには、ウェアハウスを作成し、 SAMOOHA_APP_ROLE に権限を付与します。

例えば、分析の実行に使用できるウェアハウス my_big_warehouse を追加するには、ワークシートから以下のコマンドを実行します。

USE ROLE ACCOUNTADMIN;

CREATE WAREHOUSE my_big_warehouse WITH WAREHOUSE_SIZE = X5LARGE;
GRANT USAGE, OPERATE ON WAREHOUSE my_big_warehouse TO ROLE SAMOOHA_APP_ROLE;
Copy

ウェブアプリのアクティビティをモニターする

管理者として、Snowflakeアカウントのクエリ履歴をモニターすることで、ユーザーがウェブアプリで何をしているかを追跡できます。 user_name の値は、 Snowflakeアカウント構成時 に作成されるサービスユーザーの名前であるため、ウェブアプリでアクティビティに対応するクエリ履歴エントリを識別できます。

user_email クエリタグを使用して、どのクリーンルームユーザーがアクションを実行したかを識別できます。

クリーンルーム環境のクエリ履歴にアクセスするには、 SQL または Snowsight のどちらを使用するかによって、以下のいずれかの操作を行います。

Snowsight:
  1. ACCOUNTADMINロールを持つユーザーとして、クリーンルーム環境に関連付けられたSnowflakeアカウントにサインインします。

  2. Monitoring » Query History を選択します。

  3. User フィルターを使用して、クリーンルーム環境に関連するサービスアカウントユーザーを選択します。

SQL:
  • 共有 SNOWFLAKE データベースの ACCOUNT_USAGE スキーマの QUERY_HISTORY ビュー に対してクエリを実行します。

    例えば、ユーザー joe@example.com のウェブアプリのアクティビティをトレースするには、以下のコードを実行します。

    SELECT *,
      TRY_PARSE_JSON(query_tag) AS query_tag_details
      FROM snowflake.account_usage.query_history
      WHERE query_tag_details IS NOT NULL
        AND query_tag_details:request_type = 'DCR'
        AND query_tag_details:user_email = 'joe@example.com';
    
    Copy

プロバイダーが運営する分析をモニターする

プロバイダーが実行する分析とは、プロバイダーがクリーンルームを作成して共有し、コンシューマーがデータをリンクした後にクリーンルームで分析を実行するプロセスを指します。これらの分析は、プロバイダーではなく、コンシューマーのアカウントで実行されます。このセクションでは、コンシューマーがクリーンルーム内でプロバイダーの分析によって実行されたクエリを追跡する方法について説明します。

Snowflake Data Clean Rooms は、プロバイダーが実行する分析で実行される各クエリにクエリタグを割り当てます。このクエリタグは cleanroom_UUID_provider_account_locator という形式をとります。コンシューマーは、自分のアカウントのクエリ履歴でクエリタグを検索することにより、プロバイダーが実行した分析に関連するすべてのクエリを取得することができます。

クエリを取得するには、まずクリーンルームの UUID を取得し、次にクエリタグを検索します。以下のコードでは、 cleanroom_nameprovider_account_locator を適切な値に置き換えてください。

-- Retrieve clean room UUID
SELECT cleanroom_id FROM samooha_by_snowflake_local_db.public.cleanroom_record
  WHERE cleanroom_name = '<cleanroom_name>';

-- Retrieve queries with provider-run query tag
SELECT * FROM snowflake.account_usage.query_history
  WHERE query_tag = cleanroom_id || '<provider_account_locator>;
Copy

また、 SQL を使ってクリーンルーム UUID を取得した後、 Snowsight を使って、適切なクエリタグでクエリ履歴をフィルタリングすることもできます。

利用可能なコネクタをカスタマイズする

コネクタにより、クリーンルーム環境をエコシステムパートナーと統合できます。プロバイダーのクリーンルーム管理者として、クリーンルーム環境をカスタマイズして、クリーンルームユーザーのオプションとして表示されるコネクタを制限することができます。例えば、優先的なアクティベーションパートナーが1社ある場合、コンシューマーがクリーンルームで分析結果をアクティベーションする際に、そのパートナーが唯一の選択肢となるようにクリーンルーム環境を設定することができます。

注釈

カスタマイズは新しいクリーンルームにのみ適用されます。

どのコネクタをclean roomで使用できるかを制御するには、 MANAGE_DCR_CONNECTORS ロールが必要です。

  1. ウェブアプリにサインインします

  2. 左側のナビゲーションで Admin » Profile & Features を選択します。

  3. オプション: アクティベーションコネクタをカスタマイズするには、以下の手順に従ってください:

    1. Activation タイルで、 Edit を選択します。

    2. 表示したいアクティベーションオプションを選択し、 Save を選択します。

  4. オプション: IDおよびデータプロバイダーコネクタをカスタマイズするには、次のステップに従います。

    1. Identity & Data Provider タイルで、 Edit を選択します。

    2. 表示したいIDオプションを選択し、 Save を選択します。

クリーンルームのブランド化

クリーンルーム環境用のプロファイルを設定できるので、作成されたクリーンルームはすべてロゴと会社名でブランド化されます。会社のロゴと名前を定義するには、 MANAGE_DCR_PROFILE_AND_FEATURES ロールが必要です。

  1. ウェブアプリにサインインします

  2. 左側のナビゲーションで Admin » Profile & Features を選択します。

  3. Company profile セクションで、次の操作を実行します。

    1. あなたの会社のロゴを JPG または PNG 形式でアップロードします。このロゴは、作成されるすべてのクリーンルームに表示されます。

    2. Company Name を編集して、環境内に作成されるクリーンルームに表示する名前を定義します。

シングルサインオンの有効化 (SSO)

Snowflake認証コードでシングルサインオン (SSO) を有効にするには、 Snowflakeサポート にお問い合わせください。

キーペア認証を許可する

クリーンルーム環境がSnowflakeアカウントとの通信に使用するサービスアカウントユーザーは、 キーペア認証 を使用して認証します。Snowflake アカウントが 認証ポリシー を使用してユーザーの認証方法を制御している場合、サービスアカウントユーザーを制御する認証ポリシーは、キーペア認証を許可する必要があります。

キーペア認証を許可するには、すべての認証ポリシーを削除するか、認証ポリシーに AUTHENTICATION_METHODS = ALL または AUTHENTICATION_METHODS = KEYPAIR を追加します。Snowflakeアカウントに、キーペア認証を許可しないアカウントレベルの認証ポリシーがある場合は、適切なパラメーターを持つ新しい認証ポリシーを作成し、インストールプロセス中に作成されたサービスアカウントユーザーにポリシーを割り当てる必要があります。

このコマンドを実行することで、認証ポリシーを確認できます:

SHOW AUTHENTICATION POLICIES;
Copy

空の結果テーブルはポリシーが存在せず、よってキーペア認証が許可されていることを示します。

clean room UI でのアクティベーションの有効化または無効化

clean room UI 使用時のアクティベーションは、clean room管理者によってグローバルに制御されます。clean room API でのアクティベーションは、プロバイダーによってclean roomレベルで制御されます。

このセクションでは、clean room UI の使用時にアクティベーションを有効または無効にする方法を示します。API の使用時にアクティベーションを有効にする方法については、 アクティベーションの説明 をお読みください。

clean room UI を使用する場合、プロバイダーとコンシューマーのアクティベーションは、clean roomのアカウントでデフォルトで有効化されます。サードパーティのアクティベーションは、手動で有効にする必要があります。

ここでは、アカウント内の UI ユーザーのアクティベーションを有効または無効にする方法を説明します:

  1. ウェブアプリのclean room環境に DCR 管理者としてサインインします。

  2. Admin » Profile & Features を選択します。

  3. Activation セクションで、 Edit を選択します。

    • コンシューマーアクティベーション を管理するには: Collaborator Account の横のチェックボックスをオンまたはオフにします。

    • プロバイダーアクティベーション を管理するには: 自分のアカウント名の横のチェックボックスをオンまたはオフにします。

    • サードパーティアクティベーション を管理するには: 有効または無効にしたいサードパーティアクティベーションのターゲットの横のチェックボックスをオンまたはオフにします。サードパーティアクティベーションはコネクタを通じて有効化され、clean room UI でのみ利用可能です。 利用可能なサードパーティコネクタのリストをご参照ください

clean roomにアクティベーション実装する方法を説明します。

ネットワークポリシーの構成

Snowflakeアカウントが ネットワークポリシー を使用してネットワークトラフィックを制御する場合、WebアプリがSnowflakeアカウントとの通信に使用する IP アドレスからのトラフィックを明示的に許可する必要があります。

以下の表でクラウドプロバイダーのアカウントリージョンを探し、その行にリストされているすべての IP アドレスを許可するようにアカウントネットワークポリシーを構成してください:

Snowflakeアカウントリージョン

ウェブアプリに以下の IP アドレスを許可

  • AWS US 西部(オレゴン)

  • AWS US東部(オハイオ)

  • AWS US 東部(北部バージニア)

  • AWS 南米(サンパウロ)

  • Azure西部US 2(ワシントン)

  • Azure中部US(アイオワ)

  • Azure南中央US(テキサス)

  • Azure東 US 2(バージニア)

  • GCP US 中部1(アイオワ州)

  • GCPUS 東部4(バージニア州北部)

52.7.249.136
34.195.16.248
52.7.210.215
  • AWSカナダ(中部)

  • Azureカナダ中部(トロント)

15223145218
3.96.6.109
15.222.142.44
  • AWS EU(アイルランド)

  • AWSヨーロッパ(ロンドン)

  • AWS EU (パリ)

  • AWS EU (フランクフルト)

  • AWS EU(ストックホルム)

  • AWS EU (チューリッヒ)

  • Azure UK南部(ロンドン)

  • Azure北部ヨーロッパ(アイルランド)

  • Azure西ヨーロッパ(オランダ)

  • Azureスイス北部(チューリッヒ)

  • Azure UAE 北部(ドバイ)

  • GCP ヨーロッパ西部2(ロンドン)

  • GCP ヨーロッパ西部4(オランダ)

54.93.86.99
3.126.238.8
3127143168
  • AWSアジア太平洋(ムンバイ)

  • Azure中部インド(プネー)

35.154.94.29
13235168249
15.206.48.175
  • AWS アジア太平洋(シンガポール)

  • AWS アジア太平洋(東京)

  • AWS アジア太平洋(大阪)

  • AWS アジア太平洋(ソウル)

  • AWS アジア太平洋地域(ジャカルタ)

  • Azure東南アジア(シンガポール)

  • Azure日本東部(東京)

13.228.90.174
52.220.42.130
52.220.249.16
  • AWS アジア太平洋(シドニー)

  • Azureオーストラリア東部(ニューサウスウェールズ)

52.65.205.236
52.62.198.227
3.104.160.96

この環境のサービスアカウントの詳細を表示する

ウェブアプリケーションは、サービスアカウントを使用してSnowflakeと通信します。このサービスアカウントは、アカウント管理者がこのアカウントのclean room環境をインストールする際に作成されたものです。

サービスアカウントユーザーの詳細の変更はできません。

このclean room環境のサービスアカウントの詳細を表示するには、 MANAGE_DCR_PROFILE_AND_FEATURES ロールが必要です。

  1. /INCLUDE/cleanrooms/text/text-sign-in-page.txt

  2. Admin > Snowflake Admin に移動します。

  3. Snowflake Admin ページに、サービスユーザーの名前やサービスユーザーの電子メールなどの情報が表示されます。