2023年8月25日
【Google Cloud】TerraformでBigQueryデータセットにタグを紐付ける
- Category Google Cloud
従来はデータセット単位でアクセスを細かく制御したい場合、データセットに対して権限を付与する必要があったため、権限管理が煩雑になりやすいという弱点がありました。
タグに基づいたアクセス制御では、プロジェクト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"
}
設定済みのタグ紐付けを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 に置き換える必要がある点にご注意ください
最後に
Terraformを使ってBigQueryデータセットにタグを紐付けるコードをご紹介しました。
タグを利用することで、大規模なプロジェクトで課題となりやすいBigQueryデータセットの権限管理を簡素化することができます。
更にTerraformも組み合わせることでタグ紐付けをより効率的に管理できますので、ぜひご活用ください!
ご意見・ご相談・料金のお見積もりなど、
お気軽にお問い合わせください。