本页面介绍如何将您拥有的对象设为可供公共互联网上的所有人读取。如需了解如何访问已公开的数据,请参阅访问公开数据。
当对象被公开共享时,只要对象处于公开状态,则任何知道对象 URI 的用户都可以访问该对象。
所需的角色
如需获得将对象设为可公开读取所需的权限,请让您的管理员为您授予以下角色:
将个别对象设为可公开读取:Storage Object Admin (
roles/storage.objectAdmin
)- 如果您打算使用 Google Cloud 控制台,则需要 Storage Admin (
roles/storage.admin
) 角色,而不是 Storage Object Admin 角色。
- 如果您打算使用 Google Cloud 控制台,则需要 Storage Admin (
将存储桶中的所有对象设为可公开读取:Storage Admin (
roles/storage.admin
) 或 Storage Legacy Bucket Owner (roles/storage.legacyBucketOwner
)
这些角色可提供将对象设为公开所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
只有在使用 Google Cloud 控制台执行本页面上的任务时,才需要以下权限:
storage.buckets.list
storage.objects.list
如需了解如何授予存储桶的角色,请参阅将 IAM 与存储桶搭配使用。
将个别对象设为可公开读取
如需将个别对象设为可供公共互联网上的所有人读取,请为主账号 allUsers
授予 READER
角色:
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
点击您要公开的对象所在存储桶的名称,然后找到该对象(如果该对象位于子目录中)。
点击对象的名称。
点击修改访问权限。
在出现的叠加窗口中,点击 add_box 添加条目按钮。
为 allUsers 添加权限。
- 为“实体”选择公共。
- 为“名称”选择 allUsers。
- 为“访问权限”选择读取者。
点击保存。
授予公开访问权限后,复制网址将显示在“公开访问权限”列中。您可以点击此按钮以获取对象的公开网址。
如需了解如何在 Google Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
在开发环境中,运行
objects update
命令并使用--add-acl-grant
标志:gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --add-acl-grant=entity=AllUsers,role=READER
其中:
BUCKET_NAME
是包含待公开对象的存储桶的名称。例如my-bucket
。OBJECT_NAME
是您要公开的对象的名称。例如pets/dog.png
。
客户端库
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 API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
Authorization
标头中。创建一个包含以下信息的 JSON 文件:
{ "entity": "allUsers", "role": "READER" }
使用
cURL
,通过Insert
ACL 请求调用 JSON API:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/acl"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的文件的路径。BUCKET_NAME
是包含待公开对象的存储桶的名称。例如my-bucket
。OBJECT_NAME
是您要公开的对象的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。
XML API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
Authorization
标头中。创建一个包含以下信息的 XML 文件:
<AccessControlList> <Entries> <Entry> <Scope type="AllUsers"/> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
使用
cURL
,通过Set Object ACL
请求调用 XML API:curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?acl"
其中:
XML_FILE_NAME
是您在第 2 步中创建的文件的路径。BUCKET_NAME
是包含待公开对象的存储桶的名称。例如my-bucket
。OBJECT_NAME
是您要公开的对象的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。
将存储桶中的所有对象设为可供公开读取
如需将存储桶中的所有对象设为可供公共互联网上的所有人读取,请为主账号 allUsers
授予 Storage Object Viewer (roles/storage.objectViewer
) 角色:
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击您要设为公开的存储桶的名称。
选择页面顶部附近的权限标签。
在权限部分中,点击
授予访问权限按钮。系统会显示“授予访问权限”对话框。
在新的主账号字段中,输入
allUsers
。在选择角色下拉列表的过滤条件框中输入 Storage Object Viewer,然后从过滤后的结果中选择 Storage Object Viewer。
点击保存。
点击允许公开访问。
授予公开访问权限后,针对每个对象的复制网址将显示在“公开访问权限”列中。您可以点击此按钮以获取对象的公开网址。
如需了解如何在 Google Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
在开发环境中,运行
buckets add-iam-policy-binding
命令:gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
其中
BUCKET_NAME
是您要公开其对象的存储桶的名称。例如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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Terraform
您可以使用 Terraform 资源将存储桶中的所有对象设为公开。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
Authorization
标头中。创建一个包含以下信息的 JSON 文件:
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":["allUsers"] } ] }
使用
cURL
,通过PUT
Bucket 请求调用 JSON API:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的文件的路径。BUCKET_NAME
是您要公开其对象的存储桶的名称。例如my-bucket
。
XML API
XML API 不支持将存储桶中的所有对象设为可供公开读取。使用 Google Cloud 控制台或 gcloud storage
。