Skip to content
大纲

Bucket权限管理

设置Bucket的访问权限

如下代码将Bucket的权限设置为了private。

java
public void setBucketPrivate (FosClient client, String bucketName) {
    client.setBucketAcl(<bucketName>, CannedAccessControlList.Private);}

CannedAccessControlList是枚举类型,包含三个值: Private 、 PublicRead 、 PublicReadWrite ,它们分别对应相关权限。具体内容可以参考FOS API文档 使用CannedAcl方式的权限控制

设置更多Bucket访问权限

  1. 通过设置refer白名单方式设置防盗链
java
String jsonAcl = "";
client.setBucketAcl("bucketName", jsonAcl)

其中jsonAcl为

json
{
  "accessControlList": [
    {
      "grantee": [
        {
          "id": "*"
        }
      ],
      "permission": ["FULL_CONTROL"],
      "condition": {
        "referer": {
          "stringEquals": ["http://test/index"]
        }
      }
    }
  ]
}
  1. 限制客户端IP访问,只允许部分客户端IP访问
java
String jsonAcl = "";
client.setBucketAcl("bucketName", jsonAcl)

其中jsonAcl为

json
{
  "accessControlList": [
    {
      "grantee": [
        {
          "id": "*"
        }
      ],
      "permission": ["FULL_CONTROL"],
      "condition": {
        "ipAddress": ["192.170.0.6"]
      }
    }
  ]
}

查看Bucket的权限

如下代码可以查看Bucket的权限:

java
GetBucketAclResponse aclResponse = client.getBucketAcl("bucketName");
System.out.println(aclResponse.getAccessControlList().toString());

getBucketAcl方法返回的解析类中可供调用的参数有:

参数说明
ownerBucket owner信息
idBucket owner的租户CODE和租户ID的组合字符串,组合方式:{租户CODE}-
acl标识Bucket的权限列表
grantee标识被授权人
-id被授权租户CODE和租户ID的组合字符串
permission标识被授权租户的权限