Как и другие облачные провайдеры, Google Cloud Platform управляет правами доступа к данным с помощью множества механизмов.
GCP поддерживает теги , разрешения и роли IAM и т. д. Но он также поддерживает теги политики BigQuery.
«Обычными» тегами можно управлять через инфраструктуру как код. Например, вот оно для Terraform.
Но я не могу найти способ управлять тегами политики BigQuery через инфраструктуру как код. Это возможно?
Мне не нужна инфраструктура как код сама по себе, но мне нужны основные гарантии, которые она предоставляет для этого варианта использования:
terraform plan
и apply
проверьте, соответствует ли то, что существует в дикой природе, пониманию того, что должно быть в дикой природе.Как этого добиться с помощью тегов политики BigQuery? Будем очень признательны за любые примеры или документацию!
Вот рецепт, который я использую для создания и применения тегов политики к таблицам через Terraform:
# https://cloud.google.com/iam/docs/understanding-roles#datacatalog.categoryFineGrainedReader
data "google_iam_policy" "unrestricted_finegrained_reader" {
binding {
role = "roles/datacatalog.categoryFineGrainedReader"
members = [
"allAuthenticatedUsers",
]
}
}
resource "google_data_catalog_taxonomy" "basic_taxonomy" {
display_name = "my_taxonomy"
description = "A collection of policy tags"
region = "us"
}
resource "google_data_catalog_policy_tag" "date_policy" {
taxonomy = google_data_catalog_taxonomy.basic_taxonomy.id
display_name = "Date"
description = "<Add Description>"
}
resource "google_data_catalog_policy_tag_iam_policy" "policy" {
policy_tag = google_data_catalog_policy_tag.date_policy.name
policy_data = data.google_iam_policy.unrestricted_finegrained_reader.policy_data
}
# https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/bigquery_dataset
# Let's create a dataset
resource "google_bigquery_dataset" "tf_dataset" {
dataset_id = "tf_dataset"
description = "Test dataset for Terraform"
friendly_name = "tf_dataset"
location = "us"
}
# https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/bigquery_table
# Let's create a table!
resource "google_bigquery_table" "table1" {
dataset_id = google_bigquery_dataset.tf_dataset.dataset_id
table_id = "table1"
description = "Sample table"
schema = <<EOF
[
{
"name": "col1",
"type": "STRING",
"mode": "NULLABLE",
"description": "col1",
"policyTags":{
"names": [
"${google_data_catalog_policy_tag.date_policy.id}"
]
}
},
{
"name": "col2",
"type": "STRING",
"mode": "NULLABLE",
"description": "col2"
}
]
EOF
}
Для тех, кто может это увидеть, вот отличный ресурс, который я сначала не смог найти в TF: Registration.terraform.io/providers/hashicorp/google/latest/docs/…
Спасибо, @Колбан. Я разработал таксономию, и ваш ответ был очень полезен! Я устанавливаю награду за ваш ответ, поскольку обычно ответ на такой эзотерический, редкий вопрос не приносит особого вознаграждения. :)