テーブルおよびビューへのアクセスの制御

このドキュメントでは、BigQuery テーブル ACL を使用してテーブルとビューへのアクセスを制御する方法について説明します。BigQuery テーブル ACL の概要については、テーブル アクセス制御の概要をご覧ください。

テーブルまたはビューを作成すると、次の方法でポリシーを設定できます。

  • BigQuery ウェブ UI を使用する
  • bq set-iam-policy コマンドを使用する
  • tables.setIamPolicy メソッドを呼び出す

BigQuery テーブル ACL を使用すると、論理ビュー、データセット レベルの承認済みビューのどちらに対するアクセス権も設定できます。論理ビューでは、BigQuery テーブル ACL を使用して共有した、他のソーステーブルおよびビューを参照することもできます。

準備

  1. BigQuery テーブル ACL で使用するテーブルまたはビューを作成します。

  2. このトピックの手順を実行するユーザーに、BigQuery データオーナー(roles/bigquery.dataOwner)ロールまたは BigQuery 管理者(roles/bigquery.admin)ロールを付与します。

  3. Identity and Access Management(IAM)ポリシーの詳細については、ポリシーについてポリシーのリファレンス トピックをご覧ください。

アクセス ポリシーの作成

テーブルまたはビューのアクセス ポリシーを作成するには、次のようにします。

Console

  1. Cloud Console で BigQuery ウェブ UI を開きます。

    Cloud Console に移動

  2. ナビゲーション パネルの [リソース] セクションで、プロジェクトを選択します。

  3. テーブルまたはビューを含むデータセットを選択します。

  4. テーブルまたはビューを選択します。

  5. テーブルへのアクセス権を変更する場合は、[テーブルを共有] をクリックします。ビューへのアクセス権を変更する場合は、[Share view] をクリックします。

  6. [テーブルの権限] または [権限を表示] ページが開きます。[メンバーを追加] に、テーブルまたはビューへのアクセスを許可するユーザーのメールアドレスを入力します。

  7. [ロールを選択] プルダウンで、ユーザーに付与するロールを選択します。joe@example.com に BigQuery データ閲覧者(roles/bigquery.dataViewer)ロールを付与する例を、下図に示します。

    テーブルの権限

  8. [完了] をクリックします。

bq

  1. 既存のポリシーをローカル ファイルに取得します。

    bq get-iam-policy \
     project-id:dataset.table_or_view \
     > policy.json
    

    ここで

    • project-id はプロジェクト ID です。
    • dataset は、更新するリソース(テーブルまたはビュー)を含むデータセットの名前です。
    • table_or_view は、更新するリソースの名前です。

    テーブルまたはビューの特定の例と、ポリシー出力をファイルにリダイレクトするその他の例:

    • bq get-iam-policy dataset1.table1 > policy.json
    • bq get-iam-policy --project_id=project1 -t dataset1.table1 > policy.json
    • bq get-iam-policy project1:dataset1.table1 > policy.json
  2. ポリシーにメンバーをまだ追加していない場合、policy.json ファイルには etag 値が含まれ、その他のフィールドは含まれません。policy.json ファイルのフォーマットの詳細については、ポリシーについてをご覧ください。

  3. 初めてメンバーを追加する場合は、bindings フィールドをポリシーに追加します。たとえば、joe@example.com に BigQuery データ閲覧者(roles/bigquery.dataViewer)ロールを追加するには、次のようにします。

    "bindings": [
     {
       "members": [
         "user:joe@example.com"
       ],
       "role": "roles/bigquery.dataViewer"
     }
    ]
    

    既存のバインディングにメンバーを追加する場合は、既存メンバーの後ろにそのメンバーを追加します。この例では、既存のバインディングで jane@example.com に BigQuery データ閲覧者(roles/bigquery.dataViewer)ロールを付与する方法を示しています。

    "members": [
           "user:joe@example.com",
           "user:jane@example.com"
         ],
         "role": "roles/bigquery.dataViewer"
       }
    
  4. ポリシーを更新します。

    bq set-iam-policy \
     project-id:dataset.table_or_view \
     policy.json
    

    IAM ポリシー スキーマのバージョンについては、ポリシー バージョンをご覧ください。

API

  1. tables.getIamPolicy を呼び出して、現在のポリシーを取得します。

  2. ポリシーを編集してメンバーやバインディングを追加します。ポリシーの形式については、bq の例をご覧ください。

  3. tables.setIamPolicy を呼び出して、新しいポリシーを書き込みます。

IAM ポリシー スキーマのバージョンについては、ポリシー バージョンをご覧ください。

アクセス ポリシーの更新

テーブルまたはビューのアクセス ポリシーを更新するには、次のようにします。

Console

  1. Cloud Console で BigQuery ウェブ UI を開きます。

    Cloud Console に移動

  2. ナビゲーション パネルの [リソース] セクションで、プロジェクトを選択します。

  3. テーブルまたはビューを含むデータセットを選択します。

  4. テーブルまたはビューを選択します。

  5. テーブルへのアクセス権を変更する場合は、[テーブルを共有] をクリックします。ビューへのアクセス権を変更する場合は、[Share view] をクリックします。

  6. [テーブルの権限] または [権限を表示] ページが開きます。

    • 新しいメンバーを追加したい場合は、アクセス ポリシーの作成と同じ方法を使用します。

    • ユーザーのアクセス権を削除するには、[メンバーの検索] フィールドを使用してユーザーを検索します。ユーザーを削除するグループごとに、グループを展開し、そのユーザーの [削除] ボタンをクリックします。

    • ユーザーのグループ メンバーシップを変更する場合は、上記の 2 つの手順で追加や削除を行います。

  7. 必要に応じて、アクセス権を追加、変更、削除するユーザーに対して手順を繰り返します。完了したら、[完了] をクリックします。

bq

  1. 既存のポリシーをローカル ファイルに取得します。

    bq get-iam-policy --format=prettyjson \
     project-id:dataset.table_or_view \
     > policy.json
    

    ここで

    • project-id はプロジェクト ID です。
    • dataset は、更新するテーブルが含まれているデータセットの名前です。
    • table_or_view は、更新するテーブルまたはビューの名前です。

    テーブルまたはビューの特定の例と、ポリシー出力をファイルにリダイレクトするその他の例:

    • bq get-iam-policy dataset1.table1 > policy.json
    • bq get-iam-policy --project_id=project1 -t dataset1.table1 > policy.json
    • bq get-iam-policy project1:dataset1.table1 > policy.json
  2. 必要に応じて policy.json を変更します。

    policy.json ファイルのフォーマットの詳細については、ポリシーについてをご覧ください。

    IAM ポリシー スキーマのバージョンについては、ポリシー バージョンをご覧ください。

  3. ポリシーを更新します。

    bq set-iam-policy \
     project-id:dataset.table_or_view \
     policy.json
    

API

  1. tables.getIamPolicy を呼び出して、現在のポリシーを取得します。

  2. ポリシーを編集してメンバーやバインディングを追加します。

    ポリシーに必要な形式については、ポリシー リファレンスのトピックをご覧ください。

  3. tables.setIamPolicy を呼び出して、更新されたポリシーを書き込みます。

Identity and Access Management ポリシーの詳細については、ポリシーについてポリシーのリファレンス トピックをご覧ください。

次のステップ

  • よくある質問を確認する。
  • BigQuery テーブル ACL 管理アクティビティの監査ログについて、監査ログを確認する。