Как правильно создать gcp service-account с ролями в terraform - PullRequest
0 голосов
/ 03 апреля 2020

Вот код 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.

1 Ответ

1 голос
/ 04 апреля 2020

Это обычная проблема с Terraform. Либо ты все делаешь с этим, либо ничего. Если вы находитесь между ними, могут произойти неожиданные вещи !!

Если вы хотите использовать terraform, вы должны импортировать существующее в tfstate. Здесь do c для bindind , и, конечно, вы должны добавить всю учетную запись в файл Terraform. Если нет, привязка будет удалена, но на этот раз вы увидите удаление в tf plan.

...