欢迎访问我的博客shammgodyoung
阿里云官方文档
相关SDK

RAM 和 STS 介绍

阿里云权限管理机制包括访问控制(Resource Access Management,简称 RAM)和安全凭证管理(Security Token Service,简称 STS),可以根据需求使用不同权限的子账号来访问表格存储,也支持为用户提供访问的临时授权。使用RAM和STS能极大地提高管理的灵活性和安全性。

RAM 的主要作用是控制账号系统的权限。通过使用 RAM 可以将在主账号的权限范围内创建子账号,给不同的子账号分配不同的权限,从而达到授权管理的目的。详情请参见访问控制产品帮忙文档。

STS 是一个安全凭证(Token)的管理系统,用来授予临时的访问权限,这样就可以通过 STS 来完成对于临时用户的访问授权。

STS临时授权访问

RAM子账号都是可以长期正常使用的,发生泄露后如果无法及时解除权限,会非常危险。

当开发者的 app 被用户使用之后,用户的数据要写入 ram-test-dev 这个实例。当 app 的用户数据很多时,要求能够安全地授权给众多的 app 用户上传数据,并且保证多个用户之间存储的隔离。

类似这种场景需要临时访问权限,应该使用 STS 来完成。STS 可以指定复杂的策略来对特定的用户进行限制,仅提供最小的权限。

使用

1.创建和管理角色STS的AssumeRole接口的使用,需要在RAM中创建和管理角色

2.添加相关依赖

<!--添加aliyun-java-sdk的相关依赖 start-->
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-sts</artifactId><version>3.0.0</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>3.5.0</version>
</dependency>
<!--添加aliyun-java-sdk的相关依赖 end-->

3.配置文件中添加所需请求参数

#阿里云访问控制RAM子账户信息,需要登录阿里云控制台查看(Secret只在创建时可查看,需要做好备份)
aliyun.oss.accessKeyId=#你的accessKeyId
aliyun.oss.accessKeySecret=#你的accessKeySecret
#角色ID,在角色中进行授权,获取相应的权限
aliyun.sts.roleArn=#你的roleArn
#指临时凭证的名称,一般来说建议使用不同的应用程序用户来区分。自定义(可不设置)
aliyun.sts.roleSessionName=test

4.示例代码

/*** 获取Token返回结果* @author: young* @date: 2018年12月04日 13:56*/
@Data
public class StsTokenVO implements Serializable {/*** 访问密钥标识*/private String accessKeyId;/*** 访问密钥*/private String accessKeySecret;/*** 安全令牌*/private String securityToken;
}
/*** 获取STS token接口* @author young* @date 2018年12月04日 13:41*/
public interface StsTokenService {/*** 获取STS token接口* @param* @return StsTokenVO* @author young* @date 2018/12/4 13:59*/StsTokenVO getStsToken();
}/*** 获取STS token接口实现* @author young* @date 2018年12月04日 13:41*/
public class StsTokenServiceImpl implements StsTokenService {private static final Logger LOGGER = LoggerFactory.getLogger(StsTokenServiceImpl.class);@Value("${aliyun.oss.accessKeyId}")private String accessKeyId;@Value("${aliyun.oss.accessKeySecret}")private String accessKeySecret;@Value("${aliyun.sts.roleArn}")private String roleArn;@Value("${aliyun.sts.roleSessionName}")private String roleSessionName;/*** token失效时间,单位秒(不设置默认1小时,这里设置5分钟)*/private static final Long durationSeconds= 300L;private static final String ENDPOINT = "sts.aliyuncs.com";/*** 获取STStoken接口* @param:* @return: StsTokenVO* @author: young* @date: 2018/12/4 13:59*/@Overridepublic StsTokenVO getStsToken() {StsTokenVO tokenVO = new StsTokenVO();try {// 添加endpoint(直接使用STS endpoint,前两个参数留空,无需添加region ID)DefaultProfile.addEndpoint("", "", "Sts", ENDPOINT);// 构造default profile(参数留空,无需添加region ID)IClientProfile profile = DefaultProfile.getProfile("", accessKeyId, accessKeySecret);// 用profile构造clientDefaultAcsClient client = new DefaultAcsClient(profile);final AssumeRoleRequest request = new AssumeRoleRequest();request.setMethod(MethodType.POST);request.setRoleArn(roleArn);request.setRoleSessionName(roleSessionName);// request.setDurationSeconds(durationSeconds);// 针对该临时权限可以根据该属性赋予规则,格式为json,没有特殊要求,默认为空// request.setPolicy(policy); // Optionalfinal AssumeRoleResponse response = client.getAcsResponse(request);AssumeRoleResponse.Credentials credentials = response.getCredentials();tokenVO.setAccessKeyId(credentials.getAccessKeyId());tokenVO.setAccessKeySecret(credentials.getAccessKeySecret());tokenVO.setSecurityToken(credentials.getSecurityToken());return tokenVO;} catch (ClientException e) {LOGGER.error("获取阿里云STS临时授权权限失败,错误信息:" + e);return null;}}
}

获取阿里云临时授权访问STStoken相关推荐

