テーブル、ビュー、データセットにタグを付ける

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

タグを使用すると、IAM ポリシーで BigQuery のテーブル、ビューおよびデータセットに対して、条件付きでアクセスを拒否することもできます(プレビュー)。詳細については、拒否ポリシーをご覧ください。

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

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

まだ存在しないリソースを含め、関連する多くの BigQuery リソースに権限を同時に付与する場合は、IAM Conditions の使用を検討してください。

制限事項

  • テーブルタグは、BigQuery Omni テーブル、非表示データセットのテーブル、一時テーブルではサポートされていません。データセットタグは、BigQuery Omni データセットではサポートされていません。また、BigQuery Omni のクロスリージョン クエリでは、他のリージョンのテーブルのアクセス制御チェック中にタグを使用しません。

  • テーブルまたはデータセットに適用できるタグは最大 50 個です。

  • ワイルドカード クエリで参照されるすべてのテーブルは、タグキーと値の組が完全に同じでなければなりません。

  • データセットまたはテーブルへの条件付きアクセス権を持つユーザーは、 Trusted Cloud コンソールからそのリソースに対する権限を変更できません。権限の変更は、bq ツールと BigQuery API でのみサポートされます。

  • BigQuery の外部のサービスには、IAM タグ条件を適切に検証できないものもあります。タグ条件が正の場合、つまり、そのリソースに特定のタグがあるときだけ、ユーザーにそのリソースのロールが付与される場合、適用されているタグに関係なく、リソースへのアクセスは拒否されます。タグ条件が負の場合、つまり、そのリソースに特定のタグがないときにだけユーザーにそのリソースのロールが付与される場合、条件はチェックされません。

    たとえば、Data Catalog では、BigQuery のデータセットとテーブルの IAM タグ条件を検証できません。employee_type=intern タグを持つデータセットに対する BigQuery データ閲覧者ロールをインターンに付与する条件付き IAM ポリシーがあるとします。これは正のタグ条件であるため、そのデータセットに employee_type=intern タグがある場合でも、インターンは Data Catalog で検索してデータセットを表示することはできません。このタグ条件を負の値に変更して、インターンが employee_type=intern タグを持たないデータセットのみを表示できるようにすると、チェックは完全にスキップされ、インターンは BigQuery で通常アクセスできなかったデータセットを表示できるようになります。

必要なロール

このドキュメントの各タスクを実行するために必要な権限をユーザーに付与する IAM ロールを付与する必要があります。

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

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

タグの追加と削除を行う Resource Manager の権限は、タグユーザー ロールroles/resourcemanager.tagUser)に含まれています。

必要な権限

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

操作 BigQuery インターフェース(API、CLI、コンソール)と Terraform Cloud Resource Manager API または gcloud
テーブルまたはビューにタグを付ける
  • テーブルまたはビューに対する bigquery.tables.createTagBinding 権限
  • タグ値に対する resourcemanager.tagValueBindings.create 権限
  • テーブルまたはビューの作成時にタグを付ける bigquery.tables.create 権限
  • テーブルまたはビューの更新時にタグを付ける bigquery.tables.update 権限
  • テーブルまたはビューに対する bigquery.tables.createTagBinding 権限
  • タグ値に対する resourcemanager.tagValueBindings.create 権限
テーブルまたはビューからタグを削除する
  • テーブルまたはビューに対する bigquery.tables.deleteTagBinding 権限
  • タグ値に対する resourcemanager.tagValueBindings.delete 権限
  • テーブルまたはビューの更新時にタグを削除する bigquery.tables.update 権限
  • テーブルまたはビューに対する bigquery.tables.deleteTagBinding 権限
  • タグ値に対する resourcemanager.tagValueBindings.delete 権限
データセットにタグを付ける
  • データセットに対する bigquery.datasets.createTagBinding 権限
  • タグ値に対する resourcemanager.tagValueBindings.create 権限
  • データセットの作成時にタグを付ける bigquery.datasets.create 権限
  • データセットの更新時にタグを付ける bigquery.datasets.update 権限
  • データセットに対する bigquery.datasets.createTagBinding 権限
  • タグ値に対する resourcemanager.tagValueBindings.create 権限
データセットからタグを削除する
  • データセットに対する bigquery.datasets.deleteTagBinding 権限
  • タグ値に対する resourcemanager.tagValueBindings.delete 権限
  • データセットの更新時にタグを削除する bigquery.datasets.update 権限
  • データセットに対する bigquery.datasets.deleteTagBinding 権限
  • タグ値に対する resourcemanager.tagValueBindings.delete 権限

