データセットにタグを付ける

このページでは、タグを使用して Identity and Access Management(IAM)ポリシーを BigQuery データセットに条件付きで適用する方法について説明します。

タグは、データセットに直接接続できる Key-Value ペア、またはデータセットが他の Google Cloud リソースから継承できる Key-Value ペアです。リソースに特定のタグがあるかどうかに基づいて、条件付きでポリシーを適用できます。たとえば、environment:dev タグを持つ任意のデータセットのプリンシパルに、BigQuery データ閲覧者のロールを条件付きで付与できます。

Google Cloud リソース階層でタグを使用する方法については、タグの概要をご覧ください。

必要な権限

BigQuery でタグを使用するには、次の権限が必要です。

  • タグをデータセットに付加するには、データセットに対する bigquery.datasets.createTagBinding IAM 権限と、添付するタグ値に対する組織レベルの resourcemanager.tagValueBindings.create 権限が必要です。
  • タグをデータセットから削除するには、データセットに対する bigquery.datasets.deleteTagBinding IAM 権限と、削除するタグ値に対する組織レベルの resourcemanager.tagValueBindings.delete 権限が必要です。
  • データセットに添付されたタグを一覧表示するには、bigquery.datasets.listTagBindings IAM 権限が必要です。

次の事前定義された IAM ロールには、必要な BigQuery の権限がすべて含まれています。

  • BigQuery データオーナー(roles/bigquery.dataOwner
  • BigQuery 管理者(roles/bigquery.admin

リソース マネージャーの権限は、タグのユーザー ロール(roles/resourcemanager.tagUser)に含まれています。

タグキーとタグ値を作成する

タグを付ける前に、タグを作成して値を構成する必要があります。タグキーとタグ値を作成するには、タグの作成タグ値の追加をご覧ください。

データセットにタグを付加する

タグを作成したら、それをデータセットに付加できます。任意のタグキーのデータセットに付加できるタグ値は 1 つのみです。

コマンドラインを使用してデータセットにタグを付加するには、gcloud alpha resource-manager tags bindings create コマンドを使用してタグ バインディング リソースを作成します。

gcloud alpha resource-manager tags bindings create \
    --tag-value=TAGVALUE_NAME \
    --parent=RESOURCE_ID \
    --location=LOCATION

以下を置き換えます。

  • TAGVALUE_NAME: 付加するタグ値の永続 ID または名前空間付きの名前(tagValues/45678901231234567/my_tag_key/my_tag_value など)。
  • RESOURCE_ID: リソースのタイプを識別するための API ドメイン名(//bigquery.googleapis.com/)を含む、データセットの完全な ID(例: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset)。
  • LOCATION: データセットの場所

データセットに付加されたタグの一覧表示

次の手順では、データセットに直接接続されたタグ バインディングの一覧を提供します。親リソースから継承したタグは返されません。

Console

  1. BigQuery ページに移動します。

    BigQuery に移動

  2. [エクスプローラ] パネルでプロジェクトを開いて、データセットを選択します。

    タグが [データセット情報] パネルに表示されます。

gcloud

リソースに付加されたタグ バインディングのリストを取得するには、gcloud alpha resource-manager tags bindings listコマンドを使用します。

gcloud alpha resource-manager tags bindings list \
    --parent=RESOURCE_ID \
    --location=LOCATION

以下を置き換えます。

  • RESOURCE_ID: リソースのタイプを識別するための API ドメイン名(//bigquery.googleapis.com/)を含む、データセットの完全な ID(例: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset)。

  • LOCATION: データセットの場所

出力は次のようになります。

name: tagBindings/%2F%2Fbigquery.googleapis.com%2Fprojects%2Fmy_project%2Fdatasets%2Fmy_dataset/tagValues/4567890123
parent: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset
tagValue: tagValues/4567890123

データセットからタグを取り外す

タグ バインディング リソースを削除すると、リソースからタグを取り外すことができます。タグを削除する必要がある場合は、まずタグを適用解除する必要があります。

コマンドラインを使用してデータセットからタグを取り外すには、gcloud alpha resource-manager tags bindings delete コマンドを使用してタグ バインディングを削除します。

gcloud alpha resource-manager tags bindings delete \
    --tag-value=TAGVALUE_NAME \
    --parent=RESOURCE_ID \
    --location=LOCATION

以下を置き換えます。

  • TAGVALUE_NAME: 付加するタグ値の永続 ID または名前空間付きの名前(tagValues/45678901231234567/my_tag_key/my_tag_value など)。
  • RESOURCE_ID: リソースのタイプを識別するための API ドメイン名(//bigquery.googleapis.com/)を含む、データセットの完全な ID(例: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset)。
  • LOCATION: データセットの場所

タグを削除

タグのキーまたは値自体を削除する前に、既存のタグ バインディング リソースをすべて削除する必要があります。タグキーとタグ値を削除するには、タグの削除をご覧ください。

例えば、組織の管理者であるとします。組織のデータ アナリストはすべてグループ analysts@example.com のメンバーで、プロジェクトの userData に対して BigQuery データ閲覧者 IAM ロールを持ちます。データ アナリストのインターンが 1 名雇用されています。このインターンには、会社のポリシーに従って、userData プロジェクトの匿名データ データセットを表示する権限のみが付与されます。タグを使用してこれらのメンバーのアクセスを制御できます。

  1. キー employee_type と値 intern を使用してタグを作成します

    タグのキーと値の作成例。

  2. コンソールで [IAM] ページに移動します。

    [IAM] に移動

  3. データセット アクセスを制限するインターンが含まれる行を見つけて、その行の [プリンシパルを編集] をクリックします。

  4. [ロール] メニューから、[BigQuery データセット閲覧者] を選択します。

  5. [条件を追加] をクリックします。

  6. [タイトル] フィールドと [説明] フィールドに、作成する IAM の条件を説明する値を入力します。

  7. [条件作成ツール] タブで [追加] をクリックします。

  8. [条件タイプ] メニューで、[リソース]、[タグ] の順に選択します。

  9. [演算子] メニューで、[値を設定] を選択します。

  10. [値パス] フィールドに、ORGANIZATION/TAG_KEY/TAG_VALUE の形式でタグ値のパスを入力します(例: example.org/employee_type/intern)。

    タグを使用した IAM 条件の例。

    この IAM 条件によって、intern タグを持つデータセットに対するインターンのアクセスが制限されます。

  11. 条件を保存するには、[保存] をクリックします。

  12. [権限を編集] ペインで行ったすべての変更を保存するには、[保存] をクリックします。

  13. intern タグの値を匿名データのデータセットに添付するには、コマンドラインを使用して gcloud alpha resource-manager tags bindings create コマンドを実行します。

    gcloud alpha resource-manager tags bindings create \
    --tag-value=tagValues/4567890123 \
    --parent=//bigquery.googleapis.com/projects/userData/datasets/anonymousData \
    --location=US
    

制限事項

  • タグ値を削除しても、その値を使用するタグ バインディングは BigQuery によって自動的に削除されません。タグ値の削除後は、タグ値 ID が必要になります。タグ値 ID が不明な場合、バインディングを削除する唯一の方法は、データセット全体を削除することです。

  • データセットには最大 10 個のタグを添付できます。

次のステップ