Вот код terraform, который я использовал для создания учетной записи службы и привязки к ней роли:
resource "google_service_account" "sa-name" {
account_id = "sa-name"
display_name = "SA"
}
resource "google_project_iam_binding" "firestore_owner_binding" {
role = "roles/datastore.owner"
members = [
"serviceAccount:sa-name@${var.project}.iam.gserviceaccount.com",
]
depends_on = [google_service_account.sa-name]
}
Вышеупомянутый код работал отлично ... за исключением того, что он удалил datastore.owner
из любой другой службы аккаунт в проекте, которому ранее была назначена эта роль. У нас есть один проект, которым пользуются многие команды, и есть служебные учетные записи, управляемые разными командами. Мой код terraform будет содержать только служебные учетные записи нашей команды, и мы можем в итоге взломать служебные учетные записи других команд.
Есть ли другой способ сделать это в terraform?
Это, конечно, можно сделать с помощью GCP UI или gcloud cli без проблем и не влияют на другие SA.