Trusted Cloud コンソールでタグキーとキー値を一覧表示するには、次の権限が必要です。

  • 親組織またはプロジェクトに関連付けられているタグキーを一覧表示するには、タグキーの親レベルの resourcemanager.tagKeys.list 権限および各タグキーの resourcemanager.tagKeys.get 権限が必要です。BigQuery コンソールでタグキーを一覧表示するには、データセット名をクリックして [詳細を編集] をクリックするか、テーブル名またはビュー名をクリックして [詳細] > [詳細を編集] をクリックします。

  • 親組織またはプロジェクトに関連付けられているキーのタグ値を一覧表示するには、タグ値の親レベルの resourcemanager.tagValues.list 権限および各タグ値の resourcemanager.tagValues.get 権限が必要です。BigQuery コンソールでタグのキー値を一覧表示するには、データセット名をクリックして [詳細を編集] をクリックするか、テーブル名またはビュー名をクリックして [詳細] > [詳細を編集] をクリックします。

Cloud Resource Manager API または gcloud でタグを使用するには、次の権限が必要です。

  • Cloud Resource Manager API または gcloud CLI を使用してテーブルまたはビューに適用されているタグを一覧表示するには、bigquery.tables.listTagBindings IAM 権限が必要です。
  • テーブルまたはビューの有効なタグを一覧表示するには、bigquery.tables.listEffectiveTags IAM 権限が必要です。
  • Cloud Resource Manager API または gcloud CLI を使用してデータセットに適用されているタグを一覧表示するには、bigquery.datasets.listTagBindings IAM 権限が必要です。
  • データセットの有効なタグを一覧取得するには、bigquery.datasets.listEffectiveTags IAM 権限が必要です。

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

タグを作成してから BigQuery リソースに適用することも、Trusted Cloud コンソールでリソースを作成するときにタグを手動で作成することもできます。

タグキーとタグ値の作成については、Resource Manager ドキュメントのタグの作成タグ値の追加をご覧ください。

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

以降のセクションでは、新しいデータセットと既存のデータセットにタグを適用する方法、データセットに適用されたタグを一覧取得する方法、データセットからタグを削除する方法について説明します。

新しいデータセットの作成時にタグを適用する

タグを作成したら、新しい BigQuery データセットに適用できます。任意のタグキーのデータセットに適用できるタグ値は 1 つのみです。データセットに適用できるタグは最大 50 個までです。

コンソール

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. [エクスプローラ] ペインで、データセットを作成するプロジェクトを選択します。

  3. アクションを表示> [データセットを作成] をクリックします。

  4. 新しいデータセットの情報を入力します。詳細については、データセットを作成するをご覧ください。

  5. [タグ] セクションを開きます。

    1. 既存のタグを適用する手順は次のとおりです。

      1. [スコープの選択] の横にあるプルダウン矢印をクリックし、[現在の対象] - [現在の組織を選択] または [現在のプロジェクトを選択] を選択します。

        または、[スコープの選択] をクリックして、リソースを検索するか、現在のリソースのリストを表示します。

      2. [キー 1] と [値 1] で、リストから適切な値を選択します。

    2. 新しいタグを手動で入力する手順は次のとおりです。

      1. [スコープを選択] の横にあるプルダウン矢印をクリックし、[ID を手動で入力] > [組織]、[プロジェクト]、または [タグ] を選択します。

      2. プロジェクトまたは組織のタグを作成する場合は、ダイアログで PROJECT_ID または ORGANIZATION_ID を入力し、[保存] をクリックします。

      3. [キー 1] と [値 1] で、リストから適切な値を選択します。

    3. 省略可: テーブルにタグを追加するには、[タグを追加] をクリックして、前の手順に沿って操作します。

  6. [データセットを作成] をクリックします。

SQL

CREATE SCHEMA ステートメントを使用します。

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    CREATE SCHEMA PROJECT_ID.DATASET_ID
    OPTIONS (
      tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID。
    • DATASET_ID: 作成するデータセットの ID。
    • TAG_KEY_1: データセットの最初のタグとして設定する名前空間付きのキー名'my-project/env''556741164180/department' など)。
    • TAG_VALUE_1: タグ値の短い名前'prod''sales' など)。
    • TAG_KEY_2: 2 番目のタグの名前空間付きキー名。
    • TAG_VALUE_2: 2 番目のタグの値の短い名前。

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

