本页面介绍了如何使用 Identity and Access Management (IAM) 权限控制存储桶、代管式文件和对象的访问权限。借助 IAM,您可以控制谁有权访问存储桶、代管式文件夹和对象。
如需了解控制存储桶、代管式文件夹和对象的访问权限的其他方式,请参阅访问权限控制概览。如需了解如何控制存储桶中各个对象的访问权限,请参阅访问控制列表。
将 IAM 用于存储桶
以下各节展示了如何在存储桶上完成基本的 IAM 任务。
所需的角色
如需获得设置和管理存储桶的 IAM 政策所需的权限,请让管理员向您授予存储桶的 Storage Admin (roles/storage.admin
) IAM 角色。
此角色包含以下权限,这些权限是设置和管理存储桶的 IAM 政策所需的权限:
storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
storage.buckets.list
- 仅当您计划使用 Google Cloud 控制台执行本页面上的任务时,才需要此权限。
您还可以通过自定义角色获得这些权限。
将主账号添加到存储桶级层政策中
如需查看与 Cloud Storage 关联的角色列表,请参阅 IAM 角色。如需了解可授予 IAM 角色的实体,请参阅主账号标识符。
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击要为主账号授予角色的存储桶的名称。
选择页面顶部附近的权限标签。
点击 add_box 授予访问权限按钮。
此时会显示“添加主账号”对话框。
在新主账号字段中,输入需要访问您存储桶的一个或多个身份。
从选择角色下拉菜单中选择一个或多个角色。 您选择的角色将显示在窗格中,其中包含对角色授予的权限的简短说明。
点击保存。
如需了解如何在 Google Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
使用 buckets add-iam-policy-binding
命令:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE
其中:
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
创建一个包含以下信息的 JSON 文件:
{ "bindings":[ { "role": "IAM_ROLE", "members":[ "PRINCIPAL_IDENTIFIER" ] } ] }
其中:
使用
cURL
,通过PUT setIamPolicy
请求调用 JSON API:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的文件的路径。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要为主账号授予对其访问权限的存储桶的名称。例如my-bucket
。
查看存储桶的 IAM 政策
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击要查看其政策的存储桶的名称。
在存储桶详情页面中,点击配置标签页。
应用于存储桶的 IAM 政策显示在权限部分中。
(可选)使用过滤条件栏过滤结果。
如果按主账号进行搜索,结果中将显示主账号所获得的每个角色。
命令行
gcloud storage buckets get-iam-policy gs://BUCKET_NAME
其中 BUCKET_NAME
是您要查看 IAM 政策的存储桶的名称。例如 my-bucket
。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过GET getIamPolicy
请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要查看 IAM 政策的存储桶的名称。例如my-bucket
。
从存储桶级层政策中移除主账号
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击要从中移除主账号角色的存储桶的名称。
在存储桶详情页面中,点击配置标签页。
应用于存储桶的 IAM 政策显示在权限部分中。
在按主账号查看标签页中,选中要移除的主账号的复选框。
点击移除访问权限按钮。
在出现的叠加窗口中,点击确认。
如需了解如何在 Google Cloud 控制台中获取有关失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
使用 buckets remove-iam-policy-binding
命令:
gcloud storage buckets remove-iam-policy-binding gs://BUCKET_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE
其中:
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
获取应用于存储桶的现有政策。为此,请使用
cURL
,通过GET getIamPolicy
请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要查看 IAM 政策的存储桶的名称。例如my-bucket
。
创建一个包含您在上一步中检索的政策的 JSON 文件。
修改 JSON 文件以从政策中移除该主账号。
使用
cURL
,通过PUT setIamPolicy
请求调用 JSON API:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"
其中:
JSON_FILE_NAME
是您在第 3 步中创建的文件的路径。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要移除对其访问权限的存储桶的名称,例如my-bucket
。
在存储桶上使用 IAM Conditions
以下各个部分介绍如何在存储桶中添加和移除 IAM Conditions。如需查看存储桶的 IAM Conditions,请参阅查看存储桶的 IAM 政策。如需详细了解如何将 IAM Conditions 与 Cloud Storage 搭配使用,请参阅 Conditions。
您必须先对存储桶启用统一存储桶级层访问权限,然后才能添加条件。
为存储桶设置新条件
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击要为其添加新条件的存储桶的名称。
在存储桶详情页面中,点击配置标签页。
应用于存储桶的 IAM 政策显示在权限部分中。
点击 + 授予访问权限。
对于新主账号,填写您要向其授予存储桶访问权限的主账号。
对于您要应用条件的每个角色:
选择要授予主账号的角色。
点击添加条件,以打开修改条件表单。
填写条件的标题。说明字段为选填字段。
使用条件构建器直观地构建条件,或使用条件编辑器标签页输入 CEL 表达式。
点击保存可返回添加主账号表单。如需添加多个角色,请点击添加其他角色。
点击保存。
如需了解如何在 Google Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
创建用于定义条件的 JSON 或 YAML 文件,包括条件的
title
和条件的基于特性的逻辑expression
,还可以选择包括条件的description
。将
buckets add-iam-policy-binding
命令与--condition-from-file
标志结合使用:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE --condition-from-file=CONDITION_FILE
其中:
BUCKET_NAME
是您要为主账号授予对其访问权限的存储桶的名称。例如my-bucket
。PRINCIPAL_IDENTIFIER
标识应用条件的身份。例如user:jane@gmail.com
。如需查看主账号标识符格式的列表,请参阅主账号标识符。IAM_ROLE
是您要向主账号授予的 IAM 角色,例如roles/storage.objectViewer
。CONDITION_FILE
是您在上一步中创建的文件。
或者,您可以使用 --condition
标志直接在命令中添加条件,而不是使用 --condition-from-file
标志。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
GET getIamPolicy
请求将存储桶的 IAM 政策保存到临时 JSON 文件中:curl \ 'https://storage./storage/v1/b/BUCKET_NAME/iam' \ --header 'Authorization: Bearer OAUTH2_TOKEN' > tmp-policy.json
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。
在文本编辑器中编辑
tmp-policy.json
文件,以便向 IAM 政策中的绑定添加新条件:{ "version": VERSION, "bindings": [ { "role": "IAM_ROLE", "members": [ "PRINCIPAL_IDENTIFIER" ], "condition": { "title": "TITLE", "description": "DESCRIPTION", "expression": "EXPRESSION" } } ], "etag": "ETAG" }
其中:
VERSION
是 IAM 政策的版本,对于具有 IAM Conditions 的存储桶来说,该值需要为 3。IAM_ROLE
是应用条件的角色。例如roles/storage.objectViewer
。PRINCIPAL_IDENTIFIER
标识应用条件的身份。例如user:jane@gmail.com
。如需查看主账号标识符格式的列表,请参阅主账号标识符。TITLE
是条件的标题。例如expires in 2019
。DESCRIPTION
是条件的可选说明。例如Permission revoked on New Year's
。EXPRESSION
是基于特性的逻辑表达式。例如request.time < timestamp(\"2019-01-01T00:00:00Z\")
。如需查看表达式的更多示例,请参阅条件特性参考。请注意,Cloud Storage 仅支持日期/时间、资源类型和资源名称特性。
切勿修改
ETAG
。使用
PUT setIamPolicy
请求为存储桶设置修改后的 IAM 政策:curl -X PUT --data-binary @tmp-policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。
从存储桶中移除条件
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击要从中移除条件的存储桶的名称。
在存储桶详情页面中,点击配置标签页。
应用于存储桶的 IAM 政策显示在权限部分中。
点击与条件相关联的主账号对应的修改图标 (edit)。
在显示的修改访问权限叠加层中,点击您希望删除的条件的名称。
在显示的修改条件叠加层中,点击删除,然后点击确认。
点击保存。
如需了解如何在 Google Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
使用
buckets get-iam-policy
命令将存储桶的 IAM 政策保存到临时 JSON 文件中。gcloud storage buckets get-iam-policy gs://BUCKET_NAME > tmp-policy.json
在文本编辑器中编辑
tmp-policy.json
文件以从 IAM 政策中移除条件。使用
buckets set-iam-policy
为存储桶设置修改后的 IAM 政策。gcloud storage buckets set-iam-policy gs://BUCKET_NAME tmp-policy.json
代码示例
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
GET getIamPolicy
请求将存储桶的 IAM 政策保存到临时 JSON 文件中:curl \ 'https://storage./storage/v1/b/BUCKET_NAME/iam' \ --header 'Authorization: Bearer OAUTH2_TOKEN' > tmp-policy.json
其中:
BUCKET_NAME
是您要授予对其访问权限的存储桶的名称,例如my-bucket
。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。
在文本编辑器中编辑
tmp-policy.json
文件以从 IAM 政策中移除条件。使用
PUT setIamPolicy
请求为存储桶设置修改后的 IAM 政策:curl -X PUT --data-binary @tmp-policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要修改 IAM 政策的存储桶的名称。例如my-bucket
。
将 IAM 用于代管式文件夹
以下各部分介绍了如何在代管式文件夹上完成基本的 IAM 任务。
所需的角色
如需获得设置和管理代管式文件夹的 IAM 政策所需的权限,请让您的管理员为您授予包含代管式文件夹的存储桶的 Storage Legacy Bucket Owner (roles/storage.legacyBucketOwner
) IAM 角色。
此角色可提供以下权限,这些权限是设置和管理代管式文件夹的 IAM 政策所必需的:
storage.managedfolders.getIamPolicy
storage.managedfolders.setIamPolicy
您还可以通过自定义角色获得这些权限。
如需了解如何授予存储桶的角色,请参阅将 IAM 与存储桶搭配使用。
为代管式文件夹设置 IAM 政策
命令行
创建一个包含以下信息的 JSON 文件:
{ "bindings":[ { "role": "IAM_ROLE", "members":[ "PRINCIPAL_IDENTIFIER" ] } ] }
其中:
使用
gcloud alpha storage managed-folders set-iam-policy
命令:gcloud alpha storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME POLICY_FILE
其中:
BUCKET_NAME
是您要为其应用 IAM 政策的代管式文件夹所属的存储桶的名称。例如my-bucket
。MANAGED_FOLDER_NAME
是您要为其应用 IAM 政策的代管式文件夹的名称。例如my-managed-folder/
。POLICY_FILE
是您在第 1 步中创建的 JSON 文件的路径。
REST API
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
创建一个包含以下信息的 JSON 文件:
{ "bindings":[ { "role": "IAM_ROLE", "members":[ "PRINCIPAL_IDENTIFIER" ] } ] }
其中:
使用
cURL
,通过PUT setIamPolicy
请求调用 JSON API:curl -X PUT --data-binary @POLICY_FILE \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"
其中:
POLICY_FILE
是您在第 2 步中创建的 JSON 政策文件的路径。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要为其应用 IAM 政策的代管式文件夹所属的存储桶的名称。例如my-bucket
。MANAGED_FOLDER_NAME
是您要为主账号授予其访问权限的代管式文件夹的名称。例如my-managed-folder/
。
查看代管式文件夹的 IAM 政策
命令行
使用 gcloud alpha storage managed-folder get-iam-policy
命令:
gcloud alpha storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME
其中:
BUCKET_NAME
是您要查看其 IAM 政策的代管式文件夹所属的存储桶的名称。例如my-bucket
。MANAGED_FOLDER_NAME
是您要查看其 IAM 政策的代管式文件夹的名称。例如my-managed-folder/
。
REST API
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过GET getIamPolicy
请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage./storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要查看其 IAM 政策的代管式文件夹所属的存储桶的名称。例如my-bucket
。MANAGED_FOLDER_NAME
是您要查看其 IAM 政策的代管式文件夹的名称。例如my-managed-folder/
。
从代管式文件夹政策中移除主账号
命令行
使用 gcloud alpha storage managed-folder remove-iam-policy-binding
命令:
gcloud alpha storage managed-folders remove-iam-policy-binding gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE
其中:
REST API
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
获取应用于代管式文件夹的现有政策。为此,请使用
cURL
,通过GET getIamPolicy
请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage./storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要撤消其访问权限的代管式文件夹所属的存储桶的名称。例如my-bucket
。MANAGED_FOLDER_NAME
是您要移除其 IAM 政策的代管式文件夹的名称。例如my-managed-folder/
。
创建一个包含您在上一步中检索的政策的 JSON 文件。
修改 JSON 文件以从政策中移除该主账号。
使用
cURL
,通过PUT setIamPolicy
请求调用 JSON API:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"
其中:
JSON_FILE_NAME
是您在第 3 步中创建的文件的路径。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要撤消其访问权限的代管式文件夹所属的存储桶的名称。例如my-bucket
。MANAGED_FOLDER_NAME
是您要移除其 IAM 政策的代管式文件夹的名称。例如my-managed-folder/
。
为代管式文件夹使用 IAM 条件
以下部分介绍了如何为代管式文件夹添加和移除 IAM 条件。如需查看代管式文件夹的 IAM 条件,请参阅查看代管式文件夹的 IAM 政策。如需详细了解如何将 IAM Conditions 与 Cloud Storage 搭配使用,请参阅 Conditions。
您必须先对存储桶启用统一存储桶级访问权限,然后才能向代管式文件夹添加条件。
为代管式文件夹设置新条件
命令行
创建用于定义条件的 JSON 或 YAML 文件,包括条件的
title
和条件的基于特性的逻辑expression
,还可以选择包括条件的description
。使用带有
--condition-from-file
标志的gcloud alpha storage managed-folders add-iam-policy-binding
命令。
gcloud alpha storage managed-folders add-iam-policy-binding gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE --condition-from-file=CONDITION_FILE
其中:
BUCKET_NAME
是您要为主账号授予其访问权限的代管式文件夹所属的存储桶的名称。例如my-bucket
。MANAGED_FOLDER_NAME
是您要为主账号授予其访问权限的代管式文件夹的名称。例如my-managed-folder/
。PRINCIPAL_IDENTIFIER
标识应用条件的身份。例如user:jane@gmail.com
。如需查看主账号标识符格式的列表,请参阅主账号标识符。IAM_ROLE
是您要向主账号授予的 IAM 角色,例如roles/storage.objectViewer
。CONDITION_FILE
是您在上一步中创建的文件。
或者,您可以使用 --condition
标志直接在命令中添加条件,而不是使用 --condition-from-file
标志。
REST API
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
GET getIamPolicy
请求将代管式文件夹的 IAM 政策保存到临时 JSON 文件中:curl \ 'https://storage./storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \ --header 'Authorization: Bearer OAUTH2_TOKEN' > tmp-policy.json
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要为其设置 IAM 条件的代管式文件夹所属的存储桶的名称。MANAGED_FOLDER_NAME
是您要为其设置 IAM 条件的代管式文件夹的名称。
在文本编辑器中编辑
tmp-policy.json
文件,以便向 IAM 政策中的绑定添加新条件:{ "version": VERSION, "bindings": [ { "role": "IAM_ROLE", "members": [ "PRINCIPAL_IDENTIFIER" ], "condition": { "title": "TITLE", "description": "DESCRIPTION", "expression": "EXPRESSION" } } ], "etag": "ETAG" }
其中:
VERSION
是 IAM 政策的版本,对于具有 IAM 条件的代管式文件夹,该值需要为 3。IAM_ROLE
是应用条件的角色。例如roles/storage.objectViewer
。PRINCIPAL_IDENTIFIER
标识应用条件的身份。例如user:jane@gmail.com
。如需查看主账号标识符格式的列表,请参阅主账号标识符。TITLE
是条件的标题。例如expires in 2019
。DESCRIPTION
是条件的可选说明。例如Permission revoked on New Year's
。EXPRESSION
是基于特性的逻辑表达式。例如request.time < timestamp(\"2019-01-01T00:00:00Z\")
。如需查看表达式的更多示例,请参阅条件特性参考。请注意,Cloud Storage 仅支持日期/时间、资源类型和资源名称特性。
切勿修改
ETAG
。使用
PUT setIamPolicy
请求为存储桶设置修改后的 IAM 政策:curl -X PUT --data-binary @tmp-policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/managedFoldersMANAGED_FOLDER_NAME/iam"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要为其设置 IAM 条件的代管式文件夹所属的存储桶的名称。MANAGED_FOLDER_NAME
是您要为其设置 IAM 条件的代管式文件夹的名称。
从代管式文件夹中移除条件
命令行
使用
gcloud alpha storage managed-folders get-iam-policy
命令将代管式文件夹的 IAM 政策保存到临时 JSON 文件中。gcloud alpha storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME > tmp-policy.json
在文本编辑器中编辑
tmp-policy.json
文件以从 IAM 政策中移除条件。使用
gcloud alpha storage managed-folders set-iam-policy
命令为代管式文件夹设置修改后的 IAM 政策。gcloud alpha storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME tmp-policy.json
REST API
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
GET getIamPolicy
请求将代管式文件夹的 IAM 政策保存到临时 JSON 文件中:curl \ 'https://storage./storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \ --header 'Authorization: Bearer OAUTH2_TOKEN' > tmp-policy.json
其中:
BUCKET_NAME
是您要更改其访问权限的代管式文件夹所属的存储桶的名称。例如my-bucket
。MANAGED_FOLDER_NAME
是您要更改其访问权限的代管式文件夹的名称。例如my-managed-folder/
。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。
在文本编辑器中编辑
tmp-policy.json
文件以从 IAM 政策中移除条件。使用
PUT setIamPolicy
请求为代管式文件夹设置修改后的 IAM 政策:curl -X PUT --data-binary @tmp-policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要更改其访问权限的代管式文件夹所属的存储桶的名称。例如my-bucket
。MANAGED_FOLDER_NAME
是您要更改其访问权限的代管式文件夹的名称。例如my-managed-folder/
。
将 IAM 用于项目
如需查看有关如何在项目级层及更高级层授予和撤消 IAM 角色的指南,请参阅管理对项目、代管式文件夹和组织的访问权限。
最佳实践
您应尽量设置最低权限,以便为主账号授予必需的访问权限。例如,如果团队成员只需要读取存储在存储桶中的对象,请选择 Storage Object Viewer 角色。同样,如果团队成员需要完全控制存储桶中的对象(而非控制存储桶本身),请选择 Storage Object Admin。
后续步骤
- 了解如何公开共享您的数据。
- 查看具体的共享和协作示例。
- 了解使用 IAM 时的最佳做法。
- 了解如何为存储桶使用角色建议。
- 如需排查与 IAM 角色和权限相关的失败操作的问题,请参阅问题排查。