2023年8月25日

【Google Cloud】TerraformでBigQueryデータセットにタグを紐付ける


Content
2023年1月にBigQueryデータセットにタグを紐付ける機能が一般提供され、タグに基づいたアクセス制御が可能になりました。

従来はデータセット単位でアクセスを細かく制御したい場合、データセットに対して権限を付与する必要があったため、権限管理が煩雑になりやすいという弱点がありました。
タグに基づいたアクセス制御では、プロジェクトIAM内で権限設定が完結するため、権限管理を簡素化できます。

今回はこのBigQueryデータセットへのタグ紐付けを、Terraformで設定するためのコード例を紹介します。
※本記事ではTerraformの導入方法・初期設定などは割愛します。

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

Terraformとは

Terraformとは、HashiCorp社によって作られたオープンソースのInfrastructure as code (IaC) ツールです。
HCLという独自の記法を使用してインフラストラクチャの構成内容を宣言的に定義することで、インフラストラクチャのプロビジョニングや構成管理を実現します。

TerraformはGoogle Cloudだけではなく、AWSやAzureなど様々なプラットフォームに対応している非常に利便性の高いツールです。

TerraformによるBigQueryデータセットへのタグ紐付け

TerraformではGoogle Cloudのリソースへのタグ紐付けを管理するResourcesとして、 google_tags_tag_binding と google_tags_location_tag_binding が用意されています。

それぞれ以下のように使い分けます。

・google_tags_tag_binding
⇒ ロケーションの指定が不要なリソース (組織、フォルダ、プロジェクト)
・google_tags_location_tag_binding
⇒ ロケーションの指定が必要なリソース (BigQueryデータセット、Cloud Storageバケットなど)

BigQueryデータセットへのタグ付けには後者の google_tags_location_tag_binding を使用します。
google_tags_location_tag_binding では、下記の3つの引数を指定する必要があります。

引数 内容
parent タグ付け対象データセットのリソースIDを指定します
location タグ付け対象データセットのロケーションを指定します
tag_value 付与対象のタグ値IDを指定します

例として、次の内容を定義するコードを紹介します。

項目 内容
プロジェクトID sample-project
データセット名 sample-dataset
データセットのロケーション asia-northeast1
タグ値ID tagValues/xxxxyyyyzzzz

コード例

resource "google_tags_location_tag_binding" "default" {
parent = "//bigquery.googleapis.com/projects/sample-project/datasets/sample-dataset"
tag_value = "tagValues/xxxxyyyyzzzz"
location = "asia-northeast1"
}

参考 : google_tags_location_tag_binding

設定済みのタグ紐付けをimportする

Terraformを使わずに設定したタグ紐付けをTerraformで管理したい場合、以下の書式でimportを実行します。

terraform import google_tags_location_tag_binding.default {{location}}/{{name}}

先ほどの内容の場合、以下のように指定します。

terraform import google_tags_location_tag_binding.default asia-northeast1/tagBindings/%2F%2Fbigquery.googleapis.com%2Fprojects%2Fsample-project%2Fdatasets%2Fsample-dataset/tagValues/xxxxyyyyzzzz

※parentで指定したリソースIDに含まれる /%2F に置き換える必要がある点にご注意ください

参考 : google_tags_location_tag_binding#import

最後に

Terraformを使ってBigQueryデータセットにタグを紐付けるコードをご紹介しました。

タグを利用することで、大規模なプロジェクトで課題となりやすいBigQueryデータセットの権限管理を簡素化することができます。
更にTerraformも組み合わせることでタグ紐付けをより効率的に管理できますので、ぜひご活用ください!

Google Cloud導入についてのお問い合わせはこちら

2023年8月25日 【Google Cloud】TerraformでBigQueryデータセットにタグを紐付ける

Category Google Cloud

ご意見・ご相談・料金のお見積もりなど、
お気軽にお問い合わせください。

お問い合わせはこちら