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

概要

クリーンルームのコラボレーションシナリオでは、コラボレーターが以下の ロール の1つ以上として機能します。この場合、 ロール は RBAC ロールではなく、機能のセットです。

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

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

  • 分析実行者: コラボレーションの定義で指定されているように、許可されたデータ提供で許可されたテンプレートを実行します。

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

GET_STATUS を呼び出すことで、 ROLES 列でコラボレーションに使用可能なロールを確認できます。 ROLES 列には自分のロールが一覧表示されます。例えば、自分がデータプロバイダーで、誰とデータを共有できるのかを確認したい場合は、コラボレーションの仕様を調べて、ロールの詳細を確認します。コラボレーションに参加した後、1回の呼び出しでコラボレーション仕様を確認する方法を次に示します。

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

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

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

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

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

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

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

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: []
Copy

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

  • 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.
Copy

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

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

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