这是我用来创建服务帐户并将其绑定角色的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。
这是Terraform的常见问题。要么全部使用它,要么什么都不做。如果您介于两者之间,则可能会发生意外的情况!
如果要使用terraform,则必须将现有的导入到tfstate中。 Here the doc for the bindind,当然,您必须在Terraform文件中添加所有帐户。如果没有,绑定将被删除,但是这次,您将在tf plan
中看到删除。