データセット レベルのアクセス制御の変更
2026 年 3 月 17 日以降、データセットのアクセス制御を表示する、または INFORMATION_SCHEMA.OBJECT_PRIVILEGES ビューをクエリするには、bigquery.datasets.getIamPolicy Identity and Access Management(IAM)権限が必要になります。データセットのアクセス制御を更新する、または API を使用してアクセス制御付きのデータセットを作成するには、bigquery.datasets.setIamPolicy 権限が必要です。
早期適用を有効にする
2026 年 3 月 17 日より前に、この権限変更の早期適用を有効にできます。これを有効にすると、データセットのアクセス制御を取得するには bigquery.datasets.getIamPolicy 権限が必要となり、データセットのアクセス制御を更新する、またはアクセス制御付きのデータセットを API で作成するには bigquery.datasets.setIamPolicy 権限が必要となります。
早期適用を有効にするには、組織レベルまたはプロジェクト レベルで enable_fine_grained_dataset_acls_option 構成設定を TRUE に設定します。構成設定を有効にする手順については、構成設定を管理するをご覧ください。
構成設定の例
次の例は、enable_fine_grained_dataset_acls_option の構成設定を設定および削除する方法を示したものです。
組織の設定を構成する
組織設定を構成するには、ALTER ORGANIZATION SET OPTIONS DDL ステートメントを使用します。次の例では、組織レベルで enable_fine_grained_dataset_acls_option を TRUE に設定しています。
ALTER ORGANIZATION SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = TRUE);
REGION は、組織に関連付けられているリージョン(us、europe-west6 など)に置き換えます。
次の例では、組織レベルの enable_fine_grained_dataset_acls_option 設定をクリアしています。
ALTER ORGANIZATION SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = FALSE);
プロジェクトの構成
プロジェクトを構成するには、ALTER PROJECT SET OPTIONS DDL ステートメントを使用します。ALTER PROJECT SET OPTIONS DDL ステートメントは、必要に応じて project_id 変数を受け入れます。project_id が指定されていない場合、デフォルトはクエリが実行される現在のプロジェクトです。
次の例では、enable_fine_grained_dataset_acls_option が TRUE に設定されます。
ALTER PROJECT PROJECT_ID SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = TRUE);
PROJECT_ID は、実際のプロジェクト ID に置き換えます。
次の例では、プロジェクト レベルの enable_fine_grained_dataset_acls_option 設定をクリアしています。
ALTER PROJECT PROJECT_ID SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = FALSE);
カスタムロールに対する変更
この必要な権限に対する変更が適用されると、既存のカスタムロール(bigquery.datasets.get、bigquery.datasets.create、bigquery.datasets.update のいずれかの権限は持っているが、bigquery.datasets.getIamPolicy と bigquery.datasets.setIamPolicy の権限を持っていないもの)に影響が生じます。
bigquery.datasets.get、bigquery.datasets.update、bigquery.datasets.create の権限のみを持つカスタムロールをこれまでどおり機能させたい場合は、2026 年 3 月 17 日までにカスタムロールを更新して bigquery.datasets.getIamPolicy または bigquery.datasets.setIamPolicy の権限を追加する必要があります。カスタムロールでデータセットのメタデータのみを表示または更新する必要がある場合は、新しい dataset_view パラメータと update_mode パラメータを使用します。
BigQuery の事前定義ロールは、この変更の影響を受けません。bigquery.datasets.get 権限を付与するすべての事前定義ロールは、bigquery.datasets.getIamPolicy 権限も付与します。bigquery.datasets.update 権限を付与するすべての事前定義ロールは、bigquery.datasets.setIamPolicy 権限も付与します。
bq コマンドライン ツールのコマンドに対する変更
早期適用を有効にすると、次の bq ツールコマンドが影響を受けます。
bq show
次のフラグを指定して、bq show コマンドを使用できます。
--dataset_view={METADATA|ACL|FULL}- データセットのアクセス制御またはメタデータを表示するときに権限を適用する方法を指定します。次の値のいずれかを使用できます。
METADATA: データセットのメタデータのみを表示します。この値にはbigquery.datasets.get権限が必要です。ACL: データセットのアクセス制御のみを表示します。この値にはbigquery.datasets.getIamPolicy権限が必要です。FULL: データセットのメタデータとアクセス制御の両方を表示します。この値にはbigquery.datasets.get権限とbigquery.datasets.getIamPolicy権限が必要です。
bq update
次のフラグを指定して、bq update コマンドを使用できます。
--update_mode={UPDATE_METADATA|UPDATE_ACL|UPDATE_FULL}- データセットのアクセス制御またはメタデータを更新するときに権限を適用する方法を指定します。次の値のいずれかを使用できます。
UPDATE_METADATA: データセットのメタデータのみを更新します。この値にはbigquery.datasets.update権限が必要です。UPDATE_ACL: データセットのアクセス制御のみを更新します。この値にはbigquery.datasets.setIamPolicy権限が必要です。UPDATE_FULL: データセットのメタデータとアクセス制御の両方を更新します。この値にはbigquery.datasets.update権限とbigquery.datasets.setIamPolicy権限が必要です。
データ制御言語(DCL)ステートメントに対する変更
早期適用を有効にすると、データ制御言語(DCL)を使ってデータセットに対して GRANT や REVOKE のステートメントを実行するために、以下の権限が必要になります。
bigquery.datasets.setIamPolicy
INFORMATION_SCHEMA ビュークエリに対する変更
早期適用を有効にすると、INFORMATION_SCHEMA.OBJECT_PRIVILEGES ビューにクエリを実行するには bigquery.datasets.getIamPolicy 権限が必要になります。
API メソッドに対する変更
早期適用を有効にすると、次の REST v2 API データセット メソッドが影響を受けます。
datasets.get メソッド
datasets.get メソッドには、dataset_view という名前のパスパラメータが追加されています。
このパラメータを使用すると、datasets.get メソッドから返される情報をより詳細に制御できます。dataset_view パラメータを使用すると、アクセス制御とメタデータの両方を常に返すのではなく、メタデータのみ、アクセス制御のみ、または両方を返すかどうかを指定できます。
データセット リソースの access フィールドには、データセットのアクセス制御が含まれています。friendlyName、description、labels などの他のフィールドは、データセットのメタデータを表します。
次の表は、dataset_view パラメータでサポートされているさまざまな値に必要な権限と API レスポンスをまとめたものです。
| パラメータ値 | 必要な権限 | API レスポンス |
|---|---|---|
DATASET_VIEW_UNSPECIFIED(または空) |
|
デフォルト値。データセットのメタデータとアクセス制御を返します。 |
METADATA |
|
データセットのメタデータを返します。 |
ACL |
|
データセットのアクセス制御、必須フィールド、出力専用のデータセット リソースのフィールドを返します。 |
FULL |
|
データセットのメタデータとアクセス制御を返します。 |
早期適用を有効にしていない場合、または有効にした後に無効にした場合は、dataset_view パラメータに METADATA または ACL の値を指定して利用できます。FULL と DATASET_VIEW_UNSPECIFIED(または空)の値はデフォルトで以前の動作になります。bigquery.datasets.get 権限を使用すると、メタデータとアクセス制御の両方を取得できます。
例
次の例では、dataset_view パラメータが METADATA に設定された GET リクエストを送信します。
GET https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?datasetView=METADATA&key=YOUR_API_KEY HTTP/1.1次のように置き換えます。
- YOUR_PROJECT: プロジェクトの名前
- YOUR_DATASET: データセットの名前
- YOUR_API_KEY: 自分の API キー
datasets.update メソッド
datasets.update メソッドには、update_mode という名前のパスパラメータが追加されています。
このパラメータを使用すると、datasets.update メソッドで更新されるフィールドをより詳細に制御できます。update_mode パラメータを使用すると、アクセス制御とメタデータの両方の更新を常に許可するのではなく、メタデータのみ、アクセス制御のみ、または両方を更新するかどうかを指定できます。
データセット リソースの access フィールドには、データセットのアクセス制御が含まれています。friendlyName、description、labels などの他のフィールドは、データセットのメタデータを表します。
次の表は、update_mode パラメータでサポートされているさまざまな値に必要な権限と API レスポンスをまとめたものです。
| パラメータ値 | 必要な権限 | API レスポンス |
|---|---|---|
UPDATE_MODE_UNSPECIFIED(または空) |
|
デフォルト値。データセットの更新されたメタデータとアクセス制御を返します。 |
UPDATE_METADATA |
|
データセットの更新されたメタデータを返します。 |
UPDATE_ACL |
|
データセットの更新されたアクセス制御、必須フィールド、出力専用のデータセット リソース内のフィールドを返します。 |
UPDATE_FULL |
|
データセットの更新されたメタデータとアクセス制御を返します。 |
早期適用を有効にしない場合、または有効にした後に無効にした場合、BigQuery は以前の動作に戻ります。つまり、bigquery.datasets.update 権限だけで、メタデータとアクセス制御の両方を更新できます。
例
次の例では、update_mode パラメータが METADATA に設定された PUT リクエストを送信します。
PUT https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?updateMode=METADATA&key=YOUR_API_KEY HTTP/1.1次のように置き換えます。
- YOUR_PROJECT: プロジェクトの名前
- YOUR_DATASET: データセットの名前
- YOUR_API_KEY: API キーの名前
datasets.patch メソッド
datasets.patch メソッドには、update_mode という名前のパスパラメータが追加されています。
このパラメータを使用すると、datasets.patch メソッドで更新されるフィールドをより詳細に制御できます。update_mode パラメータを使用すると、アクセス制御とメタデータの両方の更新を常に許可するのではなく、メタデータのみ、アクセス制御のみ、または両方を更新するかどうかを指定できます。
データセット リソースの access フィールドには、データセットのアクセス制御が含まれています。friendlyName、description、labels などの他のフィールドは、データセットのメタデータを表します。
次の表は、update_mode パラメータでサポートされているさまざまな値に必要な権限と API レスポンスをまとめたものです。
| パラメータ値 | 必要な権限 | API レスポンス |
|---|---|---|
UPDATE_MODE_UNSPECIFIED(または空) |
|
デフォルト値。データセットの更新されたメタデータとアクセス制御を返します。 |
UPDATE_METADATA |
|
データセットの更新されたメタデータを返します。 |
UPDATE_ACL |
|
データセットの更新されたアクセス制御、必須フィールド、出力専用のデータセット リソース内のフィールドを返します。 |
UPDATE_FULL |
|
データセットの更新されたメタデータとアクセス制御を返します。 |
早期適用を有効にしない場合、または有効にした後に無効にした場合、BigQuery は以前の動作に戻ります。つまり、bigquery.datasets.update 権限だけで、メタデータとアクセス制御の両方を更新できます。
例
次の例では、update_mode パラメータが METADATA に設定された PUT リクエストを送信します。
PUT https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?updateMode=METADATA&key=YOUR_API_KEY HTTP/1.1次のように置き換えます。
- YOUR_PROJECT: プロジェクトの名前
- YOUR_DATASET: データセットの名前
- YOUR_API_KEY: API キーの名前
datasets.insert メソッド
早期適用を有効にして datasets.insert メソッドを使用してアクセス制御でデータセットを作成する場合、BigQuery は bigquery.datasets.create 権限と bigquery.datasets.setIamPolicy 権限がユーザーに付与されていることを確認します。
API を使用してアクセス制御なしでデータセットを作成する場合は、bigquery.datasets.create 権限のみが必要です。