允许公共访问
有时提供数据的目的是为了共享。 存储区可能会保存开放数据集,供学术和专用研究使用,或者保存图像存储库,供 Web 应用程序和内容交付网络使用。 使用公共访问组可使这些存储区可供访问。
有三个 IAM 角色可用于对存储区的公共访问: Administrator
,ContentReader
和 ObjectReader
。 它们之间的区别在于,Administrator
和 ContentReader
可以列出存储区中的对象,这对于需要易于列出 (例如,Web UI) 以及读取对象的应用程序很有用。 有关更多信息,请参阅 IAM 参考文档。
使用控制台来设置公共访问
首先,确保您有存储区。 如果没有,请遵循入门教程以熟悉控制台。
启用公共访问权
- 在 IBM Cloud 控制台仪表板中,选择存储以查看资源列表。
- 接下来,从存储菜单中选择具有您的存储区的服务实例。 这将转至 Object Storage 控制台。
- 选择您希望可供公共访问的存储区。 请记住,此策略使 存储区中的所有对象 可供具有相应 URL 的任何人下载。
- 从导航菜单中,选择访问策略。
- 选择公共访问选项卡。
- 单击创建访问策略。 阅读警告后,选择启用。
- 现在,此存储区中的所有对象都可供公共访问!
禁用公共访问权
- 在 IBM Cloud 控制台中的任何位置,选择管理菜单,然后选择访问权 (IAM)。
- 从导航菜单中,选择访问组。
- 选择公共访问以查看当前正在使用的所有公共访问策略的列表。
- 针对要返回到强制实施访问控制的存储区,找到对应的策略。
- 从策略条目最右侧的操作列表中,选择除去。
- 确认对话框,现在已将该策略从存储区中除去。
允许对单个对象设置公共访问
要通过 REST API 使某个对象可供公共访问,可以在请求中包含 x-amz-acl: public-read
头。 设置此头会绕过所有 IAM 策略检查,并支持未经认证的 HEAD
和 GET
请求。 有关端点的更多信息,请参阅端点和存储位置。
此外,HMAC 凭证允许使用预签名 URL 进行临时公共访问。
上传公共对象
curl -X "PUT" "https://{endpoint}/{bucket-name}/{object-name}" \
-H "x-amz-acl: public-read" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: text/plain; charset=utf-8" \
-d "{object-contents}"
允许对现有对象进行公共访问
使用不带有效内容和 ?acl
头的查询参数 x-amz-acl: public-read
允许对对象进行公共访问,而无需覆盖数据。
curl -X "PUT" "https://{endpoint}/{bucket-name}/{object-name}?acl" \
-H "x-amz-acl: public-read" \
-H "Authorization: Bearer {token}"
使公共对象再次成为专用对象
使用不带有效内容和空的 ?acl
头的查询参数 x-amz-acl:
将撤销对对象的公共访问权,而无需覆盖数据。
curl -X "PUT" "https://{endpoint}/{bucket-name}/{object-name}?acl" \
-H "Authorization: Bearer {token}" \
-H "x-amz-acl:"
静态 Web 站点
虽然 IBM Cloud Object Storage 不支持自动静态 Web 站点托管,但可以手动配置 Web 服务器并使用它来提供存储区中托管的可公开访问的内容。 有关更多信息,请参阅 静态 Web 站点选项概述。