本文介绍如何管理存储空间(Bucket)和对象(Object)的访问权限。
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,有四种访问权限:
- 继承 Bucket:单个文件的读写权限按 Bucket 的读写权限为准。
说明 如果不设置文件 ACL,则默认值为
继承 Bucket。 - 其他三种权限,如公共读写(public-read-write)、公共读(public-read)、私有(private) 与 Bucket 访问权限相同。
创建 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
更多关于访问权限控制的内容请参考访问控制。
发布者:佚, 佚名,转转请注明出处:https://www.cms2.cn/aliyun/3110.html