Collaboration Data Clean Roomsにおけるコラボレーターのロール

コラボレーションロールの概要

クリーンルームのコラボレーションシナリオでは、コラボレーターが以下の コラボレーションロール の1つ以上を持ちます。この場合、 コラボレーションロール は機能のセットであり、 RBAC ロール ではありません。

  • 所有者: 所有者は、コラボレーションを定義、作成、所有し、招待されるコラボレーターとコラボレーションのロールを定義します。所有者は、自動的に分析実行者やデータプロバイダーになることはなく、昇格された実行権限も持ちません。所有者の主な役割は、クリーンルームを作成し、コラボレーションロールを割り当て、誰が誰とデータを共有できるかを決定し、クリーンルームを解体することです。1つのコラボレーションにつき所有者は1人までです。

  • データプロバイダー: テーブルやビューなどのデータ提供をコラボレーションに提供し、それらを使用できる分析実行者を指定します。つまり、コラボレーションの仕様で指定されているように、アカウントAはアカウントBとCに対するデータプロバイダーです。

  • 分析実行者: コラボレーションの仕様で指定されているように、許可されたデータ提供で許可されたテンプレートを実行します。分析実行者は、コラボレーション仕様で指定されていない限り、デフォルトではデータプロバイダーではありません。

1人のコラボレーターはコラボレーションで複数のコラボレーションロールを持つことができ、複数のコラボレーターは同じコラボレーションロールを持つことができます(1人のユーザーにのみ割り当てられる所有者コラボレーションロールを除く)。例えば、コラボレーションの所有者は、データプロバイダーと分析実行者である場合もあります。

所有者は、コラボレーションを作成する際に、すべてのコラボレーターとそのコラボレーションロールを指定します。コラボレーションが作成された後に、コラボレーターとそのコラボレーションロールを変更することはできません。その結果、コラボレーションの作成後に、次のコラボレーションのロール割り当てが固定されます。

  • 所有者を変更することはできません。

  • 分析実行者の追加や削除はできません。

  • 各分析実行者のデータプロバイダーのリストを変更することはできません。コラボレーションの作成時に、アカウントAがアカウントBのデータプロバイダーとして定義されていない場合、アカウントAはアカウントBのデータプロバイダーになることはできません。

ただし、コラボレーターは、コラボレーションが作成された後に、 リソース をリンクまたは削除することができます。

ロールの表示

GET_STATUS を呼び出して、 ROLES 列でコラボレーションのロールを確認します。

CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.GET_STATUS($collaboration_name);

自分のロールの詳細を確認したい場合、たとえば、自分がデータプロバイダーで、誰とデータを共有できるのかを確認したい場合は、コラボレーションの仕様を調べる必要があります。コラボレーションに参加した後、1回の呼び出しでコラボレーション仕様を確認する方法を次に示します。

CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_COLLABORATIONS() ->>
  SELECT "COLLABORATION_SPEC" FROM $1
    WHERE "SOURCE_NAME" = $collaboration_name;

次の例は、コラボレーションロールを定義する非常に基本的なコラボレーションを示していますが、リソースは含まれていません。リソースの有無にかかわらず、コラボレーションを作成し、後からリソースを追加または削除できます。

api_version: 2.0.0
spec_type: collaboration
name: basic_collaboration
owner: alice
collaborator_identifier_aliases:
  alice: corp1.acct123
  bob: corp2.acctxyz
analysis_runners:
  alice:
    data_providers:
      alice:
        data_offerings: []
      bob:
        data_offerings: []
  bob:
    data_providers:
      alice:
        data_offerings: []

前述のコラボレーションでは、次のコラボレーターとコラボレーションロールが定義されています。

  • alice はコラボレーションの所有者、分析実行者、 bob および自分自身のデータプロバイダーです。alice はアカウント corp1.acct123 のコラボレーションで定義されたエイリアスです。

  • bob は分析実行者で、 alice のデータプロバイダーですが、自分のデータプロバイダーでは ありませんbob はアカウント corp2.acctxyz のコラボレーションで定義されたエイリアスです。

コラボレーションが作成された後は、これらのコラボレーションロールを変更することはできません。また、新しいコラボレーターを追加することもできません。

データプロバイダーは、コラボレーションが作成された後にデータ提供をリンクできます。コラボレーション作成後、コラボレーターは誰でもテンプレートの追加をリクエストできます。次の例は、コラボレーション作成後に、コラボレーション API を使用してリソースを前のコラボレーションにリンクする方法を示しています。

api_version: 2.0.0
spec_type: collaboration
name: basic_collaboration
owner: alice
collaborator_identifier_aliases:
  alice: corp1.acct123
  bob: corp2.acctxyz
analysis_runners:
  alice:
    data_providers:
      alice:
        data_offerings:
        - id: alice_data_1
        - id: alice_data_2
      bob:
        data_offerings:
        - id: bob_data_1
    templates:
    - id: template1  # Alice can run template1 using alice_data_1, alice_data_2, or bob_data_1.
  bob:
    data_providers:
      alice:
        data_offerings:
        - id: alice_data_1
    templates:
    - id: template2  # Bob can run template2 using data from alice_data_1, provided by alice.

変更されたコラボレーションは、以下のリソースと機能をサポートするようになりました。

  • alicetemplate1alice_data_1alice_data_2 および bob_data_1 のデータを使用して分析を実行できます。

  • bobalice_data_1 のデータを使用して template2 を実行できます。