bq

--add_tags フラグを指定して bq mk --dataset コマンドを使用します。

bq mk --dataset \
    --add_tags=TAG \
    PROJECT_ID:DATASET_ID

次のように置き換えます。

  • TAG: 新しいデータセットに適用するタグ。複数のタグを指定する場合はカンマで区切ります。例: 556741164180/env:prod,myProject/department:sales。各タグには、名前空間付きのキー名と値の略称が必要です。
  • PROJECT_ID: データセットを作成するプロジェクトの ID。
  • DATASET_ID: 新しいデータセットの ID。

Terraform

google_bigquery_dataset リソースを使用します。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

次の例では、my_dataset という名前のデータセットを作成し、resource_tags フィールドに値を入力してタグを適用します。


# Create tag keys and values
data "google_project" "default" {}

resource "google_tags_tag_key" "env_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "env2"
}

resource "google_tags_tag_key" "department_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "department2"
}

resource "google_tags_tag_value" "env_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.env_tag_key.name}"
  short_name = "prod"
}

resource "google_tags_tag_value" "department_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.department_tag_key.name}"
  short_name = "sales"
}

# Create a dataset
resource "google_bigquery_dataset" "default" {
  dataset_id                      = "my_dataset"
  default_partition_expiration_ms = 2592000000  # 30 days
  default_table_expiration_ms     = 31536000000 # 365 days
  description                     = "dataset description"
  location                        = "US"
  max_time_travel_hours           = 96 # 4 days

  # Attach tags to the dataset
  resource_tags = {
    (google_tags_tag_key.env_tag_key.namespaced_name) : google_tags_tag_value.env_tag_value.short_name,
    (google_tags_tag_key.department_tag_key.namespaced_name) : google_tags_tag_value.department_tag_value.short_name
  }
}

Trusted Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。

Cloud Shell を準備する

  1. Cloud Shell を起動します。
  2. Terraform 構成を適用するデフォルトの Trusted Cloud プロジェクトを設定します。

    このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。

ディレクトリを準備する

Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。

  1. Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は .tf にする必要があります(例: main.tf)。このチュートリアルでは、このファイルを main.tf とします。
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。

    新しく作成した main.tf にサンプルコードをコピーします。

    必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。

  3. 環境に適用するサンプル パラメータを確認し、変更します。
  4. 変更を保存します。
  5. Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
    terraform init

    最新バージョンの Google プロバイダを使用する場合は、-upgrade オプションを使用します。

    terraform init -upgrade

変更を適用する

  1. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  2. 次のコマンドを実行します。プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。

  3. Trusted Cloud プロジェクトを開いて結果を表示します。 Trusted Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。

API

datasets.insert メソッドを呼び出して、タグを resource_tags フィールドに追加します。

既存のデータセットにタグを適用する

タグを作成したら、既存のデータセットに適用できます。任意のタグキーのデータセットに適用できるタグ値は 1 つのみです。

コンソール

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

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

  3. [データセット情報] セクションで、 [詳細を編集] をクリックします。

  4. [タグ] セクションを開きます。

    1. 既存のタグを適用する手順は次のとおりです。

      1. [スコープの選択] の横にあるプルダウン矢印をクリックし、[現在の対象] - [現在の組織を選択] または [現在のプロジェクトを選択] を選択します。

        または、[スコープの選択] をクリックして、リソースを検索するか、現在のリソースのリストを表示します。

      2. [キー 1] と [値 1] で、リストから適切な値を選択します。

    2. 新しいタグを手動で入力する手順は次のとおりです。

      1. [スコープを選択] の横にあるプルダウン矢印をクリックし、[ID を手動で入力] > [組織]、[プロジェクト]、または [タグ] を選択します。

      2. プロジェクトまたは組織のタグを作成する場合は、ダイアログで PROJECT_ID または ORGANIZATION_ID を入力し、[保存] をクリックします。

      3. [キー 1] と [値 1] で、リストから適切な値を選択します。

    3. 省略可: テーブルにタグを追加するには、[タグを追加] をクリックして、前の手順に沿って操作します。

  5. [保存] をクリックします。

SQL

ALTER SCHEMA SET OPTIONS ステートメントを使用します。

