设置访问控制权限

使用访问控制列表(ACL)在存储桶上设置桶访问权限。 要设置存储桶的ACL,您必须具有WRITE_ACP权限。您可以使用以下两种方式之一来设置存储桶的权限:在请求正文中指定ACL、使用请求标头指定权限。注意:您不能同时使用正文和请求标头指定访问权限。

  • oos支持一组预定义的ACL,称为canned ACL。 每个canned ACL都有一组预定义的被许可人和权限, 预定义的访问策略使用请求标头指定权限,见下表:
权限 描述 SDK对应值
私有读写 所有者获得FULL_CONTROL。 其他人没有访问权限(默认)。 private
公共读私有写 所有者获得FULL_CONTROL。 AllUsers组获得READ访问权限。 public-read
公共读写 所有者获得FULL_CONTROL。 AllUsers组具有“读取”和“写入”访问权限。 通常不建议在存储桶上授予此权限。 public-read-write
注册用户可读 所有者获得FULL_CONTROL。 AuthenticatedUsers组获得READ访问权限。 authenticated-read

使用canned ACL设置桶的访问权限示例代码如下:

// 用预定义访问策略设置桶权限
s3Client.setBucketAcl({
       Bucket : 'BUCKET_NAME',
       // 设置桶访问权限
       ACL: private | public-read | public-read-write | authenticated-read,
}, (err, data) => {
       if(err){
              console.error(err);
       }else{
              console.log(data);
       }
});
  • 指定显式访问权限和被授权用户 。这些参数映射到s3Client在ACL中支持的权限集。使用 AccessControlList 设置桶访问权限时,可以设置特定用户对桶的访问权限。桶的 AccessControlList 权限如下表:
权限 SDK对应值
可读,可列出桶下的对象。 READ
可写,可创建/删除/覆盖写该桶下的对象。 WRITE
可读取桶的acl规则。 READ_ACP
可修改桶的acl规则。 WRITE_ACP
完全权限。拥有以上所有权限。 FULL_CONTROL

使用AccesssControlList设置桶的访问权限示例代码如下:

// 以下示例替换了存储桶上的现有ACL。授予存储桶所有者(使用所有者ID指定)FullControl权限,并向用户组授予写入权限。
var params = {
  Bucket: "BUCKET_NAME", 
  // 授予完全权限
  GrantFullControl: 'id=值是oos账户或者是规范用户ID', 
  // 授予可写权限
  GrantWrite: 'uri=授予权限的用户组'
 };
 s3Client.putBucketAcl(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else     console.log(data);           // successful response
 });