如何添加回 gcs 存储桶的默认 "Viewers of project" 权限?
How do I add back the default "Viewers of project" permission on a gcs bucket?
我用这个 terraform 资源做了一个桶 public
resource "google_storage_bucket_iam_policy" "sdfsdf" {
bucket = "sdfzdfsdf"
policy_data = jsonencode({
bindings = [
{
members = [
"allUsers",
]
role = "roles/storage.objectViewer"
},
]
})
}
这样做之后,我立即无法再查看存储桶的权限。我必须给我的用户 Storage Admin。
我注意到当我在 UI 中创建一个新的存储桶时添加了这个权限:
`Viewers of project: my-project`
Storage Legacy Bucket Reader
Storage Legacy Object Reader
我的配置删除了那个烫发。我如何将其添加回去?什么是 Viewers of project: my-project
?此成员绑定在策略中是什么样的 json?
对覆盖|设置资源策略的命令非常小心。
[如您所见]这些命令 替换 策略;他们不会将现有政策与现有政策相结合。
使用 add-iam-policy-binding
的等价物几乎总是更安全。
我假设存储桶没有特定的默认策略(因为我假设它们会从项目继承),但它们(似乎)确实如此:
{
"bindings": [
{
"members": [
"projectEditor:[[PROJECT_ID]]",
"projectOwner:[[PROJECT_ID]]"
],
"role": "roles/storage.legacyBucketOwner"
},
{
"members": [
"projectViewer:[[PROJECT_ID]]"
],
"role": "roles/storage.legacyBucketReader"
},
{
"members": [
"projectEditor:[[PROJECT_ID]]",
"projectOwner:[[PROJECT_ID]]"
],
"role": "roles/storage.legacyObjectOwner"
},
{
"members": [
"projectViewer:[[PROJECT_ID]]"
],
"role": "roles/storage.legacyObjectReader"
}
],
]
同样奇怪的是,我以前从未遇到过这些 member
类型,例如projectEditor:[[PROJECT-ID]]
我本以为应该发生的是您的用户继承了项目的策略。
您的身份在拥有该存储桶的项目中扮演什么角色?
奇怪的是,您从存储桶中删除了您的角色绑定(使用上述命令),但您能够恢复它们;您必须继承足够的权限,所以我很惊讶您丢失(继承的)权限但能够将它们还给您自己。
可能(但见上文),如果您还没有 Owner
、Editor
(因为这些角色对云存储具有固有权限),您可以将您的身份绑定到roles/storage.admin
在项目层面给自己一个未来的出路但是......再次......你是如何恢复这个角色的?你确定你真的丢了?
我用这个 terraform 资源做了一个桶 public
resource "google_storage_bucket_iam_policy" "sdfsdf" {
bucket = "sdfzdfsdf"
policy_data = jsonencode({
bindings = [
{
members = [
"allUsers",
]
role = "roles/storage.objectViewer"
},
]
})
}
这样做之后,我立即无法再查看存储桶的权限。我必须给我的用户 Storage Admin。
我注意到当我在 UI 中创建一个新的存储桶时添加了这个权限:
`Viewers of project: my-project`
Storage Legacy Bucket Reader
Storage Legacy Object Reader
我的配置删除了那个烫发。我如何将其添加回去?什么是 Viewers of project: my-project
?此成员绑定在策略中是什么样的 json?
对覆盖|设置资源策略的命令非常小心。
[如您所见]这些命令 替换 策略;他们不会将现有政策与现有政策相结合。
使用 add-iam-policy-binding
的等价物几乎总是更安全。
我假设存储桶没有特定的默认策略(因为我假设它们会从项目继承),但它们(似乎)确实如此:
{
"bindings": [
{
"members": [
"projectEditor:[[PROJECT_ID]]",
"projectOwner:[[PROJECT_ID]]"
],
"role": "roles/storage.legacyBucketOwner"
},
{
"members": [
"projectViewer:[[PROJECT_ID]]"
],
"role": "roles/storage.legacyBucketReader"
},
{
"members": [
"projectEditor:[[PROJECT_ID]]",
"projectOwner:[[PROJECT_ID]]"
],
"role": "roles/storage.legacyObjectOwner"
},
{
"members": [
"projectViewer:[[PROJECT_ID]]"
],
"role": "roles/storage.legacyObjectReader"
}
],
]
同样奇怪的是,我以前从未遇到过这些 member
类型,例如projectEditor:[[PROJECT-ID]]
我本以为应该发生的是您的用户继承了项目的策略。
您的身份在拥有该存储桶的项目中扮演什么角色?
奇怪的是,您从存储桶中删除了您的角色绑定(使用上述命令),但您能够恢复它们;您必须继承足够的权限,所以我很惊讶您丢失(继承的)权限但能够将它们还给您自己。
可能(但见上文),如果您还没有 Owner
、Editor
(因为这些角色对云存储具有固有权限),您可以将您的身份绑定到roles/storage.admin
在项目层面给自己一个未来的出路但是......再次......你是如何恢复这个角色的?你确定你真的丢了?