设置对象 ACL

如需更改对象的 ACL,您需要发出范围限定为存储分区和对象的 PUT 请求,并使用 acl 查询字符串参数。您还必须在请求正文中包含 XML 文档,其中包含要应用的 ACL 设置。

您还可以在上传对象时指定 ACL。为此,您可以使用 x-goog-acl 请求标头。使用 x-goog-acl 请求标头时,您可以应用一个预定义的 ACL。如果您在上传对象时未使用 x-goog-acl 请求标头,则默认 ACL(不公开)应用于对象。

请记住,存储分区的 ACL 会确定用户是否有权将对象上传到该存储分区中。如果存储分区向匿名用户授予 WRITE 权限,则用户可以在不进行身份验证的情况下上传对象。否则,所有上传请求都必须经过身份验证,只有具有 WRITE 权限的用户可以将对象上传到存储分区中。

您必须具有 FULL_CONTROL 权限才能将 ACL 应用于现有对象。

查询字符串参数

参数 说明 必需
acl 将请求范围限制为 ACL。只有在使用 PUT Object 方法更改现有对象的 ACL 时,您才可以使用此方法。您必须在请求正文中的 XML 文件中指定 ACL。
generation 指定要为其更新 ACL 的世代。只有在使用 PUT Object 方法更改现有对象的 ACL 时,您才可以使用此方法。您必须在请求正文中的 XML 文件中指定 ACL。

如需了解您在创建和使用签名网址时包含的参数,请参阅签名网址查询字符串参数

请求标头

请参阅常见请求标头

请求正文元素

以下请求正文元素仅适用于使用 acl 查询字符串参数将 ACL 应用到现有对象时。

元素 说明
Owner 对象所有者信息的容器。
ID 要为其应用 ACL 的对象所有者或用户或群组的 Cloud Storage ID 的 Cloud Storage ID。
Name GroupByEmailGroupByIdUserByEmailUserById的评论字段。如果您在应用 ACL 时未在 Name 中指定任何值,Cloud Storage 系统将使用您在 EmailAddress 中指定的电子邮件地址填充此字段。
AccessControlList 您要应用的 ACL 的容器。
Entries 您要应用的 ACL 条目的容器。
Entry 您要应用的 ACL 条目。
Scope ACL 所适用的范围。
Permission 您要授予的权限。可以是任何 Cloud Storage 权限,包括 READWRITEFULL_CONTROL
EmailAddress Google 帐号电子邮件地址或 Google 群组电子邮件地址。
Domain Google 工作区或 Cloud Identity 网域。

请求语法

以下语法适用于使用 acl 查询字符串参数的 PUT 对象请求。

PUT /OBJECT_NAME?acl HTTP/1.1
Host: BUCKET_NAME.storage.googleapis.com
Date: DATE
Content-Length: REQUEST_BODY_LENGTH
Content-Type: MIME_TYPE
Authorization: AUTHENTICATION_STRING

XML_DOCUMENT_DEFINING_ACLS

以下语法适用于使用 acl 查询字符串参数以及 generationmetageneration 的条件 PUT 对象请求。

PUT /object?acl HTTP/1.1
Host: bucket.storage.googleapis.com
Date: DATE
Content-Length: REQUEST_BODY_LENGTH
Content-Type: MIME_TYPE
Authorization: AUTHENTICATION_STRING
x-goog-if-generation: GENERATION_NUMBER
x-goog-if-metageneration: META_GENERATION_NUMBER

XML_DOCUMENT_DEFINING_ACLS

以下语法适用于使用 acl 查询字符串参数以及 generationmetageneration 的历史记录对象的条件 PUT 对象。

PUT /object?acl&generation=136088769710500 HTTP/1.1
Host: bucket.storage.googleapis.com
Date: DATE
Content-Length: REQUEST_BODY_LENGTH
Content-Type: MIME_TYPE
Authorization: AUTHENTICATION_STRING
x-goog-if-metageneration: META_GENERATION_NUMBER

XML_DOCUMENT_DEFINING_ACLS

响应标头

请求可以返回各种响应标头,具体取决于您使用的请求标头。

响应正文元素

响应的响应正文中不包含 XML 文档。

示例

以下示例将 ACL 应用于 london.jpg 对象,该对象存储在旅行地图存储分区中。ACL 授予 jane@gmail.com FULL_CONTROL 权限,该权限可让 Jane 下载 london.jpg,并更改 london.jpg 的 ACL。ACL 还为 Cloud Storage 群组 READ 权限授予 london.jpg 权限,该权限允许群组中的每个成员下载 london.jpg。

请求

PUT /london.jpg?acl HTTP/1.1
Host: travel-maps.storage.googleapis.com
Date: Sat, 20 Feb 2010 17:08:44 GMT
Content-Length: 682
Content-Type=application/xml; charset=UTF-8
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

<?xml version="1.0" encoding="UTF-8"?>
<AccessControlList>
  <Owner>
    <ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID>
    <Name></Name>
  </Owner>
  <Entries>
    <Entry>
      <Scope type="UserById">
        <ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID>
        <Name></Name>
      </Scope>
      <Permission>FULL_CONTROL</Permission>
    </Entry>
    <Entry>
      <Scope type="UserByEmail">
        <EmailAddress>jane@gmail.com</EmailAddress>
        <Name></Name>
      </Scope>
      <Permission>FULL_CONTROL</Permission>
    </Entry>
    <Entry>
      <Scope type="GroupByEmail">
        <EmailAddress>gs-discussion@googlegroups.com</EmailAddress>
      </Scope>
      <Permission>READ</Permission>
    </Entry>
  </Entries>
</AccessControlList>

响应

HTTP/1.1 200 OK
Date: Sat, 20 Feb 2010 17:08:45 GMT
Content-Length: 0
Content-Type: text/html