Теги политики BigQuery: возможно ли это как код?

Как и другие облачные провайдеры, Google Cloud Platform управляет правами доступа к данным с помощью множества механизмов.

GCP поддерживает теги , разрешения и роли IAM и т. д. Но он также поддерживает теги политики BigQuery.

«Обычными» тегами можно управлять через инфраструктуру как код. Например, вот оно для Terraform.

Но я не могу найти способ управлять тегами политики BigQuery через инфраструктуру как код. Это возможно?

Мне не нужна инфраструктура как код сама по себе, но мне нужны основные гарантии, которые она предоставляет для этого варианта использования:

  • Бесплатная, актуальная документация ==> репозиторий (или другое централизованное место) содержит информацию о том, какие политики развернуты и как.
  • Периодические проверки и гарантии того, что реальный мир соответствует нашему пониманию.
    • terraform plan и apply проверьте, соответствует ли то, что существует в дикой природе, пониманию того, что должно быть в дикой природе.

Как этого добиться с помощью тегов политики BigQuery? Будем очень признательны за любые примеры или документацию!

Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
0
0
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот рецепт, который я использую для создания и применения тегов политики к таблицам через Terraform:

  1. Создать тег политики
# 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
}
  1. Создать набор данных
# 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"
}
  1. Создать таблицу
# 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
}

Спасибо, @Колбан. Я разработал таксономию, и ваш ответ был очень полезен! Я устанавливаю награду за ваш ответ, поскольку обычно ответ на такой эзотерический, редкий вопрос не приносит особого вознаграждения. :)

Mike Williamson 24.05.2024 10:17

Для тех, кто может это увидеть, вот отличный ресурс, который я сначала не смог найти в TF: Registration.terraform.io/providers/hashicorp/google/latest/docs‌​/…

Mike Williamson 24.05.2024 10:19

Другие вопросы по теме