BigQuery の IAM ロールと権限
このドキュメントでは、BigQuery の Identity and Access Management(IAM)のロールと権限について説明します。IAM を使用すると、特定の BigQuery リソースに対するアクセス権をきめ細かく設定し、他のリソースへのアクセスを防ぐことができます。IAM を使用すると、最小権限のセキュリティ原則を適用できます。この原則では、必要以上に多くの権限を付与しないことが規定されています。
プリンシパル(ユーザー、グループ、またはサービス アカウント)が Google Cloud API を呼び出す場合、そのプリンシパルにはリソースを使用するための適切な IAM 権限が必要です。プリンシパルに必要な権限を付与するには、プリンシパルに IAM ロールを付与します。
このドキュメントでは、プリンシパルが BigQuery リソースにアクセスできるように、IAM 事前定義ロールと IAM カスタムロールを使用する方法について説明します。
Google Cloud でのアクセス管理の概要を把握するには、IAM の概要をご覧ください。
IAM ロールのタイプ
ロールとは、一連の権限のことです。IAM で次のタイプのロールを使用して、BigQuery リソースへのアクセス権を付与できます。
ロールに 1 つ以上の権限が含まれているかどうかを確認するには、次のいずれかの方法を使用します。
- IAM 権限の検索リファレンス
gcloud iam roles describe
コマンド- IAM API の
roles.get()
メソッド
1 人のユーザーに複数のロールタイプを割り当てると、付与される権限は各ロールの権限の合算になります。
IAM を使用してリソースにアクセスする方法の詳細については、IAM ドキュメントのリソースへのアクセス権の付与、変更、取り消しをご覧ください。
カスタムロールの作成方法については、IAM ドキュメントのカスタムロールの作成と管理をご覧ください。
BigQuery での IAM ロール
権限は、ユーザー、グループ、サービス アカウントに直接には割り当てられません。代わりに、ユーザー、グループ、サービス アカウントに 1 つ以上の事前定義ロールまたはカスタムロールへのアクセス権を付与し、リソースに対するアクションの実行権限を付与します。
アクセス権は次の BigQuery リソースレベルで付与できます。
- 組織、フォルダ、プロジェクト
- 接続
- データセット
- テーブルまたはビュー
- ポリシータグ、行アクセス ポリシー、BigQuery データポリシー
組織レベルまたは Google Cloud プロジェクト レベルで適用されるロール
組織レベルおよびプロジェクト レベルでロールを割り当てると、BigQuery ジョブの実行権限、またはプロジェクトに含まれる BigQuery リソースすべてに対するアクセス権限が付与されます。
データセット レベルで適用されるロール
データセット レベルでロールを割り当てると、プロジェクトのリソースへの完全アクセス権を付与しなくても、特定のデータセットへのアクセス権を付与できます。IAM リソース階層では、BigQuery データセットはプロジェクトの子リソースにあたります。データセット レベルでロールを割り当てる方法について詳しくは、データセットへのアクセスの制御をご覧ください。
データセット内の個々のリソースに適用されるロール
データセットのリソースへの完全アクセス権を付与しなくても、データセット内の特定の種類のリソースにロールを個別に割り当てることができます。
以下の種類の個別のリソースにロールを適用できます。
- テーブル
- ビュー
以下の種類の個別のリソースにロールを適用することはできません。
- ルーティン
- モデル
テーブルレベルまたはビューレベルでロールを割り当てる方法の詳細は、テーブルまたはビューへのアクセスの制御をご覧ください。
BigQuery の IAM 事前定義ロール
次の表に、BigQuery の IAM 事前定義ロールと、各ロールに割り当てられた権限の一覧を示します。各権限は、それぞれ特定のリソースタイプに適用されます。
Role | Permissions |
---|---|
BigQuery Admin( Provides permissions to manage all resources within the project. Can manage all data within the project, and can cancel jobs from other users running within the project. Lowest-level resources where you can grant this role:
|
|
BigQuery Connection Admin(
|
|
BigQuery Connection User(
|
|
BigQuery Data Editor( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to:
When applied at the project or organization level, this role can also create new datasets. Lowest-level resources where you can grant this role:
|
|
BigQuery Data Owner( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to:
When applied at the project or organization level, this role can also create new datasets. Lowest-level resources where you can grant this role:
|
|
BigQuery Data Viewer( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to list all of the resources in the dataset (such as tables, views, snapshots, models, and routines) and to read their data and metadata with applicable APIs and in queries. When applied at the project or organization level, this role can also enumerate all datasets in the project. Additional roles, however, are necessary to allow the running of jobs. Lowest-level resources where you can grant this role:
|
|
BigQuery Filtered Data Viewer( Access to view filtered table data defined by a row access policy |
|
BigQuery Job User( Provides permissions to run jobs, including queries, within the project. Lowest-level resources where you can grant this role:
|
|
BigQuery Metadata Viewer( When applied to a table or view, this role provides permissions to:
This role cannot be applied to individual models or routines. When applied to a dataset, this role provides permissions to:
When applied at the project or organization level, this role provides permissions to:
Additional roles are necessary to allow the running of jobs. Lowest-level resources where you can grant this role:
|
|
BigQuery Read Session User( Provides the ability to create and use read sessions. Lowest-level resources where you can grant this role:
|
|
BigQuery Resource Admin( Administers BigQuery workloads, including slot assignments, commitments, and reservations. |
|
BigQuery Resource Editor( Manages BigQuery workloads, but is unable to create or modify slot commitments. |
|
BigQuery Resource Viewer( Can view BigQuery workloads, but cannot create or modify slot reservations or commitments. |
|
BigQuery Studio Admin( Combination role of BigQuery Admin, Dataform Admin, and Notebook Runtime Admin. |
|
BigQuery Studio User( Combination role of BigQuery Job User, BigQuery Read Session User, Dataform Code Creator, and Notebook Runtime User. |
|
BigQuery User( When applied to a dataset, this role provides the ability to read the dataset's metadata and list tables in the dataset. When applied to a project, this role also provides the ability to run jobs, including queries,
within the project. A principal with this role can enumerate their own jobs, cancel their own jobs, and
enumerate datasets within a project. Additionally, allows the creation of new datasets within the
project; the creator is granted the BigQuery Data Owner role ( Lowest-level resources where you can grant this role:
|
|
Masked Reader( Masked read access to sub-resources tagged by the policy tag associated with a data policy, for example, BigQuery columns |
|
BigQuery のカスタム IAM ロール
BigQuery のカスタム IAM ロールを作成するには、BigQuery の権限を使用して IAM カスタムロールで説明されている手順で操作します。
BigQuery の基本ロール
BigQuery の基本ロールについては、BigQuery の基本ロールと権限をご覧ください。
BigQuery の権限
次の表に、BigQuery で使用可能な権限を示します。これらは事前定義ロールに含まれており、カスタムロールの定義で使用できます。
権限 | 説明 |
---|---|
bigquery.bireservations.get |
BI Engine の予約を読み取ります。 |
bigquery.bireservations.update |
BI Engine の予約を更新します。 |
bigquery.capacityCommitments.create |
プロジェクトに容量コミットメントを作成します。 |
bigquery.capacityCommitments.delete |
容量コミットメントを削除します。 |
bigquery.capacityCommitments.get |
容量コミットメントに関する詳細を取得します。 |
bigquery.capacityCommitments.list |
プロジェクト内の容量コミットメントすべてを一覧表示します。 |
bigquery.capacityCommitments.update |
プロジェクト内の容量コミットメントすべてを更新します。 |
bigquery.config.update |
構成を作成します。 |
bigquery.config.get |
構成の詳細を取得します。 |
bigquery.connections.create |
プロジェクト内で新しい接続を作成します。 |
bigquery.connections.delete |
接続を削除します。 |
bigquery.connections.get |
接続のメタデータを取得します。認証情報は除外されます。 |
bigquery.connections.list |
プロジェクト内の接続を一覧表示します。 |
bigquery.connections.update |
接続とその認証情報を更新します。 |
bigquery.connections.updateTag |
接続のタグを更新します。 |
bigquery.connections.use |
接続構成を使用して、リモート データソースに接続します。 |
bigquery.connections.delegate |
承認済みの外部テーブルとリモート関数を作成するために接続を委任します。 |
bigquery.dataPolicies.create |
新しいデータポリシーを作成します。 |
bigquery.dataPolicies.delete |
データポリシーを削除します。 |
bigquery.dataPolicies.get |
データポリシーに関するメタデータを取得します。 |
bigquery.dataPolicies.getIamPolicy |
データポリシーの IAM 権限を読み取ります。 |
bigquery.dataPolicies.list |
プロジェクト内のデータポリシーを一覧表示します。 |
bigquery.dataPolicies.maskedGet |
データポリシーに関連付けられたポリシータグを持つ列のマスクされたデータを表示します。 |
bigquery.dataPolicies.setIamPolicy |
データポリシーの IAM 権限を設定します。 |
bigquery.dataPolicies.update |
データポリシーのメタデータを更新します。 |
bigquery.datasets.create |
新しい空白のデータセットを作成します。 |
bigquery.datasets.createTagBinding |
データセットにリソースタグ バインディングを作成します。 |
bigquery.datasets.delete |
データセットを削除します。 |
bigquery.datasets.deleteTagBinding |
データセットのリソースタグ バインディングを削除します。 |
bigquery.datasets.get |
データセットに関するメタデータと権限を取得します。Google Cloud コンソールで権限を表示するには、bigquery.datasets.getIamPolicy 権限も必要です。 |
bigquery.datasets.getIamPolicy |
Google Cloud コンソールでデータセットの IAM 権限を取得するオプションをユーザーに提供するために必要です。フェール オープン。権限を取得する操作を実際に実行できるかどうかは、bigquery.datasets.get 権限によって制限されます。 |
bigquery.datasets.link |
リンクされたデータセットを作成します。 |
bigquery.datasets.listTagBindings |
データセットのリソースタグ バインディングを一覧表示します。 |
bigquery.datasets.setIamPolicy |
Google Cloud コンソールでデータセットの IAM 権限を設定するオプションをユーザーに提供するために必要です。フェール オープン。権限を設定する操作を実際に実行できるかどうかは、bigquery.datasets.update 権限によって制限されます。 |
bigquery.datasets.update |
データセットのメタデータと権限を更新します。Google Cloud コンソールで権限を付与するには、bigquery.datasets.setIamPolicy 権限も必要です。 |
bigquery.datasets.updateTag |
データセットの Data Catalog タグを更新します。 |
bigquery.jobs.create |
プロジェクト内でジョブ(クエリを含む)を実行します。 |
bigquery.jobs.get |
ジョブのデータとメタデータを取得します1。 |
bigquery.jobs.list |
すべてのジョブを一覧表示し、任意のユーザーが送信した任意のジョブのメタデータを取得します。他のユーザーが送信したジョブについては、詳細とメタデータが削除されます。 |
bigquery.jobs.listAll |
すべてのジョブを一覧表示し、任意のユーザーが送信した任意のジョブのメタデータを取得します。 |
bigquery.jobs.listExecutionMetadata |
ユーザーが送信したジョブに関するすべてのジョブ実行メタデータを一覧表示します(機密情報を除く)。これは組織レベルでのみ適用でき、管理 UI で使用されます。 |
bigquery.jobs.delete |
ジョブのメタデータを削除します。 |
bigquery.jobs.update |
ジョブをキャンセルします1。 |
bigquery.models.create |
新しいML モデルを作成します。 |
bigquery.models.delete |
ML モデルを削除します。 |
bigquery.models.getData |
ML モデルのデータを取得します。モデル メタデータを取得するには、bigquery.models.getMetadata が必要です。 |
bigquery.models.getMetadata |
ML モデルのメタデータを取得します。モデルデータを取得するには、bigquery.models.getData が必要です。 |
bigquery.models.list |
ML モデルとモデルのメタデータを一覧表示します。 |
bigquery.models.updateData |
ML モデルのデータを更新します。モデル メタデータを更新するには、bigquery.models.updateMetadata が必要です。 |
bigquery.models.updateMetadata |
ML モデルのメタデータを更新します。モデルデータを更新するには、bigquery.models.updateData が必要です。 |
bigquery.models.export |
ML モデルをエクスポートします。 |
bigquery.models.updateTag |
モデルの Data Catalog タグを更新します。 |
bigquery.readsessions.create |
Storage Read API を使用して新しい読み取りセッションを作成します。 |
bigquery.readsessions.getData |
Storage Read API を使用して読み取りセッションからデータを読み取ります。 |
bigquery.readsessions.update |
Storage Read API を使用して読み取りセッションを更新します。 |
bigquery.reservations.create |
管理プロジェクトでスロット予約を作成します。 |
bigquery.reservations.delete |
スロット予約を削除します。 |
bigquery.reservations.get |
スロット予約の詳細を取得します。 |
bigquery.reservations.list |
管理プロジェクト内のすべてのスロット予約を一覧表示します。 |
bigquery.reservations.update |
スロット予約のプロパティを更新します。 |
bigquery.reservationAssignments.create |
予約割り当てを作成します。所有者プロジェクトと割り当て先リソースには、この権限が必要です。 |
bigquery.reservationAssignments.delete |
予約割り当てを削除します。この権限は、オーナー プロジェクトと割り当て先のリソースに対して必要です。 |
bigquery.reservationAssignments.list |
プロジェクト内の予約割り当てすべてを一覧表示します。 |
bigquery.reservationAssignments.search |
特定のプロジェクト、フォルダ、または組織の予約割り当てを見つけます。 |
bigquery.rowAccessPolicies.create |
テーブルに新しい行レベルのアクセス ポリシーを作成します。 |
bigquery.rowAccessPolicies.delete |
テーブルから行レベルのアクセス ポリシーを削除します。 |
bigquery.rowAccessPolicies.getFilteredData |
テーブルから、行レベルアクセス ポリシーの権限譲受人リストにあるプリンシパルにのみ表示するデータを取得します。この権限は、行レベルのアクセス ポリシー リソースにのみ付与することをおすすめします。 |
bigquery.rowAccessPolicies.list |
テーブルのすべての行レベルのアクセス ポリシーを表示します。 |
bigquery.rowAccessPolicies.overrideTimeTravelRestrictions |
行レベルのアクセス ポリシーがある、または以前に存在していたテーブルの過去のデータにアクセスします。 |
bigquery.rowAccessPolicies.getIamPolicy |
行アクセス ポリシーの IAM 権限を取得します。 |
bigquery.rowAccessPolicies.setIamPolicy |
行アクセス ポリシーの IAM 権限を設定します。 |
bigquery.rowAccessPolicies.update |
行レベルのアクセス ポリシーを再作成します。 |
bigquery.routines.create |
新しいルーティン(関数とストアド プロシージャ)を作成します。 |
bigquery.routines.delete |
ルーティンを削除します。 |
bigquery.routines.get |
ルーティンの定義とメタデータを取得します。 |
bigquery.routines.list |
ルーティンおよびルーティンのメタデータを一覧表示します。 |
bigquery.routines.update |
ルーティンの定義とメタデータを更新します。 |
bigquery.routines.updateTag |
ルーティンの Data Catalog タグを更新します。 |
bigquery.savedqueries.create |
保存したクエリを作成します。 |
bigquery.savedqueries.delete |
保存したクエリを削除します。 |
bigquery.savedqueries.get |
保存したクエリのメタデータを取得します。 |
bigquery.savedqueries.list |
保存したクエリの一覧を表示します。 |
bigquery.savedqueries.update |
保存したクエリを更新します。 |
bigquery.tables.create |
新しいテーブルを作成します。 |
bigquery.tables.createIndex |
テーブルの検索インデックスを作成します。 |
bigquery.tables.createSnapshot
|
新しいテーブル スナップショットを作成します。 |
bigquery.tables.createTagBinding
|
テーブルにリソースタグ バインディングを作成します。 |
bigquery.tables.delete |
テーブルを削除します。 |
bigquery.tables.deleteIndex |
テーブルの検索インデックスを削除します。 |
bigquery.tables.deleteSnapshot
|
テーブル スナップショットを削除します。 |
bigquery.tables.deleteTagBinding
|
テーブルのリソースタグ バインディングを削除します。 |
bigquery.tables.export |
BigQuery からテーブルのデータをエクスポートします。 |
bigquery.tables.get |
テーブルのメタデータを取得します。 テーブルのデータを取得するには、 bigquery.tables.getData が必要です。 |
bigquery.tables.getData |
テーブルのデータを取得します。この権限は、テーブルのデータを検索するために必要です。 テーブルのメタデータを取得するには、 bigquery.tables.get が必要です。 |
bigquery.tables.getIamPolicy |
テーブルの IAM ポリシーを読み取ります。 |
bigquery.tables.list |
テーブルとテーブルのメタデータを一覧表示します。 |
bigquery.tables.listEffectiveTags |
Cloud Resource Manager API を使用して有効なタグ バインディングを一覧表示します。--effective フラグが使用されている場合に確認されます。 |
bigquery.tables.listTagBindings |
Cloud Resource Manager API を使用してタグ バインディングを一覧表示します。 |
bigquery.tables.replicateData |
テーブルデータを複製します。この権限は、レプリカのマテリアライズド ビューを作成するために必要です。 |
bigquery.tables.restoreSnapshot
|
テーブル スナップショットを復元します。 |
bigquery.tables.setCategory |
テーブル スキーマにポリシータグを設定します。 |
bigquery.tables.setIamPolicy |
テーブルの IAM ポリシーを変更します。 |
bigquery.tables.update |
テーブルのメタデータを更新します。 |
bigquery.tables.updateData |
テーブルのデータを更新します。 |
bigquery.tables.updateTag |
テーブルの Data Catalog タグを更新します。 |
bigquery.transfers.get |
転送のメタデータを取得します。 |
bigquery.transfers.update |
転送を作成、更新、削除します。 |
1 ジョブを作成すると、作成者に、そのジョブの bigquery.jobs.get
権限および bigquery.jobs.update
権限に相当する権限が自動的に付与されます。
BigQuery ML タスクの権限
次の表に、BigQuery ML の一般的なタスクに必要な権限を示します。
権限 | 説明 |
---|---|
bigquery.jobs.create bigquery.models.create bigquery.models.getData bigquery.models.updateData |
CREATE MODEL ステートメントを使用して新しいモデルを作成する |
bigquery.jobs.create bigquery.models.create bigquery.models.getData bigquery.models.updateData bigquery.models.updateMetadata |
CREATE OR REPLACE MODEL ステートメントを使用して既存のモデルを置き換える |
bigquery.models.delete |
models.delete API を使用してモデルを削除する |
bigquery.jobs.create bigquery.models.delete |
DROP MODEL ステートメントを使用してモデルを削除する |
bigquery.models.getMetadata |
models.get API を使用してモデル メタデータを取得する |
bigquery.models.list |
models.list API を使用してモデルとそのメタデータを一覧表示する |
bigquery.models.updateMetadata |
models.delete API を使用してモデル メタデータを更新する。モデルの有効期限にゼロ以外の値を設定または更新する場合、bigquery.models.delete 権限も必要です。 |
bigquery.jobs.create bigquery.models.getData
|
ML.EVALUATE 、ML.PREDICT 、ML.TRAINING_INFO 、ML.WEIGHTS などの関数を使用して、評価、予測、モデル、特徴の検査を行います。 |
bigquery.jobs.create bigquery.models.export
|
モデルをエクスポートする |
bigquery.models.updateTag |
モデルの Data Catalog タグを更新します。 |
次のステップ
- データセット レベルでロールを割り当てる方法については、データセットへのアクセスの制御をご覧ください。
- テーブルまたはビューレベルでロールを割り当てる方法については、テーブルとビューへのアクセスの制御をご覧ください。