BigQuery Sharing でデータ エクスチェンジを管理する
BigQuery Sharing 管理者は、BigQuery Sharing(旧 Analytics Hub)で次の操作を行えます。
- データ エクスチェンジを作成、更新、表示、共有、削除します。
- リスティングを作成、更新、削除、共有します。
- BigQuery Sharing 管理者、リスティング管理者、パブリッシャー、サブスクライバー、閲覧者を管理します。
デフォルトでは、データ エクスチェンジは限定公開であり、その交換にアクセスできるユーザーまたはグループのみがデータの表示やサブスクライブを行えます。ただし、Google Cloud ユーザー(allAuthenticatedUsers)がリストを検出および登録できるようにしたい場合は、データ交換を公開するようリクエストできます。
始める前に
BigQuery Sharing(旧 Analytics Hub)を開始するには、 Google Cloud プロジェクト内で Analytics Hub API を有効にする必要があります。
Analytics Hub API を有効にするには、次の Identity and Access Management(IAM)権限が必要です。
serviceUsage.services.getserviceUsage.services.listserviceUsage.services.enable
次の IAM 事前定義ロールには、Analytics Hub API を有効にするために必要な権限が含まれています。
- Service Usage 管理者(
roles/serviceusage.serviceUsageAdmin)
Analytics Hub API を有効にするには、次のいずれかのオプションを選択します。
コンソール
Analytics Hub API ページに移動し、 Google Cloud プロジェクトの Analytics Hub API を有効にします。
gcloud
gcloud services enable コマンドを実行します。
gcloud services enable analyticshub.googleapis.com
必要なロール
データ エクスチェンジの管理に必要な権限を取得するには、プロジェクトに対する Analytics Hub 管理者ロール(roles/analyticshub.admin)IAM ロールを付与するよう管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
データ エクスチェンジを作成する
データ交換を作成するには、次の手順に沿って操作します。
コンソール
[共有(Analytics Hub)] ページに移動します。
[エクスチェンジの作成] をクリックします。
[エクスチェンジの作成] ダイアログで、データ交換の [プロジェクト] と [リージョン] を選択します。データ交換の作成後にプロジェクトとリージョンを更新することはできません。
[表示名] に、データ交換の名前を入力します。
省略可: 次のフィールドに値を入力します。
- メインの連絡先: データ交換に関するメインの連絡先の URL またはメールアドレスを入力します。
- 説明: データ エクスチェンジの説明を入力します。
リンクされたデータセットでジョブとクエリを実行するすべてのユーザーのプリンシパル ID をログに記録するには、[サブスクライバーのメールのロギング] 切り替えボタンをクリックします。このオプションを有効にすると、データ エクスチェンジ内のすべてのリスティングでサブスクライバーのメールのロギングが有効になります。ログに記録されたデータは、
INFORMATION_SCHEMA.SHARED_DATASET_USAGEビューのjob_principal_subjectフィールドで確認できます。一般公開の検出可能性をオンにするには、[一般公開の検出可能性] の切り替えボタンをクリックします。交換が一般公開されると、交換内のすべてのリスティングがカタログに表示され、検索できるようになります。一般公開の検出可能性を有効にする場合は、エクスチェンジの権限を構成する必要があります。権限の継承により、すべてのリスティングはデフォルトで、エクスチェンジと同じ一般公開の検出可能性タイプに設定されます。そのため、公開エクスチェンジには非公開リスティングを含めることはできませんが、非公開エクスチェンジには公開リスティングを含めることができます(たとえば、公開の検出可能性のタイプを個々のリスティング レベルで設定できます)。データ エクスチェンジを作成するプロジェクトには、関連付けられた組織と請求先アカウントが必要です。
[交換の作成] をクリックします。
省略可: [エクスチェンジの権限] セクションで、次の操作を行います。
次のフィールドにメールアドレスを入力して、Identity and Access Management(IAM)ロールを付与します。
- 管理者: これらのユーザーには、Analytics Hub 管理者のロール(
roles/analyticshub.admin)が割り当てられます。 - パブリッシャー: これらのユーザーには、Analytics Hub パブリッシャーのロール(
roles/analyticshub.publisher)が割り当てられます。BigQuery Sharing パブリッシャーが実行できるタスクについては、リスティングを管理するをご覧ください。 - サブスクライバー: これらのユーザーには Analytics Hub サブスクライバーのロール(
roles/analyticshub.subscriber)が割り当てられます。BigQuery Sharing サブスクライバーが実行できるタスクについては、リスティングとデータ エクスチェンジを表示して登録するをご覧ください。 - 閲覧者: これらのユーザーには、Analytics Hub 閲覧者のロール(
roles/analyticshub.viewer)が割り当てられます。閲覧者はリスティングを表示できます。- 一般公開の検出可能性が有効になっている場合は、
allAuthenticatedUsersまたはallUsersに Analytics Hub 閲覧者のロールを付与します。
- 一般公開の検出可能性が有効になっている場合は、
- 管理者: これらのユーザーには、Analytics Hub 管理者のロール(
権限を保存するには、[権限を設定] をクリックします。
データ交換の権限を設定していない場合は、[スキップ] をクリックします。
API
projects.locations.dataExchanges.create メソッドを使用します。
POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/location/LOCATION/dataExchanges?dataExchangeId=DATAEXCHANGE_ID
次のように置き換えます。
PROJECT_ID: データ交換を作成するプロジェクトの ID。LOCATION: データ エクスチェンジのロケーション。BigQuery Sharing(旧 Analytics Hub)をサポートするロケーションの詳細については、サポートされているリージョンをご覧ください。DATAEXCHANGE_ID: データ エクスチェンジの ID。
リクエストの本文で、データ エクスチェンジの詳細を指定します。
リクエストが成功すると、レスポンスの本文にデータ エクスチェンジの詳細が含まれます。
logLinkedDatasetQueryUserEmail フィールドを使用してサブスクライバーのメールのロギングを有効にすると、データ エクスチェンジ レスポンスに log_linked_dataset_query_user_email: true が含まれます。ログに記録されたデータは、INFORMATION_SCHEMA.SHARED_DATASET_USAGE ビューの job_principal_subject フィールドで確認できます。
API でデータ エクスチェンジに対して実行できるタスクの詳細については、projects.locations.dataExchanges メソッドをご覧ください。
データ交換を更新する
データ交換を更新するには、次の手順に沿って操作します。
コンソール
[共有(Analytics Hub)] ページに移動します。
データ交換のリストで、更新するデータ交換をクリックします。
[詳細] タブに移動します。
[エクスチェンジの編集] をクリックします。
[エクスチェンジの編集] ダイアログで、次の項目を更新します。
- 表示名
- メインの連絡先
- 説明
- 一般公開の検出可能性
- 一般公開の検出可能性を有効にする場合は、
allUsersまたはallAuthenticatedUsersに Analytics Hub 閲覧者のロール(roles/analyticshub.viewer)を付与します。 - 一般公開の検出可能性を無効にする場合は、
allUsersまたはallAuthenticatedUsersから Analytics Hub 閲覧者のロール(roles/analyticshub.viewer)を削除します。公開エクスチェンジには非公開リスティングを含めることはできませんが、非公開エクスチェンジには公開リスティングを含めることが可能です。
- 一般公開の検出可能性を有効にする場合は、
サブスクライバーのメールのロギング
[保存] をクリックします。
API
projects.locations.dataExchanges.patch メソッドを使用します。
PATCH https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/location/LOCATION/dataExchanges/DATAEXCHANGE_ID?updateMask=UPDATEMASK
UPDATEMASK は、更新するフィールドのリストに置き換えます。複数の値を更新するには、カンマ区切りのリストを使用します。たとえば、データ エクスチェンジの表示名と連絡先担当者を更新するには、「displayName,primaryContact」と入力します。
リクエストの本文で、次のフィールドの更新後の値を指定します。
displayNamedescriptionprimaryContactdocumentationicondiscoveryTypelogLinkedDatasetQueryUserEmail
これらのフィールドの詳細については、リソース: DataExchange をご覧ください。
API でデータ交換に対して実行できるタスクの詳細については、projects.locations.dataExchanges メソッドをご覧ください。
データ交換を表示する
アクセスできるプロジェクトまたは組織内のデータ エクスチェンジを表示する手順は次のとおりです。
コンソール
[共有(Analytics Hub)] ページに移動します。
Google Cloud プロジェクト内のデータ エクスチェンジのリストを表示します。
resourcemanager.organizations.get権限がある場合は、 Google Cloud 組織内のデータ エクスチェンジのリストを表示することもできます。
API
プロジェクト内のデータ エクスチェンジを表示するには、projects.locations.dataExchanges.list メソッドを使用します。
GET https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/location/LOCATION/dataExchanges
次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- LOCATION: 既存のデータ交換を一覧表示するロケーション。
組織内のデータ エクスチェンジを表示するには、organizations.locations.dataExchanges.list メソッドを使用します。
GET https://analyticshub.googleapis.com/v1/organizations/ORGANIZATION_ID/location/LOCATION/dataExchanges
次のように置き換えます。
- ORGANIZATION_ID: 組織 ID。詳細については、組織 ID の取得をご覧ください。
- LOCATION: 既存のデータ交換を一覧表示するロケーション。
データ エクスチェンジを共有する
BigQuery Sharing パブリッシャーが、データ エクスチェンジが含まれる組織とは異なる組織に属している場合、パブリッシャーが Sharing でデータ エクスチェンジを表示することはできません。データ エクスチェンジへのリンクをパブリッシャーと共有する必要があります。
[共有(Analytics Hub)] ページに移動します。
データ交換のリストから、 [その他のオプション] をクリックします。
[共有リンクをコピー] をクリックします。
ユーザーにデータ交換へのアクセス権を付与する
ユーザーがデータ エクスチェンジにアクセスできるようにするには、そのデータ エクスチェンジについての IAM ポリシーを設定する必要があります。事前定義された IAM ユーザーロールについては、BigQuery Sharing IAM ロールをご覧ください。方法は次のとおりです。
コンソール
Google Cloud コンソールで、[共有(Analytics Hub)] ページに移動します。
権限を設定するデータ交換名をクリックします。
[詳細] タブに移動します。
[ 権限を設定] をクリックします。
プリンシパルを追加するには、 [プリンシパルを追加] をクリックします。
[新しいプリンシパル] フィールドに、アクセス権限を付与するメール ID を追加します。
allUsersを使用してリソースを公開し、インターネット上のすべてのユーザーがアクセスできるようにすることも、allAuthenticatedUsersを使用してログインした Google ユーザーのみがアクセスできるようにすることもできます。[ロールを選択] メニューで、[Analytics Hub] を選択し、次のいずれかの Identity and Access Management(IAM)ロールを選択します。
- Analytics Hub 管理者
- Analytics Hub リスティング管理者
- Analytics Hub パブリッシャー
- Analytics Hub サブスクライバー
- Analytics Hub サブスクリプションのオーナー
- Analytics Hub 閲覧者
[保存] をクリックします。
API
projects.locations.dataExchanges.getIamPolicyメソッドを使用して、リスティングgetIamPolicyメソッドがある既存のポリシーを読み取ります。POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataExchanges/DATAEXCHANGE_ID:getIamPolicy
次のように置き換えます。
PROJECT_ID: プロジェクト ID(例:my-project-1)。LOCATION: データ交換のロケーション。小文字を使用します。DATAEXCHANGE_ID: データ エクスチェンジ ID。
BigQuery Sharing(旧 Analytics Hub)は、現在のポリシーを返します。
メンバーとそれに関連する Identity and Access Management(IAM)のロールを追加または削除するには、テキスト エディタでポリシーを編集します。メンバーを追加するには、次の形式を使用します。
user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
たとえば、
roles/analyticshub.subscriberロールをgroup:subscribers@example.comに付与するには、次のバインディングをポリシーに追加します。{ "members": [ "group:subscribers@example.com" ], "role":"roles/analyticshub.subscriber" }projects.locations.dataExchanges.setIamPolicyメソッドを使用して、更新したポリシーを書き込みます。リクエストの本文で、前のステップで更新した IAM ポリシーを指定します。POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataExchanges/DATAEXCHANGE_ID:setIamPolicy
リクエストの本文で、リスティングの詳細を指定します。リクエストが成功した場合は、レスポンスの本文にリスティングの詳細が含まれます。
BigQuery Sharing 管理者を作成する
データ エクスチェンジを管理するには、プロジェクト レベルまたはデータ エクスチェンジ レベルで Analytics Hub 管理者のロール(roles/analyticshub.admin)をユーザーに付与して、データ エクスチェンジ管理者を作成する必要があります。
管理者がプロジェクト内のすべてのデータ エクスチェンジを管理できるようにするには、そのプロジェクトの Analytics Hub 管理者ロールを付与します。
管理者が特定のデータ エクスチェンジを管理できるようにするには、対象のデータ エクスチェンジに対する Analytics Hub 管理者のロールを付与します。
データ エクスチェンジを一般公開する
デフォルトでは、データ交換は限定公開であり、その交換にアクセスできるユーザーまたはグループのみがリスティングを表示またはリスティングに登録できます。ただし、データ交換を一般公開することは可能です。公開データ交換のリスティングは、Google Cloud ユーザー(allAuthenticatedUsers)が検出および登録できます。
データ エクスチェンジを公開するには、以下の手順に沿って操作します。
allAuthenticatedUsersがリスティングを表示できるようにするには、データ エクスチェンジ レベルで Analytics Hub 閲覧者のロール(roles/analyticshub.viewer)をユーザーに付与する必要があります。allAuthenticatedUsersがリスティングに登録できるようにするには、データ エクスチェンジ レベルで Analytics Hub サブスクライバーのロール(roles/analyticshub.subscriber)を付与する必要があります。データ エクスチェンジを作成または更新するときに、一般公開の検出可能性をオンにします。データ交換を一般公開するときに、適切な権限を指定します。
データ交換を削除する
データ交換を削除すると、含まれているリスティングもすべて削除されます。ただし、共有データセットとリンクされたデータセットは削除されません。また、プロジェクトが削除されても、プロジェクト内のデータ交換は削除されません。プロジェクトを削除する前に、手動でこれらのデータ交換を削除する必要があります。データ エクスチェンジを削除すると、元に戻すことはできません。
データ エクスチェンジを削除する前に、データ エクスチェンジの構成に基づいて次の操作を行う必要があります。
- Google Cloud Marketplace と統合された商用リスティングとのデータ エクスチェンジの場合は、Google Cloud Marketplace と統合された商用リスティングを削除します。その後、非商用リスティングとしてリスティングを再作成できます。
- 複数のリージョンのリスティングを含むデータ エクスチェンジの場合は、
projects.locations.subscriptions.revokeメソッドを使用してすべてのアクティブ サブスクリプションを削除します。
データ エクスチェンジを削除するには、次の操作を行います。
コンソール
[共有(Analytics Hub)] ページに移動します。
データ交換のリストで、削除するデータ交換をクリックします。
[詳細] タブに移動します。
[エクスチェンジを削除] をクリックします。
[エクスチェンジを削除しますか?] ダイアログで「削除」と入力して削除を確定します。
[削除] をクリックします。
API
projects.locations.dataExchanges.delete メソッドを使用します。
DELETE https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataExchanges/DATAEXCHANGE_ID
API でデータ交換に対して実行できるタスクの詳細については、projects.locations.dataExchanges メソッドをご覧ください。
次のステップ
- リスティングの管理について詳細を確認する。
- Analytics Hub のユーザーロールを付与する方法を確認する。
- リスティングとデータ エクスチェンジを表示して登録する方法を確認する。
- 共有監査ロギングについて確認する。