次の例では、既存のデータセットのすべてのタグを上書きします。

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    ALTER SCHEMA PROJECT_ID.DATASET_ID
    SET OPTIONS (
      tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID。
    • DATASET_ID: テーブルを含むデータセットの ID。
    • TABLE_ID: タグ付けするテーブルの名前。
    • TAG_KEY_1: テーブルの最初のタグとして設定する名前空間付きのキー名'my-project/env''556741164180/department' など)。
    • TAG_VALUE_1: タグ値の短い名前'prod''sales' など)。
    • TAG_KEY_2: 2 番目のタグの名前空間付きキー名。
    • TAG_VALUE_2: 2 番目のタグの値の短い名前。

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

次の例では、+= 演算子を使用して、既存のタグを上書きせずにデータセットにタグを適用します。既存のタグに同じキーがある場合、そのタグは上書きされます。

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    ALTER SCHEMA PROJECT_ID.DATASET_ID
    SET OPTIONS (
      tags += [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID。
    • DATASET_ID: テーブルを含むデータセットの ID。
    • TABLE_ID: タグ付けするテーブルの名前。
    • TAG_KEY_1: テーブルの最初のタグとして設定する名前空間付きのキー名'my-project/env''556741164180/department' など)。
    • TAG_VALUE_1: タグ値の短い名前'prod''sales' など)。
    • TAG_KEY_2: 2 番目のタグの名前空間付きキー名。
    • TAG_VALUE_2: 2 番目のタグの値の短い名前。

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

bq

--add_tags フラグを指定して bq update コマンドを使用します。

bq update \
    --add_tags=TAG \
    PROJECT_ID:DATASET_ID

次のように置き換えます。

  • TAG: データセットに適用するタグ。複数のタグを指定する場合はカンマで区切ります。例: 556741164180/env:prod,myProject/department:sales。各タグには、名前空間付きのキー名と値の略称が必要です。
  • PROJECT_ID: 既存のデータセットが配置されているプロジェクトの ID。
  • DATASET_ID: 既存のデータセットの ID。

gcloud

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

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

次のように置き換えます。

  • TAG_VALUE_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: データセットのロケーション

Terraform

データセットの resource_tags フィールドにタグを追加し、google_bigquery_dataset リソースを使用して更新後の構成を適用します。詳細については、新しいデータセットの作成時にタグを適用するの Terraform の例をご覧ください。

API

datasets.get メソッドを呼び出して、resource_tags フィールドを含むデータセット リソースを取得します。タグを resource_tags フィールドに追加し、datasets.update メソッドを使用して更新されたデータセット リソースを返します。

データセットに適用されたタグの一覧取得

次の手順では、データセットに直接適用されているタグ バインディングのリストを示します。これらのメソッドは、親リソースから継承されたタグを返しません。

コンソール

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

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

    タグが [データセット情報] セクションに表示されます。

bq

データセットに適用されているタグを一覧取得するには、bq show コマンドを使用します。

bq show PROJECT_ID:DATASET_ID

次のように置き換えます。

  • PROJECT_ID: データセットを含むプロジェクトの ID。
  • DATASET_ID: タグを一覧取得するデータセットの ID。

gcloud

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

gcloud 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

Terraform

terraform state show コマンドを使用して、resource_tags フィールドを含むデータセットの属性を一覧取得します。このコマンドは、データセットの Terraform 構成ファイルが実行されたディレクトリで実行します。

terraform state show google_bigquery_dataset.default

API

datasets.get メソッドを呼び出して、データセット リソースを取得します。データセット リソースには、resource_tags フィールドでデータセットに適用されているタグが含まれています。

ビュー

INFORMATION_SCHEMA.SCHEMATA_OPTIONS ビューを使用します。

たとえば、次のクエリは、リージョン内のすべてのデータセットに適用されているすべてのタグを表示します。このクエリは、schema_name(データセット名)、option_name(常に 'tags')、object_type(常に ARRAY<STRUCT<STRING, STRING>>)、option_value を含む列があるテーブルを返します。これには、各データセットに関連付けられたタグを表す STRUCT オブジェクトの配列が含まれます。タグが割り当てられていないデータセットの場合、option_value 列は空の配列を返します。

SELECT * from region-REGION.INFORMATION_SCHEMA.SCHEMATA_OPTIONS
WHERE option_name='tags'

次のように置き換えます。

データセットからタグの適用を解除する

タグ バインディング リソースを削除すると、リソースからタグの適用を解除できます。タグを削除する場合は、削除する前にデータセットからタグの適用を解除する必要があります。詳細については、タグの削除をご覧ください。

