开发者社区> 问答> 正文

Go-SDK之如何实现设置访问权限?

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

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

创建Bucket时,默认是private权限。之后用户可以通过Client.SetBucketACL来设置 Bucket的权限。上面三种权限分布对应Go SDK中的常量ACLPublicReadWrite、ACLPublicRead、ACLPrivate。

Bucket访问权限


提示:
  • Bucket访问权限设置的示例代码在sample/bucket_acl.go。    import "fmt"
  •     import "github.com/aliyun/aliyun-oss-go-sdk/oss"
  •     client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  •     if err != nil {
  •         // HandleError(err)
  •     }
  •     // 设置Bucket ACL
  •     err = client.SetBucketACL("my-bucket", oss.ACLPublicRead)
  •     if err != nil {
  •         // HandleError(err)
  •     }
  •     // 查看Bucket ACL
  •     aclRes, err := client.GetBucketACL("my-bucket")
  •     if err != nil {
  •         // HandleError(err)
  •     }
  •     fmt.Println("Bucket ACL:", aclRes.ACL)



Object访问权限


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

创建Object时,默认为default权限。之后用户可以通过 Bucket.SetObjectACL来设置Object的权限。上面四种权限分布对应 Go SDK中的常量ACLDefault、ACLPublicReadWrite、ACLPublicRead、ACLPrivate。

提示:
  • Object访问权限设置的示例代码在sample/object_acl.go。    import "fmt"
  •     import "github.com/aliyun/aliyun-oss-go-sdk/oss"
  •     client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  •     if err != nil {
  •         // HandleError(err)
  •     }
  •     bucket, err := client.Bucket("my-bucket")
  •     if err != nil {
  •         // HandleError(err)
  •     }
  •     // 设置Object的访问权限
  •     err = bucket.SetObjectACL("my-object", oss.ACLPrivate)
  •     if err != nil {
  •         // HandleError(err)
  •     }
  •     // 查看Object的访问权限
  •     aclRes, err := bucket.GetObjectACL("my-object")
  •     if err != nil {
  •         // HandleError(err)
  •     }
  •     fmt.Println("Object ACL:", aclRes.ACL)


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

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

展开
收起
青衫无名 2017-10-19 14:32:01 1797 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Go语言路上踩过的坑 立即下载
gohbase :HBase go客户端 立即下载
Go构建日请求千亿级微服务实践 立即下载

相关实验场景

更多