作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我用来创建服务帐户并将角色绑定(bind)到它的 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 docs , “google_project_iam_binding”是 Authoritative. Sets the IAM policy for the project and replaces any existing policy already attached
.这意味着它完全替换了其中给定角色的成员。
要将角色添加到新服务帐户,而不从该角色编辑其他所有人,您应该使用资源“google_project_iam_member”:
resource "google_service_account" "sa-name" {
account_id = "sa-name"
display_name = "SA"
}
resource "google_project_iam_member" "firestore_owner_binding" {
project = <your_gcp_project_id_here>
role = "roles/datastore.owner"
member = "serviceAccount:${google_service_account.sa-name.email}"
}
示例中的额外更改:服务帐户资源的使用
email
生成的属性以删除显式
depends_on
.您不需要
depends_on
如果你这样做,你可以避免错误配置的错误。
关于google-cloud-platform - 如何在 terraform 中正确创建具有角色的 gcp 服务帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61003081/
我是一名优秀的程序员,十分优秀!