コンソール

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

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

  3. [データセット情報] セクションで、 [詳細を編集] をクリックします。

  4. [タグ] セクションで、削除するタグの横にある [項目を削除] をクリックします。

  5. [保存] をクリックします。

SQL

ALTER SCHEMA SET OPTIONS ステートメントを使用します。

次の例では、-= 演算子を使用して、データセットからタグの適用を解除します。データセットからすべてのタグの適用を解除するには、tags=NULL または tags=[] を指定します。

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID
    SET OPTIONS (
      tags -= [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID。
    • DATASET_ID: テーブルを含むデータセットの ID。
    • TABLE_ID: タグの適用を解除するテーブルの名前。
    • TAG_KEY_1: 適用を解除する最初のタグの名前空間付きのキー名'my-project/env''556741164180/department' など)。
    • TAG_VALUE_1: 適用を解除するタグの値の短い名前'prod''sales' など)。
    • TAG_KEY_2: 適用を解除する 2 番目のタグの名前空間付きのキー名。
    • TAG_VALUE_2: 適用を解除する 2 番目のタグの値の短い名前。

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

bq

--remove_tags フラグを指定して bq update コマンドを使用します。

bq update \
    --remove_tags=REMOVED_TAG \
    PROJECT_ID:DATASET_ID

次のように置き換えます。

  • REMOVED_TAG: データセットから削除するタグ。複数のタグを指定する場合はカンマで区切ります。値のペアのないキーのみを受け入れます。例: 556741164180/env,myProject/department。各タグには名前空間付きのキー名が必要です。
  • PROJECT_ID: データセットを含むプロジェクトの ID。
  • DATASET_ID: タグを取り外すデータセットの ID。

データセットからすべてのタグを削除する場合は、--clear_all_tags フラグを指定して bq update コマンドを使用します。

bq update \
    --clear_all_tags
    PROJECT_ID:DATASET_ID

gcloud

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

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

次のように置き換えます。

  • TAG_VALUE_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: データセットのロケーション

Terraform

データセットの resource_tags フィールドからタグを削除し、google_bigquery_dataset リソースを使用して更新後の構成を適用します。

API

datasets.get メソッドを呼び出して、resource_tags フィールドを含むデータセット リソースを取得します。resource_tags フィールドからタグを削除し、datasets.update メソッドを使用して更新されたデータセット リソースを返します。

テーブルにタグを付ける

以降のセクションでは、新しいテーブルと既存のテーブルにタグを適用する方法、テーブルに適用されているタグを一覧取得する方法、テーブルからタグを削除する方法について説明します。

新しいテーブルの作成時にタグを適用する

タグを作成したら、新しいテーブルに適用できます。任意のタグキーのテーブルに適用できるタグ値は 1 つのみです。テーブルに適用できるタグは最大 50 個までです。

コンソール

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. [エクスプローラ] ペインでプロジェクトを開き、データセットを選択します。

  3. [データセット情報] セクションで、[テーブルを作成] をクリックします。

  4. 新しいテーブルの情報を入力します。詳細については、テーブルの作成と使用をご覧ください。

  5. [タグ] セクションを開きます。

    1. 既存のタグを適用する手順は次のとおりです。

      1. [スコープの選択] の横にあるプルダウン矢印をクリックし、[現在の対象] - [現在の組織を選択] または [現在のプロジェクトを選択] を選択します。

        または、[スコープの選択] をクリックして、リソースを検索するか、現在のリソースのリストを表示します。

      2. [キー 1] と [値 1] で、リストから適切な値を選択します。

    2. 新しいタグを手動で入力する手順は次のとおりです。

      1. [スコープを選択] の横にあるプルダウン矢印をクリックし、[ID を手動で入力] > [組織]、[プロジェクト]、または [タグ] を選択します。

      2. プロジェクトまたは組織のタグを作成する場合は、ダイアログで PROJECT_ID または ORGANIZATION_ID を入力し、[保存] をクリックします。

      3. [キー 1] と [値 1] で、リストから適切な値を選択します。

    3. 省略可: テーブルにタグを追加するには、[タグを追加] をクリックして、前の手順に沿って操作します。

  6. [テーブルを作成] をクリックします。

SQL

