对象存储访问权限
JuiceFS 的数据保存在用户提供的对象存储之中,因此需要为 JuiceFS 客户端配置相应的访问凭证 (accesskey
和 secretkey
),以获取对应存储桶 (bucket
) 的访问权限。具体配置方法视不同的云服务商而定。
配置方法
为 JuiceFS 配置对象存储访问权限的一般步骤如下:
- 创建对应存储桶的访问策略。
- 关联访问策略到访问主体(用户、角色或服务)。
- 获取访问主体的访问密钥(参见 如何获取对象存储的 API 密钥)。
- 使用访问密钥完成认证及挂载(参见 挂载)。
访问策略
对于常规的读写操作,JuiceFS 仅需要对象存储的 GetObject
, PutObject
, DeleteObject
和 HeadObject
权限。可以把访问权限限制在指定存储桶(默认为 juicefs-<fsname>
)及指定前缀(固定使用文件系统名称)的资源范围内。
几种常见对象存储的访问策略示例如下。
阿里云 OSS
{
"Statement": [
{
"Action": [
"oss:DeleteObject",
"oss:GetObject",
"oss:HeadObject",
"oss:PutObject"
],
"Effect": "Allow",
"Resource": [
"acs:oss:*:*:juicefs-example/example/*"
]
}
],
"Version": "1"
}
腾讯云 COS
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"cos:DeleteObject",
"cos:GetObject",
"cos:HeadObject",
"cos:PutObject"
],
"Resource": [
"qcs::cos:ap-guangzhou:uid/1250000000:juicefs-example-1250000000/example/*"
]
}
],
"Version": "2.0"
}
Amazon S3
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:HeadObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::juicefs-example/example/*"
]
}
]
}
补充说明
- 由于 JuiceFS 客户端需要在后台进行碎片合并等操作,即便是只读方式的挂载点也需要获取以上所列的全部四种权限。
- 如果目标存储桶尚不存在,JuiceFS 将在第一次挂载时尝试创建,此时将需要
CreateBucket
权限。 - 如果需要导入文件,或者启用了复制功能,则还需要
ListObjects
权限。 - 某些老版本客户端(\<= 4.4.4)需要前缀
testing/*
的权限用于挂载时的自检过程。