  1. 完整记录一下Web前端直传阿里OSS大文件+采用后端临时授权传stsToken的方式

    文章目录 前言(可不看) 1. 简介 2. 必要了解项 2.1 资源术语 2.2 常用SDK 3. 准备工作 3.1 创建bucket 3.2 设置跨域规则 3.3 创建RAM子账户及配置权限 3.4 ...

  2. Day65:Python获取阿里云产品云监控数据指标

    1.阿里云服务器 先创建阿里云账号: 购买一台低配置的阿里云ECS服务器: 还可以查看ECS云监控的监控指标数据: 2.通过阿里云官方的Python SDK API获取阿里云监控数据指标 阿里云为了保 ...

  3. Python获取阿里云产品云监控数据指标

    1.阿里云服务器 先创建阿里云账号: 购买一台低配置的阿里云ECS服务器: 还可以查看ECS云监控的监控指标数据: 2.通过阿里云官方的Python SDK API获取阿里云监控数据指标 阿里云为了保 ...

  4. python实现获取阿里云所有ecs服务器信息

    概述: 作为一名自动化运维开发来说,我们如何才能实现公司公有云上的数据自动同步到cmdb,这本身对运维团队来说是极其有意义的,不用每次人工手动去导出excel,再去编辑修改手动导入到我们得内部cmdb ...

  5. aws api gateway 使用阿里云的域名访问

    创建apigateway 我创建的是Rest Api的网关 创建lambda函数 首先得创建一个lambda函数,代码我用的是golang 1.x.代码如下: package mainimport ( ...

  6. 找出阿里云服务器无法访问淘宝司拍页面原因

    博主在本地写好的淘宝司拍代码,在本机可以正常运行 但是将代码部署到阿里云服务器后一直报错 页面刚获取相应页面就挂掉了,找了各种原因,刚开始以为是服务的环境配置问题,然后建了新的虚拟环境,然并卵,还是无 ...

  7. 阿里云服务器端口访问失败 问题解决

    阿里云服务器端口访问失败 项目部署新的阿里云服务器上, 添加安全组端口后,还是无法访问的解决方案 打开本地cmd,telnet IP+端口 查看端口是否可以连通 如果不通,在服务器上防火墙添加对应端口 ...

  8. 阿里云 代码访问mysql_阿里云远程怎么访问mysql_mysql

    阿里云远程如何访问mysql [查看mysql用户的初始密码] 如果是用的"市场镜像" 装过php环境的 使用 cat /你的安装环境/account.log 查看你的mysql ...

  9. 在阿里云服务器上面访问百度AI车牌识别接口

    1.要在百度AI去下载C SDK包,里面有封装好的接口供我们使用 点使用说明,如图 写了个测试代码demo #include "ocr.h" using namespace std ...

最新文章

  1. 安全事件日志中的登录事件
  2. cocoa下的多线程实践
  3. 云计算的下半场:云原生
  4. Pandas中文官档~基础用法2
  5. 【转】我们今年二十三四岁。。。
  6. 欢乐鼠标自动点击器_使用ESP32 DIY蓝牙自动点击器,滑屏器
  7. .NET处理异常--zt
  8. 将node.js程序作为服务,并在windows下开机自动启动(使用forever)
  9. 心算技巧 —— 大数的三次方根
  10. Windows 常用的 CMD 命令
  11. 荐书丨《哥德尔、艾舍尔、巴赫书:集异璧之大成》:机器人与音乐的次元壁破了
  12. matlab图像显示 imagesc 和imshow
  13. 小程序练习 - rawData和userInfo
  14. 计算机共享地址怎么设置到桌面,局域网共享在哪里设置
  15. 计算机 工具 文件夹 找不到,电脑附件中的“画图工具”找不到了,怎么办?
  16. BigDecimal实现加减乘除
  17. 如何去保证软件的质量
  18. 为Exynos4412移植U-Boot-2017.11的步骤(一)——让U-Boot跑起来
  19. 网络三维虚拟展馆开发优势
  20. MIFI与随身wifi、wifi共享软件,玩坏wifi的几种方法

热门文章

  1. LaTex 数学公式中的空格
  2. 利用matlab建立含间隙关节的曲柄滑块动力学分析
  3. js逆向-某岸网络登录参数
  4. CPU性能测试脸型软件,UserBenchmark(电脑性能测试软件) V2.9.1.0 官方版
  5. xsi:schemaLocation详解
  6. 安卓手机机短信如何导入苹果IOS9以上版本
  7. 公务员行测可以用计算机吗,公务员考试可以带计算器吗
  8. BUUCTF Reverse/Ultimate Minesweeper
  9. 优思学院|“丰田生产方式“和“福特生产方式”的区别
  10. 2021-2027全球与中国汽车互联信息娱乐系统市场现状及未来发展趋势