CREATE TABLE ステートメントを使用します。

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    CREATE TABLE PROJECT_ID.DATASET_ID.TABLE_ID
    OPTIONS (
      tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID。
    • DATASET_ID: テーブルを作成するデータセットの ID。
    • TABLE_ID: 新しいテーブルの名前。
    • TAG_KEY_1: テーブルの最初のタグとして設定する名前空間付きのキー名'my-project/env''556741164180/department' など)。
    • TAG_VALUE_1: タグ値の短い名前'prod''sales' など)。
    • TAG_KEY_2: 2 番目のタグの名前空間付きキー名。
    • TAG_VALUE_2: 2 番目のタグの値の短い名前。

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

bq

--add_tags フラグを指定して bq mk --table コマンドを使用します。

bq mk --table \
    --schema=SCHEMA \
    --add_tags=TAG \
    PROJECT_ID:DATASET_ID.TABLE_ID

次のように置き換えます。

  • SCHEMA: インライン スキーマの定義
  • TAG: 新しいテーブルに付加するタグ。複数のタグを指定する場合はカンマで区切ります。例: 556741164180/env:prod,myProject/department:sales。各タグには、名前空間付きのキー名と値の略称が必要です。
  • PROJECT_ID: テーブルを作成するプロジェクトの ID。
  • DATASET_ID: テーブルを作成するデータセットの ID。
  • TABLE_ID: 新しいテーブルの ID。

Terraform

google_bigquery_table リソースを使用します。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

次の例では、mytable という名前のテーブルを作成し、resource_tags フィールドに値を入力してタグを適用します。


# Create tag keys and values
data "google_project" "default" {}

resource "google_tags_tag_key" "env_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "env3"
}

resource "google_tags_tag_key" "department_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "department3"
}

resource "google_tags_tag_value" "env_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.env_tag_key.name}"
  short_name = "prod"
}

resource "google_tags_tag_value" "department_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.department_tag_key.name}"
  short_name = "sales"
}

# Create a dataset
resource "google_bigquery_dataset" "default" {
  dataset_id                      = "MyDataset"
  default_partition_expiration_ms = 2592000000  # 30 days
  default_table_expiration_ms     = 31536000000 # 365 days
  description                     = "dataset description"
  location                        = "US"
  max_time_travel_hours           = 96 # 4 days
}

# Create a table
resource "google_bigquery_table" "default" {
  dataset_id          = google_bigquery_dataset.default.dataset_id
  table_id            = "mytable"
  description         = "table description"
  deletion_protection = false # set to "true" in production

  # Attach tags to the table
  resource_tags = {
    (google_tags_tag_key.env_tag_key.namespaced_name) : google_tags_tag_value.env_tag_value.short_name,
    (google_tags_tag_key.department_tag_key.namespaced_name) : google_tags_tag_value.department_tag_value.short_name
  }
}

Trusted Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。

Cloud Shell を準備する

  1. Cloud Shell を起動します。
  2. Terraform 構成を適用するデフォルトの Trusted Cloud プロジェクトを設定します。

    このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。

ディレクトリを準備する

Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。

  1. Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は .tf にする必要があります(例: main.tf)。このチュートリアルでは、このファイルを main.tf とします。
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。

    新しく作成した main.tf にサンプルコードをコピーします。

    必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。

  3. 環境に適用するサンプル パラメータを確認し、変更します。
  4. 変更を保存します。
  5. Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
    terraform init

    最新バージョンの Google プロバイダを使用する場合は、-upgrade オプションを使用します。

    terraform init -upgrade

変更を適用する

  1. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  2. 次のコマンドを実行します。プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。

  3. Trusted Cloud プロジェクトを開いて結果を表示します。 Trusted Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。

API

定義済みのテーブル リソースを使用して tables.insert メソッドを呼び出し、resource_tags フィールドにタグを含めます。

既存のテーブルにタグを適用する

タグを作成したら、既存のテーブルに適用できます。任意のタグキーのテーブルに適用できるタグ値は 1 つのみです。

コンソール

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. [エクスプローラ] ペインで、プロジェクトとデータセットを開いて、テーブルを選択します。

  3. [詳細] タブをクリックし、詳細を編集)をクリックします。

  4. [タグ] セクションを開きます。

    1. 既存のタグを適用する手順は次のとおりです。

      1. [スコープの選択] の横にあるプルダウン矢印をクリックし、[現在の対象] - [現在の組織を選択] または [現在のプロジェクトを選択] を選択します。

        または、[スコープの選択] をクリックして、リソースを検索するか、現在のリソースのリストを表示します。

      2. [キー 1] と [値 1] で、リストから適切な値を選択します。

    2. 新しいタグを手動で入力する手順は次のとおりです。

      1. [スコープを選択] の横にあるプルダウン矢印をクリックし、[ID を手動で入力] > [組織]、[プロジェクト]、または [タグ] を選択します。

      2. プロジェクトまたは組織のタグを作成する場合は、ダイアログで PROJECT_ID または ORGANIZATION_ID を入力し、[保存] をクリックします。

      3. [キー 1] と [値 1] で、リストから適切な値を選択します。

    3. 省略可: テーブルにタグを追加するには、[タグを追加] をクリックして、前の手順に沿って操作します。

  5. [保存] をクリックします。

