设置访问控制权限
使用访问控制列表(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
});