OSS允许您对文件(Object)设置访问权限,方便您控制资源访问的方式。
读写权限类型
文件的访问权限(ACL)有以下四种:
访问权限 | 描述 | 访问权限值 |
---|---|---|
继承Bucket | 文件遵循存储空间的访问权限。 | default |
私有 | 文件的拥有者和授权用户有该文件的读写权限,其他用户没有权限操作该文件。 | private |
公共读 | 文件的拥有者和授权用户有该文件的读写权限,其他用户只有文件的读权限。请谨慎使用该权限。 | public-read |
公共读写 | 所有用户都有该文件的读写权限。请谨慎使用该权限。 | public-read-write |
示例代码
创建Object时,默认为继承Bucket权限。之后您可以通过putACL
来设置Object的其他访问权限。
let OSS = require('ali-oss')
let client = new OSS({
// yourRegion填写Bucket所在地域。以华东1(杭州)为例,yourRegion填写为oss-cn-hangzhou。
region: 'yourRegion',
// 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// 填写Bucket名称,例如examplebucket。
bucket: "examplebucket"
});
async function getACL () {
try {
let result = await client.getACL('my-object');
console.log(result.acl); // default
await client.putACL('my-object', 'public-read');
let result = await client.getACL('my-object');
console.log(result.acl); // public-read
} catch (e) {
console.log(e);
}
}
getACL();
重要
- 如果没有设置Object的权限,即Object的ACL为继承Bucket,此时Object 的权限和Bucket权限一致。
- 如果Object的权限为继承Bucket以外的三种权限时,访问该Object进行权限认证时会优先判断Object的权限,此时Bucket的权限设置会被忽略。
- 允许匿名访问时(即设置了 public-read 或者 public-read-write 权限),则可以直接通过浏览器访问,例如
http://bucket-name.oss-cn-hangzhou.aliyuncs.com/object.jpg
。
相关文档
- 关于Object访问权限的完整示例代码,请参见GitHub示例。
- 关于设置Object访问权限的API接口说明,请参见PutObjectACL。
- 关于获取Object访问权限的API接口说明,请参见GetObjectACL。