对象存储访问权限

JuiceFS 的数据保存在用户提供的对象存储之中,因此需要为 JuiceFS 客户端配置相应的访问凭证 (accesskeysecretkey),以获取对应存储桶 (bucket) 的访问权限。具体配置方法视不同的云服务商而定。

配置方法

为 JuiceFS 配置对象存储访问权限的一般步骤如下:

  1. 创建对应存储桶的访问策略。
  2. 关联访问策略到访问主体(用户、角色或服务)。
  3. 获取访问主体的访问密钥(参见 如何获取对象存储的 API 密钥)。
  4. 使用访问密钥完成认证及挂载(参见 挂载)。

访问策略

对于常规的读写操作,JuiceFS 仅需要对象存储的 GetObject, PutObject, DeleteObjectHeadObject 权限。可以把访问权限限制在指定存储桶(默认为 juicefs-<fsname>)及指定前缀(固定使用文件系统名称)的资源范围内。

几种常见对象存储的访问策略示例如下。

阿里云 OSS

  1. {
  2. "Statement": [
  3. {
  4. "Action": [
  5. "oss:DeleteObject",
  6. "oss:GetObject",
  7. "oss:HeadObject",
  8. "oss:PutObject"
  9. ],
  10. "Effect": "Allow",
  11. "Resource": [
  12. "acs:oss:*:*:juicefs-example/example/*"
  13. ]
  14. }
  15. ],
  16. "Version": "1"
  17. }

腾讯云 COS

  1. {
  2. "Statement": [
  3. {
  4. "Effect": "Allow",
  5. "Action": [
  6. "cos:DeleteObject",
  7. "cos:GetObject",
  8. "cos:HeadObject",
  9. "cos:PutObject"
  10. ],
  11. "Resource": [
  12. "qcs::cos:ap-guangzhou:uid/1250000000:juicefs-example-1250000000/example/*"
  13. ]
  14. }
  15. ],
  16. "Version": "2.0"
  17. }

Amazon S3

  1. {
  2. "Version": "2012-10-17",
  3. "Statement": [
  4. {
  5. "Action": [
  6. "s3:DeleteObject",
  7. "s3:GetObject",
  8. "s3:HeadObject",
  9. "s3:PutObject"
  10. ],
  11. "Effect": "Allow",
  12. "Resource": [
  13. "arn:aws:s3:::juicefs-example/example/*"
  14. ]
  15. }
  16. ]
  17. }

补充说明

  1. 由于 JuiceFS 客户端需要在后台进行碎片合并等操作,即便是只读方式的挂载点也需要获取以上所列的全部四种权限。
  2. 如果目标存储桶尚不存在,JuiceFS 将在第一次挂载时尝试创建,此时将需要 CreateBucket 权限。
  3. 如果需要导入文件,或者启用了复制功能,则还需要 ListObjects 权限。
  4. 某些老版本客户端(\<= 4.4.4)需要前缀 testing/* 的权限用于挂载时的自检过程。