访问权限
OSS允许对Bucket和Object分别设置访问权限,方便您控制资源访问的方式。
更多关于访问权限控制的内容请参考访问控制。
Bucket访问权限
对于Bucket,有三种访问权限:
- Public-read-write:允许匿名用户对该存储空间内文件进行读写操作。
- Public-read:允许匿名用户对该存储空间内文件进行读操作。
- Private:不允许匿名访问,所有的访问都要经过签名。
创建Bucket时,默认是private权限。创建Bucket后您可以通过
putBucketACL
来设置Bucket的权限,还可以通过getBucketACL
来获取Bucket的权限。
let OSS = require('ali-oss')
let client = new OSS({
region: '<Your region>'
accessKeyId: '<Your AccessKeyId>',
accessKeySecret: '<Your AccessKeySecret>',
bucket: '<Your bucket name>'
});
async function bucketACL () {
try {
let result = await client.getBucketACL('bucket-name');
console.log(result);
let result = await client.putBucketACL('bucket-name', 'acl');
console.log(result);
} catch (e) {
console.log(e);
}
}
bucketACL();
Object访问权限
对于Object,有四种访问权限:
- default:继承所属的Bucket的访问权限,即与所属Bucket的访问权限一样。
- public-read-write:允许匿名用户读写该Object。
- public-read:允许匿名用户读该Object。
- private:不允许匿名访问,所有的访问都要经过签名。
创建Object时,默认为继承Bucket权限。之后您可以通过
putACL
来设置Object的权限。
let OSS = require('ali-oss')
let client = new OSS({
region: '<Your region>'
accessKeyId: '<Your AccessKeyId>',
accessKeySecret: '<Your AccessKeySecret>',
bucket: '<Your bucket name>'
});
async function bucketACL () {
try {
let result = await client.getACL('my-object');
console.log(result.acl); // default
await client.putACL('my-object', 'public-read');
result = await client.getACL('my-object');
console.log(result.acl); // public-read
} catch (e) {
console.log(e);
}
}
注意
- 如果没有设置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
。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论