SQL

ALTER TABLE SET OPTIONS ステートメントを使用します。

次の例では、既存のテーブルのすべてのタグを上書きします。

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID
    SET OPTIONS (
      tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID。
    • DATASET_ID: テーブルを含むデータセットの ID。
    • TABLE_ID: タグ付けするテーブルの名前。
    • TAG_KEY_1: テーブルの最初のタグとして設定する名前空間付きのキー名'my-project/env''556741164180/department' など)。
    • TAG_VALUE_1: タグ値の短い名前'prod''sales' など)。
    • TAG_KEY_2: 2 番目のタグの名前空間付きキー名。
    • TAG_VALUE_2: 2 番目のタグの値の短い名前。

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

次の例では、+= 演算子を使用して、既存のタグを上書きせずにテーブルにタグを付加します。既存のタグに同じキーがある場合、そのタグは上書きされます。

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID
    SET OPTIONS (
      tags += [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID。
    • DATASET_ID: テーブルを含むデータセットの ID。
    • TABLE_ID: タグ付けするテーブルの名前。
    • TAG_KEY_1: テーブルの最初のタグとして設定する名前空間付きのキー名'my-project/env''556741164180/department' など)。
    • TAG_VALUE_1: タグ値の短い名前'prod''sales' など)。
    • TAG_KEY_2: 2 番目のタグの名前空間付きキー名。
    • TAG_VALUE_2: 2 番目のタグの値の短い名前。

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

bq

--add_tags フラグを指定して bq update コマンドを使用します。

bq update \
    --add_tags=TAG \
    PROJECT_ID:DATASET_ID.TABLE_ID

次のように置き換えます。

  • TAG: テーブルに付加するタグ。複数のタグを指定する場合はカンマで区切ります。例: 556741164180/env:prod,myProject/department:sales。各タグには、名前空間付きのキー名と値の略称が必要です。
  • PROJECT_ID: テーブルを含むプロジェクトの ID。
  • DATASET_ID: テーブルを含むデータセットの ID。
  • TABLE_ID: 更新するテーブルの ID。

gcloud

コマンドラインを使用してテーブルにタグを適用するには、gcloud resource-manager tags bindings create コマンドを使用してタグ バインディング リソースを作成します。

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

次のように置き換えます。

  • TAG_VALUE_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/tables/my_table
  • LOCATION: テーブルのロケーション

Terraform

テーブルの resource_tags フィールドにタグを追加し、google_bigquery_table リソースを使用して更新後の構成を適用します。詳細については、新しいテーブルの作成時にタグを適用するの Terraform の例をご覧ください。

API

定義済みのテーブル リソースを使用して tables.update メソッドを呼び出し、resource_tags フィールドにタグを含めます。

テーブルに適用されたタグを一覧取得する

テーブルに直接適用されているタグを一覧取得できます。このプロセスでは、親リソースから継承されたタグは一覧取得されません。

コンソール

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. [エクスプローラ] ペインで、プロジェクトとデータセットを開いて、テーブルを選択します。

    タグは [詳細] タブに表示されます。

bq

bq show コマンドを使用して、tags 列を探します。テーブルにタグがない場合、tags 列は表示されません。

bq show \
    PROJECT_ID:DATASET_ID.TABLE_ID

次のように置き換えます。

  • PROJECT_ID: テーブルを含むプロジェクトの ID。
  • DATASET_ID: テーブルを含むデータセットの ID。
  • TABLE_ID: テーブルの ID。

gcloud

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

gcloud 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/tables/my_table

  • 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

Terraform

terraform state show コマンドを使用して、resource_tags フィールドを含むテーブルの属性を一覧取得します。このコマンドは、テーブルの Terraform 構成ファイルが実行されたディレクトリで実行します。

terraform state show google_bigquery_table.default

API

定義済みのテーブル リソースを使用して tables.get メソッドを呼び出し、resource_tags フィールドを探します。

