Springboot 适配STS临时授权访问OSS(二)

 

Springboot 适配STS临时授权访问OSS

 

1. 配置

1.1 创建子账号(阿里云主账号)

     PS:创建子账号,后续授权子账号管理自己的OSS Bucket

     

1.2 创建自定义权限策略

登录主账号 --> 进入控制台首页 --> 访问控制 --> 权限管理 --> 权限策略管理 --> 创建权限策略(使用脚本配置)

 

PS:示例权限策略名称使用“MyCustomPermission”,允许访问OSS对象的脚本如下:

{

    "Version": "1",

    "Statement": [

        {

            "Effect": "Allow",

            "Action": [

                "oss:GetObject"

            ],

            "Resource": [

                "acs:oss:*:*:*"

            ]

        }

    ]

}

 

 

1.3 权限管理--新增授权

访问控制 --> 权限管理 --> 授权 --> 新增授权(为子账号添加权限)

 

PS:各选项配置如下

授权范围:使用‘云账号全部资源’

被授权主体:输入刚创建的子账号test名称,并选择子账号

选择权限:系统策略选择添加AliyunOSSFullAccess、AliyunSTSAssumeRoleAccess,自定义权限选择签名创建好的MyCustomPermission

 

 

1.4 创建RAM角色

访问控制 --> RAM角色管理 --> 创建RAM角色

 

 

 

 

1.5 RAM角色添加权限

PS:为刚创建的‘MyRamTest’角色添加权限

 

 

 

 

1.6 获取RAM角色的ARN信息

PS:复制ARN信息,后续Springboot中接入需使用该配置

             

 

2. Springboot适配STS临时授权访问OSS

2.1 pom配置

<dependency>

    <groupId>com.aliyun.oss</groupId>

    <artifactId>aliyun-sdk-oss</artifactId>

    <version>3.6.0</version>

</dependency>

 

 

2.1 代码实现

try {

    DefaultProfile.addEndpoint("", "", "Sts", ConfigUtils.getEndpoint());

    IClientProfile profile = DefaultProfile.getProfile("cn-shenzhen", ConfigUtils.getAccessKeyId(), ConfigUtils.getAccessKeySecret());

    // 用profile构造client

    DefaultAcsClient client = new DefaultAcsClient(profile);

    final AssumeRoleRequest request = new AssumeRoleRequest();

    request.setMethod(MethodType.POST);

    request.setRoleArn(ConfigUtils.getRoleArn());

    request.setRoleSessionName("roleUser");

    request.setPolicy(ConfigUtils.getPolicy());

    request.setDurationSeconds(3600L);

    final AssumeRoleResponse response = client.getAcsResponse(request);

    AssumeRoleResponse.Credentials credentials = response.getCredentials();

    log.info("{}, getCreditInfo: st = {}", mLogId, credentials.getSecurityToken());

} catch (ClientException e) {

    log.error("{}, getCreditInfo: ClientException, {}", mLogId, e.getMessage());

}

 

 

PS:如有需要限制该STS仅支持下载某个名称开头或结尾的文件,则需配置policy,text配置文件内容如下,示例限制STS下载‘my_test_file_’开头的文件,‘my_test_file_’名称可以作为可变参数,在代码中自行组合

{

    "Version": "1",

    "Statement": [

        {

            "Effect": "Allow",

            "Action": [

                "oss:GetObject"

            ],

            "Resource": [

                "acs:oss:*:*:*/my_test_file_*"

            ]

        }

    ]

}

 

3. 附录

阿里云官方指导文档

STS临时授权访问OSS:

https://www.alibabacloud.com/help/zh/doc-detail/100624.htm?spm=a2c63.p38356.b99.143.5dae2ead15aQw8

 

Android客户端对接STS:

https://help.aliyun.com/document_detail/32046.html?spm=a2c4g.11186623.2.18.25262baau9btNL#concept-32046-zh

 

IOS客户端对接STS:

https://help.aliyun.com/document_detail/32059.html?spm=a2c4g.11186623.6.1546.78153b4aYQC9H1

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值