【发布时间】:2018-07-12 08:58:13
【问题描述】:
我在使用iam_policy 资源类型时遇到了问题,而我却没有被terraform destroy 锁定。这适用于google_storage_bucket_iam_policy 和google_project_iam_policy 等资源类型。
此示例适用于google_storage_bucket_iam_policy 资源。假设我有一个所有者列表和 terraform 使用的服务帐户,以被授予 roles/storage.admin 角色。
resource "google_storage_bucket" "default" {
name = "default"
location = "EU"
}
resource "google_storage_bucket_iam_role" "owners" {
bucket = "default"
binding {
role = "roles/storage.admin"
members = [
"${var.owners}",
"${var.serviceAccount}"
]
}
}
资源创建的顺序是先bucket,后policy。当然,destroy 操作以相反的顺序处理资源 - 首先是策略,然后是存储桶。但是,在策略移除后,服务帐号没有足够的权限来移除存储桶。
也许一种方法可以为所有者使用google_storage_bucket_iam_member 资源,但是这种方法似乎不是很干净,因为它继承了之前在项目中定义的任何内容,这可能会很混乱。
顺便说一句,同样的逻辑适用于项目级别的资源google_project_iam_policy。提前致谢。
【问题讨论】:
标签: google-cloud-platform terraform google-iam