アクセス制御の例

サンプル事例

以下に、全員が AnalystGroup という Google グループに属しているデータ サイエンティストのグループにアクセス権を与える例を示します。

データセットのデータへの読み取り / 書き込みアクセス

CompanyProject というプロジェクトに dataset1 と dataset2 が存在します。AnalystGroup1 は dataset1 のみを扱うデータ サイエンティストのグループで、AnalystGroup2 は dataset2 のみを扱うグループです。データ サイエンティストには各自が扱うデータセットのみ対する完全アクセス権(クエリ実行のためのアクセス権限を含む)を許可します。

データセットへの読み取り / 書き込みアクセス
データセット CompanyProject:dataset1 AnalystGroup1 に dataset1 への WRITER アクセス権を付与します。このロールは事前定義された IAM ロール bigquery.dataEditor にマッピングされます。
データセット CompanyProject:dataset2 AnalystGroup2 に dataset2 への WRITER アクセス権を付与します。このロールは事前定義された IAM ロール bigquery.dataEditor にマッピングされます。
プロジェクト CompanyProject AnalystGroup1 と AnalystGroup2 に CompanyProject への bigquery.user アクセス権を付与します。

データセットのレベルでデータ サイエンティストに WRITER アクセス権を付与すると、データセットのテーブル内でデータをクエリできるようになりますが、プロジェクトでのクエリジョブの実行権限は付与されません。アクセス権が付与されたデータセットに対してデータ サイエンティストがクエリジョブを実行できるようにするには、データ サイエンティストのグループに対して、プロジェクト レベルの事前定義ロール bigquery.user が付与されている必要があります。ロール bigquery.user では bigquery.jobs.create 権限が付与されます。

または、bigquery.jobs.create 権限を付与するプロジェクト レベルの IAM のカスタムロールに、データ サイエンティストのグループを追加することもできます。

プロジェクトのデータへの完全アクセス権

AnalystGroup は BigQuery を駆使するデータ サイエンティストのグループであり、CompanyProject というプロジェクトにおいて BigQuery の使用に関する全責任を負っています。このグループはメンバー全員にすべてのデータへの読み取り / 書き込み権限を与えようとしています。組織の他のグループでは、BigQuery 以外の Cloud Platform サービスは使用していますが、BigQuery は誰も使っていません。AnalystGroup は BigQuery 以外の Cloud Platform サービスは使用しません。

プロジェクトのデータへの完全アクセス権
プロジェクト CompanyProject AnalystGroup を事前定義ロール bigquery.admin に追加します。

組織全体にわたる完全アクセス権

CompanyA という組織では、Admin1 という名前の特定の人物を全プロジェクトのすべての BigQuery データの管理者にしようとしています。MonitoringServiceAccount は、組織内の全プロジェクトのすべてのテーブルのサイズをモニタリングするサービス アカウントです。

組織全体にわたる完全アクセス権
組織 CompanyA

company が、MonitoringServiceAccount の一定サイズを超えたテーブルを縮小して一定期間よりも古いデータを削除すべきだと判断した場合は、MonitoringServiceAccount を事前定義ロール bigquery.user に追加する必要があります。

同じプロジェクトのデータへの読み取りアクセス

AnalystGroup は CompanyProject というプロジェクトで分析サービスを担当しているデータ サイエンティストのグループです。OperationsServiceAccount は、CompanyProject:AppLogs データセットへの一括読み込みジョブによってアプリケーション ログを BigQuery に読み込むサービス アカウントです。AnalystGroup のメンバーにはログの変更は許可しません。

同じプロジェクトのデータへの読み取りアクセス
プロジェクト CompanyProject
  • OperationsServiceAccount を事前定義ロール bigquery.user に追加します。
  • AnalystGroup を事前定義ロール bigquery.user に追加します。
データセット CompanyProject:AppLogs

異なるプロジェクトのデータへの読み取りアクセス

AnalystGroup は CompanyAnalytics というプロジェクトで分析サービスを担当しているデータ サイエンティストのグループです。ただし、AnalystGroup が分析するデータは CompanyLogs という別のプロジェクトに存在します。OperationsServiceAccount は、CompanyLogs プロジェクトの各種データセットへの一括読み込みジョブによってアプリケーション ログを BigQuery に読み込むサービス アカウントです。

AnalystGroup は CompanyLogs プロジェクトにおいてデータの読み取りのみが許可されており、同プロジェクトで追加のストレージを作成したり、クエリジョブを実行したりすることはできません。その代わりに、AnalystGroup のメンバーは CompanyAnalytics プロジェクトを使用して業務を行い、出力を CompanyAnalytics プロジェクトに保持します。

異なるプロジェクトのデータへの読み取りアクセス
プロジェクト CompanyLogs
  • OperationsServiceAccount を事前定義ロール bigquery.admin に追加します。
  • AnalystGroup を事前定義ロール bigquery.dataViewer に追加します。
プロジェクト CompanyAnalytics
  • AnalystGroup を事前定義ロール bigquery.user に追加します。