ビュー

INFORMATION_SCHEMA.TABLE_OPTIONS ビューを使用します。

たとえば、次のクエリは、データセット内のすべてのテーブルに適用されているすべてのタグを示します。このクエリは、schema_name(データセット名)、option_name(常に 'tags')、object_type(常に ARRAY<STRUCT<STRING, STRING>>)、option_value を含む列があるテーブルを返します。これには、各データセットに関連付けられたタグを表す STRUCT オブジェクトの配列が含まれます。タグが割り当てられていないテーブルの場合、option_value 列は空の配列を返します。

SELECT * from DATASET_ID.INFORMATION_SCHEMA.TABLE_OPTIONS
WHERE option_name='tags'

DATASET_ID は、テーブルを含むデータセットの ID に置き換えます。

テーブルからタグの適用を解除する

テーブルからタグの関連付けを削除するには、タグ バインディングを削除します。タグを削除する場合は、削除する前にテーブルからタグの適用を解除する必要があります。詳細については、タグの削除をご覧ください。

コンソール

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. [エクスプローラ] ペインで、プロジェクトとデータセットを開いて、テーブルを選択します。

  3. [詳細] タブをクリックし、詳細を編集)をクリックします。

  4. [タグ] セクションで、削除するタグの横にある [項目を削除] をクリックします。

  5. [保存] をクリックします。

SQL

ALTER TABLE SET OPTIONS ステートメントを使用します。

次の例では、-= 演算子を使用して、テーブルからタグの適用を解除します。テーブルからすべてのタグの適用を解除するには、tags=NULL または tags=[] を指定します。

  1. Trusted Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID
    SET OPTIONS (
      tags -= [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID。
    • DATASET_ID: テーブルを含むデータセットの ID。
    • TABLE_ID: タグの適用を解除するテーブルの名前。
    • TAG_KEY_1: 適用を解除する最初のタグの名前空間付きのキー名'my-project/env''556741164180/department' など)。
    • TAG_VALUE_1: 適用を解除するタグの値の短い名前'prod''sales' など)。
    • TAG_KEY_2: 適用を解除する 2 番目のタグの名前空間付きのキー名。
    • TAG_VALUE_2: 適用を解除する 2 番目のタグの値の短い名前。

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

bq

テーブルから一部のタグを削除するには、--remove_tags フラグを指定して bq update コマンドを使用します。

bq update \
    --remove_tags=TAG_KEYS \
    PROJECT_ID:DATASET_ID.TABLE_ID

次のように置き換えます。

  • TAG_KEYS: テーブルから切断するタグキー。カンマで区切ります。例: 556741164180/env,myProject/department。各タグキーには名前空間付きのキー名が必要です。
  • PROJECT_ID: テーブルを含むプロジェクトの ID。
  • DATASET_ID: テーブルを含むデータセットの ID。
  • TABLE_ID: 更新するテーブルの ID。

テーブルからすべてのタグを削除するには、--clear_all_tags フラグを指定して bq update コマンドを使用します。

bq update \
    --clear_all_tags \
    PROJECT_ID:DATASET_ID.TABLE_ID

gcloud

コマンドラインを使用してテーブルからタグの関連付けを削除するには、gcloud resource-manager tags bindings delete コマンドを使用してタグ バインディングを削除します。

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

次のように置き換えます。

  • TAG_VALUE_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/tables/my_table
  • LOCATION: データセットのロケーション

Terraform

テーブルの resource_tags フィールドからタグを削除し、google_bigquery_table リソースを使用して更新後の構成を適用します。

API

定義済みのテーブル リソースを使用して tables.update メソッドを呼び出し、resource_tags フィールドのタグを削除します。すべてのタグを削除するには、resource_tags フィールドを削除します。

テーブルに似た他のリソースにタグを付ける

同様に、BigQuery ビュー、マテリアライズド ビュー、クローン、スナップショットにタグを付けることができます。

タグを削除する

テーブル、ビューまたはデータセットから参照されているタグは削除できません。タグのキーまたは値自体を削除する前に、既存のタグ バインディング リソースをすべて解除する必要があります。タグキーとタグ値を削除するには、タグの削除をご覧ください。

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

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

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

  2. Trusted Cloud コンソールで、[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 タグの値を anonymousData データセットに適用するには、コマンドラインを使用して gcloud resource-manager tags bindings create コマンドを実行します。例:

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

次のステップ