Я пытаюсь настроить несколько сервисных аккаунтов для другой группы тем и подписок pubsub. Я пытаюсь добиться того, чтобы каждому микросервису разрешалось писать только в определенную тему и/или подписываться на определенную подписку.
В настоящее время у меня есть:
ресурс "google_service_account" "my_sa" {
account_id = "мой сервисный аккаунт"
display_name = "Служебный аккаунт для..."
}
ресурс "google_project_iam_member" "my_pubsub_iam" {
проект = переменная.проект
роль = "роли/pubsub.publisher"
member = "serviceAccount:${google_service_account.my_sa.email}"
}
Что настраивает my_sa как pubsub.publisher и должно позволить им публиковаться в любой теме.
Для подписчиков у меня есть:
# настроить учетную запись, как указано выше, но с подписчиком
ресурс "google_pubsub_subscription" "crm_sub" {
имя = "моя-подписка"
тема = переменная.тема
}
Такая настройка позволит каждому серверу подписываться на все подписки, если они являются подписчиками, и писать во все темы, если они являются издателями, верно?
Я видел пример на https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/pubsub_topic_iam и пытался понять это и https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/iam_policy но я немного борюсь.
Должен ли я просто добавить
данные "google_iam_policy" "admin" {
привязка {
роль = "роли/редактор"
члены = [
"serviceAccount:${google_service_account.my_pubsub_iam.email}",
]
}
}
ресурс "google_pubsub_topic_iam_policy" "политика" {
проект = google_pubsub_topic.example.project
тема = google_pubsub_topic.example.name
policy_data = data.google_iam_policy.admin.policy_data
}
К каждой службе?
Я разделил их, и у некоторых тем есть несколько авторов, так что, если это решение, как с этим справиться? Новая политика редактора для каждой службы или она перезапишет политику для темы?