本页面介绍如何使用 Identity and Access Management (IAM) 权限控制存储分区和对象的访问权限。借助 IAM,您可以控制谁有权访问您的存储分区和对象。
如需了解如何以其他方式控制存储分区和对象的访问权限,请参阅访问权限控制概览。如需了解如何控制存储分区中各个对象的访问权限,请参阅访问控制列表。
将 IAM 用于存储分区
以下各节展示了如何在存储分区上完成基本的 IAM 任务。
将成员添加到存储分区级层政策
如需查看与 Cloud Storage 关联的角色列表,请参阅 IAM 角色。如需了解可授予 IAM 角色的实体,请参阅成员类型。
控制台
- 在 Google Cloud Console 中打开 Cloud Storage 浏览器。
打开 Cloud Storage 浏览器 点击您要授予角色的成员所属存储分区关联的存储分区溢出菜单 (
)。
选择修改存储分区权限。
点击 + 添加成员按钮。
在新成员字段中,输入需要访问您存储分区的一个或多个身份。
从选择角色下拉菜单中选择一个或多个角色。 您选择的角色将显示在窗格中,其中包含对角色授予的权限的简短说明。
点击保存。
请参阅问题排查,了解如何获取有关 Cloud Storage 浏览器中失败操作的详细错误信息。
gsutil
使用 gsutil iam ch
命令:
gsutil iam ch MEMBER_TYPE:MEMBER_NAME:IAM_ROLE gs://BUCKET_NAME
其中:
MEMBER_TYPE
是您要向其授予存储分区访问权限的成员类型,例如user
。MEMBER_NAME
是您要向其授予存储分区访问权限的成员的名称,例如jane@gmail.com
。IAM_ROLE
是您要向成员授予的 IAM 角色,例如roles/storage.objectViewer
。BUCKET_NAME
是您要向成员授予其访问权限的存储分区的名称,例如my-bucket
。
如需查看更多示例以了解如何设置 MEMBER_TYPE:MEMBER_NAME:IAM_ROLE
格式,请参阅 gsutil iam ch
参考页面。
代码示例
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
创建一个包含以下信息的 .json 文件:
{ "bindings":[ { "role": "IAM_ROLE", "members":[ "MEMBER_NAME" ] } ] }
其中:
使用
cURL
,通过PUT setIamPolicy
请求调用 JSON API:curl -X PUT --data-binary @JSON_FILE_NAME.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的文件的名称。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要向成员授予其访问权限的存储分区的名称,例如my-bucket
。
查看存储分区的 IAM 政策
控制台
- 在 Google Cloud Console 中打开 Cloud Storage 浏览器。
打开 Cloud Storage 浏览器 点击您要查看的角色成员所在存储分区关联的存储分区溢出菜单 (
)。
选择修改存储分区权限。
展开所需角色以查看已分配给该角色的成员。
(可选)使用搜索栏,按角色或成员过滤结果。
如果按成员进行搜索,结果中将显示成员分配到的每个角色。
gsutil
使用 gsutil iam get
命令:
gsutil iam get gs://BUCKET_NAME
其中 BUCKET_NAME
是您要查看 IAM 政策的存储分区的名称。例如 my-bucket
。
代码示例
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
使用
cURL
,通过GET getIamPolicy
请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要查看 IAM 政策的存储分区的名称。例如my-bucket
。
从存储分区级层政策中移除成员
控制台
- 在 Google Cloud Console 中打开 Cloud Storage 浏览器。
打开 Cloud Storage 浏览器 点击您要从中移除成员角色的存储分区关联的存储分区溢出菜单 (
)。
选择修改存储分区权限。
展开角色(包含要移除的成员)。
点击垃圾箱图标。
在出现的叠加窗口中,点击移除。
请参阅问题排查,了解如何获取有关 Cloud Storage 浏览器中失败操作的详细错误信息。
gsutil
使用带有 -d
标志的 gsutil iam ch
命令:
gsutil iam ch -d MEMBER_TYPE:MEMBER_NAME gs://BUCKET_NAME
其中:
MEMBER_TYPE
是您要从政策中移除的成员的类型,例如user
。MEMBER_NAME
是您要从政策中移除的成员的名称,例如jane@gmail.com
。BUCKET_NAME
是您要从中移除成员访问权限的存储分区的名称,例如my-bucket
。
如需查看更多示例以了解如何设置 MEMBER_TYPE:MEMBER_NAME
格式,请参阅 gsutil iam ch
参考页面。
代码示例
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
获取应用于项目的现有政策。为此,请使用
cURL
,通过GET getIamPolicy
请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/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.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/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 Console 中打开 Cloud Storage 浏览器。
打开 Cloud Storage 浏览器 点击与存储分区相关联的行最右侧的存储分区溢出菜单 (
)。
选择修改存储分区权限。
点击添加成员。
对于新成员,填写您要向其授予存储分区访问权限的成员。
对于您要应用条件的每个角色:
选择要授予成员的角色。
点击添加条件,以打开修改条件表单。
填写条件的标题。说明字段为选填字段。
使用条件构建器直观地构建条件,或使用条件编辑器标签页输入 CEL 表达式。
点击保存可返回添加成员表单。如需添加多个角色,请点击添加其他角色。
点击保存。
请参阅问题排查,了解如何获取有关 Cloud Storage 浏览器中失败操作的详细错误信息。
gsutil
使用
gsutil iam
命令将存储分区的 IAM 政策保存到临时 JSON 文件中。gsutil iam get gs://BUCKET_NAME > /tmp/policy.json
其中
BUCKET_NAME
是您要检索 IAM 政策的存储分区的名称。例如my-bucket
。在文本编辑器中编辑
/tmp/policy.json
文件,以便向 IAM 政策中的绑定添加新条件:{ "version": VERSION, "bindings": [ { "role": "IAM_ROLE", "members": [ "MEMBER_NAME" ], "condition": { "title": "TITLE", "description": "DESCRIPTION", "expression": "EXPRESSION" } ], "etag": "ETAG" }
其中:
VERSION
是 IAM 政策的版本,对于具有 IAM Conditions 的存储分区来说,该值需要为 3。IAM ROLE
是应用条件的角色。例如roles/storage.objectViewer
。MEMBER_NAME
是应用条件的成员。例如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
。使用
gsutil iam
为存储分区设置修改后的 IAM 政策。gsutil iam set /tmp/policy.json gs://BUCKET_NAME
代码示例
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
使用
GET getIamPolicy
请求将存储分区的 IAM 政策保存到临时 JSON 文件中:curl \ 'https://storage.googleapis.com/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": [ "MEMBER_NAME" ], "condition": { "title": "TITLE", "description": "DESCRIPTION", "expression": "EXPRESSION" } ], "etag": "ETAG" }
其中:
VERSION
是 IAM 政策的版本,对于具有 IAM Conditions 的存储分区来说,该值需要为 3。IAM_ROLE
是应用条件的角色。例如roles/storage.objectViewer
。MEMBER_NAME
是应用条件的成员。例如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.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。
从存储分区中移除条件
控制台
- 在 Google Cloud Console 中打开 Cloud Storage 浏览器。
打开 Cloud Storage 浏览器 点击与存储分区相关联的行最右侧的存储分区溢出菜单 (
)。
选择修改存储分区权限。
展开包含您要移除的条件的角色。
点击与条件相关联的成员对应的修改菜单 (
)。
在显示的修改权限叠加层中,点击您希望删除的条件的名称。
在显示的修改条件叠加层中,点击删除,然后点击确认。
点击保存。
请参阅问题排查,了解如何获取有关 Cloud Storage 浏览器中失败操作的详细错误信息。
gsutil
使用
gsutil iam
命令将存储分区的 IAM 政策保存到临时 JSON 文件中。gsutil iam get gs://BUCKET_NAME > /tmp/policy.json
在文本编辑器中编辑
/tmp/policy.json
文件以从 IAM 政策中移除条件。使用
gsutil iam
为存储分区设置修改后的 IAM 政策。gsutil iam set /tmp/policy.json gs://BUCKET_NAME
代码示例
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
使用
GET getIamPolicy
请求将存储分区的 IAM 政策保存到临时 JSON 文件中:curl \ 'https://storage.googleapis.com/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.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要修改 IAM 政策的存储分区的名称。例如my-bucket
。
将 IAM 用于项目
以下各部分展示了如何在项目中完成基本的 IAM 任务。请注意,与大多数 Cloud Storage 任务相比,这些任务使用单独的命令行命令 gcloud
和单独的端点 cloudresourcemanager.googleapis.com
。
您必须具备 resourcemanager.projects.getIamPolicy
和 resourcemanager.projects.setIamPolicy
IAM 权限才能完成以下任务。
将成员添加到项目级政策
如需查看与 Cloud Storage 关联的角色列表,请参阅 IAM 角色。如需了解可授予 IAM 角色的实体,请参阅成员类型。
控制台
- 在 Google Cloud Console 中打开 IAM 和管理浏览器。
打开“IAM 和管理”浏览器 在顶栏的项目下拉菜单中,选择要添加成员的项目。
点击添加。系统会显示向项目添加成员,角色对话框。
在新成员字段中,指定您要授予访问权限的实体的名称。
在选择角色下拉菜单中,向成员授予适当的角色。
您可以在项目和存储空间子菜单中找到影响 Cloud Storage 存储分区和对象的角色。
点击保存。
gsutil
项目级 IAM 政策通过 gcloud
命令进行管理,该命令是 Google Cloud SDK 的一部分。如需添加项目级政策,请使用 gcloud beta projects add-iam-policy-binding
。
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
创建一个包含以下信息的 .json 文件:
{ "policy": { "version": "0", "bindings": { "role": "IAM_ROLE", "members": "MEMBER_NAME" }, } }
其中:
IAM_ROLE
是您要向成员授予的 IAM 角色,例如roles/storage.objectViewer
。MEMBER_NAME
是您要向其授予项目访问权限的成员的类型和名称,例如user:jane@gmail.com
。
使用
cURL
,通过POST setIamPolicy
请求调用 Resource Manager API:curl -X POST --data-binary @JSON_FILE_NAME.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的文件的名称。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。PROJECT_ID
是您要授予成员访问权限的项目的 ID。例如my-project
。
查看项目的 IAM 政策
控制台
- 在 Google Cloud Console 中打开 IAM 和管理浏览器。
打开“IAM 和管理”浏览器 在顶栏的项目下拉菜单中,选择要查看的政策所属的项目。
查看项目权限的方法有两种:
- 按成员查看:查看与各个成员相关联的角色列,了解各成员具有哪些角色。
- 按角色查看:使用与各个角色相关联的下拉列表,查看哪些成员具有此角色。
gsutil
项目级 IAM 政策通过 gcloud
命令进行管理,该命令是 Google Cloud SDK 的一部分。如需查看项目的 IAM 政策,请使用 gcloud beta projects get-iam-policy
命令。
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
使用
cURL
,通过POST getIamPolicy
请求调用 Resource Manager API:curl -X POST \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Length: 0" \ "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。PROJECT_ID
是您要授予成员访问权限的项目的 ID。例如my-project
。
从项目级层政策中移除成员
控制台
- 在 Google Cloud Console 中打开 IAM 和管理浏览器。
打开“IAM 和管理”浏览器 在顶栏的项目下拉菜单中,选择要移除成员的项目。
确保您正在按成员查看权限,并选择要移除的成员。
点击移除。
在出现的叠加窗口中,点击确认。
gsutil
项目级 IAM 政策通过 gcloud
命令进行管理,该命令是 Google Cloud SDK 的一部分。如需移除项目级政策,请使用 gcloud beta projects remove-iam-policy-binding
。
JSON
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。
获取应用于项目的现有政策。为此,请使用
cURL
通过POST getIamPolicy
请求调用 Resource Manager API:curl -X POST \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Length: 0" \ "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。PROJECT_ID
是您要添加成员访问权限的项目的 ID。例如my-project
。
创建一个包含您在上一步中检索的政策的 .json 文件。
修改 .json 文件以从政策中移除该成员。
使用
cURL
,通过POST setIamPolicy
请求调用 Resource Manager API:curl -X POST --data-binary @JSON_FILE_NAME.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的文件的名称。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。PROJECT_ID
是您要授予成员访问权限的项目的 ID。例如my-project
。
后续步骤
- 了解如何公开共享您的数据。
- 详细了解 Cloud Storage 中的 IAM。
- 查看具体的共享和协作示例。
- 了解用于控制数据的访问权限的选项。