全部产品
对象存储 OSS

设置访问权限

更新时间:2017-06-07 13:26:11   分享:   

OSS允许用户对Bucket和Object分别设置访问权限,方便用户控制自己的资源可以被如何访问。对于Bucket,有三种访问权限:

  • public-read-write 允许匿名用户向该Bucket中创建/获取/删除Object
  • public-read 允许匿名用户获取该Bucket中的Object
  • private 不允许匿名访问,所有的访问都要经过签名

创建Bucket时,默认是private权限。之后用户可以通过putBucketACL来设置Bucket的权限,通过getBucketACL来获取Bucket的权限。

  1. var co = require('co');
  2. var OSS = require('ali-oss')
  3. var client = new OSS({
  4. region: '<Your region>'
  5. accessKeyId: '<Your AccessKeyId>',
  6. accessKeySecret: '<Your AccessKeySecret>',
  7. bucket: '<Your bucket name>'
  8. });
  9. co(function* () {
  10. var result = yield client.getBucketACL('bucket-name');
  11. console.log(result);
  12. var result = yield client.putBucketACL('bucket-name', 'region', 'acl');
  13. console.log(result);
  14. }).catch(function (err) {
  15. console.log(err);
  16. });

对于Object,有四种访问权限:

  • default 继承所属的Bucket的访问权限,即与所属Bucket的权限值一样
  • public-read-write 允许匿名用户读写该Object
  • public-read 允许匿名用户读该Object
  • private 不允许匿名访问,所有的访问都要经过签名

创建Object时,默认为default权限。之后用户可以通过putACL来设置Object的权限。

  1. var co = require('co');
  2. var OSS = require('ali-oss')
  3. var client = new OSS({
  4. region: '<Your region>'
  5. accessKeyId: '<Your AccessKeyId>',
  6. accessKeySecret: '<Your AccessKeySecret>',
  7. bucket: '<Your bucket name>'
  8. });
  9. co(function* () {
  10. var result = yield client.getACL('my-object');
  11. console.log(result.acl); // default
  12. yield client.putACL('my-object', 'public-read');
  13. var result = yield client.getACL('my-object');
  14. console.log(result.acl); // public-read
  15. }).catch(function (err) {
  16. console.log(err);
  17. });

需要注意的是:

  1. 如果设置了Object的权限(非default),则访问该Object时进行权限认证时会优先判断Object的权限,而Bucket的权限设置会被忽略。
  2. 允许匿名访问时(设置了public-read或者public-read-write权限),用户可以直接通过浏览器访问,例如:

    1. http://bucket-name.oss-cn-hangzhou.aliyuncs.com/object.jpg

更多关于访问权限控制的内容请参考 访问控制

本文导读目录
本文导读目录
以上内容是否对您有帮助?