データセットにタグを付ける
このページでは、タグを使用して 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/4567890123
や1234567/my_tag_key/my_tag_value
など)。RESOURCE_ID
: リソースのタイプを識別するための API ドメイン名(//bigquery.googleapis.com/
)を含む、データセットの完全な ID(例://bigquery.googleapis.com/projects/my_project/datasets/my_dataset
)。LOCATION
: データセットの場所
データセットに付加されたタグの一覧表示
次の手順では、データセットに直接接続されたタグ バインディングの一覧を提供します。親リソースから継承したタグは返されません。
Console
BigQuery ページに移動します。
[エクスプローラ] パネルでプロジェクトを開いて、データセットを選択します。
タグが [データセット情報] パネルに表示されます。
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/4567890123
や1234567/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 プロジェクトの匿名データ データセットを表示する権限のみが付与されます。タグを使用してこれらのメンバーのアクセスを制御できます。
キー
employee_type
と値intern
を使用してタグを作成します。コンソールで [IAM] ページに移動します。
データセット アクセスを制限するインターンが含まれる行を見つけて、その行の [プリンシパルを編集]
をクリックします。[ロール] メニューから、[BigQuery データセット閲覧者] を選択します。
[条件を追加] をクリックします。
[タイトル] フィールドと [説明] フィールドに、作成する IAM の条件を説明する値を入力します。
[条件作成ツール] タブで [追加] をクリックします。
[条件タイプ] メニューで、[リソース]、[タグ] の順に選択します。
[演算子] メニューで、[値を設定] を選択します。
[値パス] フィールドに、
ORGANIZATION/TAG_KEY/TAG_VALUE
の形式でタグ値のパスを入力します(例:example.org/employee_type/intern
)。この IAM 条件によって、
intern
タグを持つデータセットに対するインターンのアクセスが制限されます。条件を保存するには、[保存] をクリックします。
[権限を編集] ペインで行ったすべての変更を保存するには、[保存] をクリックします。
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 個のタグを添付できます。