OBS JAVA SDK Demo:设置桶策略

举报
lanxinliuli 发表于 2019/06/29 15:23:56 2019/06/29
1.2w+ 0 0
【摘要】 1 背景介绍OBS桶策略可以给特定用户设置特定的权限。下面代码展示通过JAVA SDK给用户桶设置高级桶策略。2 代码展示需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。前提条件:已创建OBS桶,例如my-bucket123设置的桶策略为:给用...

1      背景介绍

OBS桶策略可以给特定用户设置特定的权限。下面代码展示通过JAVA SDK给用户桶设置高级桶策略。

2      代码展示

需要先下载OBS最新的JAVA SDK,参考官网链接https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。

前提条件:已创建OBS桶,例如my-bucket123

设置的桶策略为:给用户userB给予桶的所有权限和桶内所有对象的读权限

桶策略格式如下,其中domainuser请根据实际账号ID和用户ID进行配置:

{
  "Statement": [
    {
      "Sid": "Stmt1375240018062",
      "Action": [
        "*"
      ],
      "Effect": "Allow",
      "Resource": "my-bucket123",
      "Principal": {
        "ID": [
          "domain/c41**************************8cf:user/053**************************2c4 "
        ]
      }
    },
    {
      "Sid": "Stmt1375240018063",
      "Action": [
        "Get*"
      ],
      "Effect": "Allow",
      "Resource": "my-bucket123/*",
      "Principal": {
        "ID": [
          "domain/c41**************************8cf:user/053**************************2c4 "
        ]
      }
    }
  ]
}

Demo代码如下:

 package samples_java;
import com.obs.services.ObsClient;
import com.obs.services.ObsConfiguration;
import com.obs.services.exception.ObsException;
import java.io.IOException;

public class BucketTestSample {
     private static final String endPoint = "XXX";

     private static final String ak = "XXX";

     private static final String sk = "XXX";

     private static ObsClient obsClient;

     private static String bucketName = "my-bucket123";
     
     public static void main(String[] args)
             throws IOException {
         ObsConfiguration config = new ObsConfiguration();
         config.setSocketTimeout(30000);
         config.setConnectionTimeout(10000);
         config.setEndPoint(endPoint);
         try {

             obsClient = new ObsClient(ak, sk, config);

             String  Policy = "{\"Statement\":[{\"Sid\":\"Stmt1375240018062\",\"Action\":[\"*\"],\"Effect\":\"Allow\",\"Resource\":\"my-bucket123\",\"Principal\":{\"ID\":[\"domain/c41**************************8cf:user/053**************************2c4\"]}},{\"Sid\":\"Stmt1375240018063\",\"Action\":[\"Get*\"],\"Effect\":\"Allow\",\"Resource\":\"my-bucket123/*\",\"Principal\":{\"ID\":[\"domain/c41**************************8cf:user/053**************************2c4\"]}}]}";

             obsClient.setBucketPolicy(bucketName,Policy);

         } catch (ObsException e) {
             System.out.println("Response Code: " + e.getResponseCode());
             System.out.println("Error Message: " + e.getErrorMessage());
             System.out.println("Error Code:       " + e.getErrorCode());
             System.out.println("Request ID:      " + e.getErrorRequestId());
             System.out.println("Host ID:           " + e.getErrorHostId());
         } finally {
             if (obsClient != null) {
                 try {
                     obsClient.close();
                 } catch (IOException e) {
                     System.out.println(e);
                 }
             }
         }
     }
 }

3      效果展示

设置后的桶策略如下:

image.png

userB在桶内上传文件失败(没有权限),下载文件成功

image.png

image.png

4      附录

OBS JAVA SDK使用,官网参考链接https://support.huaweicloud.com/sdkreference-obs/obs_02_0001.html

更多桶策略的具体格式(JSON格式字符串)请参考《对象存储服务API参考》:https://support.huaweicloud.com/api-obs/zh-cn_topic_0100846742.html

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。