如何使用 terraform 配置 GCS 存储桶权限?
How to config GCS bucket permission with terraform?
我想为存储桶 bucket_A 上的服务帐户 sa-email.com 设置权限。
如何使用 terraform 进行如下配置?
- sa-email.com 可以在 bucket_A
中创建文件
- sa-email.com 无法删除 bucket_A
中的文件
更新:
现在在我的项目中,sa-email 是 Storage Object Admin。
resource "google_project_iam_member" "aaaa" {
member = "sa-email.com"
project = "pid"
role = "roles/storage.objectAdmin"
}
我的项目中有大约 20 个桶。
我只想更改一个桶的权限。
我是否必须使用 google_storage_bucket_iam_member 来设置 20 个存储桶?
有没有办法做一点点更新?
更新 2:
我的解决方案
google_project_iam_member 有“条件”
resource "google_project_iam_member" "aaaa" {
member = "sa-email.com"
project = "pid"
role = "roles/storage.objectAdmin"
condition {
title = " bucket can delete "
expression = "!resource.name.startsWith(\"projects/_/buckets/bucket_can_not_delete\")"
}
}
resource "google_project_iam_member" "bbbb" {
member = "sa-email.com"
project = "pid"
role = "roles/storage.objectCreator"
condition {
title = " bucket can not delete "
expression = "resource.name.startsWith(\"projects/_/buckets/bucket_can_not_delete\")"
}
}
如果您需要一些帮助而不是寻找一个完整的解决方案,通常必须添加一个错误。
你只需要一个storage.objects.create权限,你不需要指定它不能删除它,如果它没有它。
这意味着 Storage Object Creator 角色可以满足您的需求 here,如 Google 文档中所述:
允许用户创建对象。不授予查看、删除或替换对象的权限。
您需要使用以下资源:
resource "google_storage_bucket_iam_member" "bucket_A" {
bucket = "bucket_A"
role = "roles/storage.objectCreator"
member = var.service_accounts
depends_on = [google_storage_bucket.bucket_A]
}
其中 var.service_account 是你的 sa-email.com 因为它可能依赖于环境,所以你可以将它添加为字符串。
我想为存储桶 bucket_A 上的服务帐户 sa-email.com 设置权限。
如何使用 terraform 进行如下配置?
- sa-email.com 可以在 bucket_A 中创建文件
- sa-email.com 无法删除 bucket_A 中的文件
更新:
现在在我的项目中,sa-email 是 Storage Object Admin。
resource "google_project_iam_member" "aaaa" {
member = "sa-email.com"
project = "pid"
role = "roles/storage.objectAdmin"
}
我的项目中有大约 20 个桶。
我只想更改一个桶的权限。
我是否必须使用 google_storage_bucket_iam_member 来设置 20 个存储桶?
有没有办法做一点点更新?
更新 2:
我的解决方案
google_project_iam_member 有“条件”
resource "google_project_iam_member" "aaaa" {
member = "sa-email.com"
project = "pid"
role = "roles/storage.objectAdmin"
condition {
title = " bucket can delete "
expression = "!resource.name.startsWith(\"projects/_/buckets/bucket_can_not_delete\")"
}
}
resource "google_project_iam_member" "bbbb" {
member = "sa-email.com"
project = "pid"
role = "roles/storage.objectCreator"
condition {
title = " bucket can not delete "
expression = "resource.name.startsWith(\"projects/_/buckets/bucket_can_not_delete\")"
}
}
如果您需要一些帮助而不是寻找一个完整的解决方案,通常必须添加一个错误。
你只需要一个storage.objects.create权限,你不需要指定它不能删除它,如果它没有它。 这意味着 Storage Object Creator 角色可以满足您的需求 here,如 Google 文档中所述:
允许用户创建对象。不授予查看、删除或替换对象的权限。 您需要使用以下资源:
resource "google_storage_bucket_iam_member" "bucket_A" {
bucket = "bucket_A"
role = "roles/storage.objectCreator"
member = var.service_accounts
depends_on = [google_storage_bucket.bucket_A]
}
其中 var.service_account 是你的 sa-email.com 因为它可能依赖于环境,所以你可以将它添加为字符串。