OSS允许用户对Bucket和Object分别设置访问权限,方便用户控制自己的资源可 以被如何访问。对于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访问权限设置的示例代码在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权限),用户 可以直接通过浏览器访问,例如 :
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云对象存储服务(OSS)为用户提供了灵活的访问权限控制机制,允许用户针对Bucket(存储空间)和Object(存储在Bucket中的文件)分别设置不同的访问权限,以满足不同场景下的安全需求。以下是基于您提供的信息整理的权限控制概览及操作示例:
Bucket的访问权限分为三种: 1. public-read-write:允许匿名用户向该Bucket中上传、下载和删除Object。 2. public-read:允许匿名用户下载Bucket中的Object,但不能上传或删除。 3. private:默认权限,不允许匿名访问,所有访问请求都需要通过签名验证。
使用Go SDK设置Bucket ACL的示例代码如下:
import (
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func setBucketACL() {
client, err := oss.New("YourEndpoint", "YourAccessKeyId", "YourAccessKeySecret")
if err != nil {
fmt.Println("Error:", err)
return
}
err = client.SetBucketACL("my-bucket", oss.ACLPublicRead)
if err != nil {
fmt.Println("Error setting bucket ACL:", err)
return
}
fmt.Println("Bucket ACL set to Public Read.")
}
Object的访问权限比Bucket更细致,包括四种: 1. default:继承Bucket的访问权限。 2. public-read-write:允许匿名用户读写该Object。 3. public-read:允许匿名用户读取该Object。 4. private:默认权限,不允许匿名访问。
使用Go SDK设置Object ACL的示例代码如下:
import (
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func setObjectACL() {
client, err := oss.New("YourEndpoint", "YourAccessKeyId", "YourAccessKeySecret")
if err != nil {
fmt.Println("Error:", err)
return
}
bucket, err := client.Bucket("my-bucket")
if err != nil {
fmt.Println("Error getting bucket:", err)
return
}
err = bucket.SetObjectACL("my-object", oss.ACLPrivate)
if err != nil {
fmt.Println("Error setting object ACL:", err)
return
}
fmt.Println("Object ACL set to Private.")
}
更多关于OSS访问控制的详细信息和最佳实践,请参考阿里云官方文档的访问控制部分。