安全管理最佳实践系列:给ECS实例配置一个RAM角色身份(使用动态STS-Token访问云服务API)

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 如果你的应用程序部署在ECS实例中,你可能会苦恼于应用程序的AK配置安全问题及管理难的问题。为此阿里云提供了给ECS实例配置RAM角色的解决方案,使得运行ECS实例中的应用程序将不再需要配置AK,而只需要从ECS Metadata服务中获取StsToken就可以访问阿里云服务API,让你不再担心应用程序的AK配置安全问题和难管理的问题。

问题描述

AK(AccessKey)是代表用户身份的钥匙,是用户访问阿里云API的身份认证密钥。如果部署在ECS实例中的应用程序需要访问各种阿里云服务API,用户通常会将AK保存在应用程序的配置文件中,使得应用程序能读取AK来调用阿里云服务API。这里存在两个问题:(1) 保密性问题。不管AK以何种形式存在于实例中,它都可能随着快照、镜像及镜像创建出来的实例被泄露。(2) 难运维性问题。由于AK存在于实例中,如果要更换AK(比如周期性轮转或切换用户身份),那么需要对每个实例和镜像进行更新并重新部署,这会极大增加对实例和镜像管理的复杂性。

针对保密性问题的通常解法是借助加解密(Crypto)或访问控制(Access Control)技术。

加密方案

由于AK本身也是一种密钥,而加解密技术通常不适合保护密钥本身,因为总有最后一把密钥(Last Key)是需要保护的,所以加密技术这里不适用。当然可能有少数区域的ECS实例提供了可信加密设备支持(比如HSM、TPM或SGX),但基于硬件来保护Last Key的方法是另一个专题,本文不做讨论。

访问控制方案

一种简单有效的AK保护做法是采用访问控制技术。比如,可以使用操作系统提供的访问控制机制来保护存放AK密钥的配置文件,比如
$ chmod 400 ~/.aliyuncli/credentials (只允许当前用户可读) 在用户登录管理严格的条件下,这种机制可以起到一定的保护作用。但由于AK本身没有加密,通过快照或镜像泄露之后就可能绕过访问控制机制,仍然可能泄漏。

针对难运维性问题就难解了,只要AK存在于实例文件中,对大量实例和镜像的管理复杂性就无法降低。

阿里云的技术方案

站在操作系统设计的角度,用户态中难解的问题,在内核态看来根本不是事。同样,ECS实例中难解的问题交给ECS管控来解,也不是难题。

阿里云ECS结合RAM (Resource Access Management)提供的访问控制能力,针对此问题提供了一个根本的解决方法 —— 通过给ECS实例配置RAM角色来避免AK泄露及运维难的问题。

技术原理

图1详细描述了如何给ECS实例配置RAM角色的工作原理:


a1
(图1)

Step 1. 云账号(root)在RAM中创建一个ECS实例型的RAM-Role,并对角色授予合适的Policy权限。

Step 2. 启动ECS实例时,可以配置使用上一步骤中创建的RAM-Role。

以上两步的具体操作请参考通过控制台使用实例型RAM角色通过API使用实例型RAM角色

所谓ECS实例型角色,它只是RAM服务角色中的一种类型,表示该角色是由客户创建并授权给该客户的ECS实例所使用。ECS服务在创建实例时:(i) 根据所配置的RAM角色,调用AssumeRole去访问STS请求获取该角色的StsToken;(ii) STS服务会验证ECS服务身份及该角色的授权类型,验证通过后颁发StsToken,否则拒绝请求。获取到StsToken后,ECS将通过Metadata服务提供给实例中的应用程序访问(HTTP访问地址:100.100.100.200 )。StsToken过期时间通常为6小时,在过期之前ECS服务会自动维护StsToken的刷新。

Step 3. 获取StsToken。

ECS实例中的应用程序需要通过访问 ECS Metadata服务来获取相应的StsToken。比如, 在Linux中执行命令:

$ curl http://100.100.100.200/latest/meta-data/ram/security-credentials/<roleName> 

即可获取StsToken及过期时间等元数据信息。

Step 4. 使用StsToken调用云服务API。

如果你的应用程序使用了阿里云SDK,那么阿里云SDK已经支持从ECS Metadata服务中获取实例RAM角色的StsToken,开发者无需在SDK中配置任何AK相关敏感信息。详细使用方法,请参考阿里云SDK支持InstanceProfileCredentialsProvider

Step 5. StsToken在有效期内及权限范围内都能正常访问云服务API。如果StsToken过期,那么需要从ECS Metadata服务中重新获取StsToken;如果StsToken权限不足,那么需要找管理员给实例RAM角色添加足够的权限。实例RAM角色的权限更新后,StsToken权限立即生效,用户无需重新启动ECS实例。

关于RAM的PassRole说明

在上文的技术图解1中,读者可以发现授权者和ECS实例操作者都是管理员。而对很多企业客户来说,授权者和ECS实例操作者通常都是不同的RAM用户,不同的人干不同的事,职责分离。

那么针对管理员与操作员分离的客户场景,我们需要对图解1进行一下扩展,得到如下的图解2:


a2
(图2)

除了增加Step 1.5之外,其它各步骤与图解1相同。

当RAM用户(假设仅有ECS权限,而并非RAM权限管理员)在创建ECS实例并配置RAM角色时,这个RAM用户必须要被授予对该角色的PassRole权限。ECS服务会强制检查当前用户是否拥有指定RAM-Role的 ram:PassRole 权限,否则无法成功创建ECS实例。这样做能确保只有被授权用户才能为ECS实例配置RAM角色,从而避免RAM角色权限被滥用。

Step 1.5 管理员给操作员增加一个PassRole权限。

管理员可以通过RAM按如下Policy样例创建一个自定义策略(注意替换rolename为自己的RAM角色名称),然后将这个自定义策略授权给操作员:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ram:PassRole",
      "Resource": "acs:ram:*:*:role/<rolename>"
    }
  ]
}

至此,你已经通晓了ECS实例型角色的概念和技术原理,赶紧开启安全最佳实践吧,让你不再因为ECS实例中的AK泄露和管理难的问题而烦恼了。

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
18天前
|
消息中间件 安全 Unix
SSH配置多台服务器之间的免密登陆以及登陆别名
SSH配置多台服务器之间的免密登陆以及登陆别名
28 1
|
8天前
|
弹性计算 安全 Java
阿里云服务器配置、(xshell)远程连接、搭建环境、设置安全组、域名备案、申请ssl证书
以下是内容的摘要: 在阿里云购买服务器并进行基本配置的步骤如下: 1. **准备工作**: - 注册阿里云账号:访问阿里云官网并注册新账号,输入用户名、手机号和验证码。 - 实名认证:在个人中心进行实名认证,建议选择企业实名,因为个人实名可能无法索取企业发票。
|
13天前
|
弹性计算 缓存 运维
2024阿里云服务器4核8G配置最新租用收费标准与活动价格参考
4核8G配置是大部分企业级用户购买阿里云服务器的首选配置,2024年经过调价之后,4核8G配置的阿里云服务器按量收费标准最低为0.45元/小时,按月租用平均优惠月价最低收费标准为216.0元/1个月,按年购买最低活动价格为1322.78元/1年,云服务器实例规格和配置不同,收费标准与活动价格也不同,下面是小编为大家整理汇总的阿里云服务器4核8G配置2024年最新收费标准与活动价格。
2024阿里云服务器4核8G配置最新租用收费标准与活动价格参考
|
16天前
|
存储 弹性计算 安全
阿里云服务器2核2G、2核4G配置最新租用收费标准及活动价格参考
2核2G、2核4G配置是很多个人和企业建站以及部署中小型的web应用等场景时首选的云服务器配置,这些配置的租用价格也是用户非常关心的问题,本文为大家整理汇总了2024年阿里云服务器2核2G、2核4G配置不同实例规格及地域之间的收费标准,同时整理了这些配置最新活动价格,以供大家参考和选择。
阿里云服务器2核2G、2核4G配置最新租用收费标准及活动价格参考
|
18天前
|
域名解析 网络协议 应用服务中间件
阿里云服务器配置免费https服务
阿里云服务器配置免费https服务
|
21天前
|
NoSQL Redis 数据安全/隐私保护
国产麒麟服务器等保二级 配置规范(二)
国产麒麟服务器等保二级 配置规范(二)
25 0
|
21天前
|
安全 关系型数据库 MySQL
国产麒麟服务器等保二级 配置规范(一)
国产麒麟服务器等保二级 配置规范(一)
33 0
|
21天前
|
数据采集
robots.txt配置 减小服务器压力
robots.txt配置 减小服务器压力
13 0
|
21天前
|
存储 弹性计算 安全
阿里云服务器8核16G配置不同实例规格及地域最新收费标准与活动价格参考
8核16G配置的阿里云服务器有多种实例规格可选,选择不同实例规格和地域,其收费标准和活动价格都是不一样的,2024年阿里云开启了新一轮的云产品降价策略,因此8核16G配置云服务器的收费标准也有所变化。本文为大家展示阿里云服务器8核16G配置可选的实例规格及这些实例规格在不同地域之间的收费标准情况,让大家可以了解不同地域之间的收费标准差异情况。
阿里云服务器8核16G配置不同实例规格及地域最新收费标准与活动价格参考
|
22天前
|
存储 缓存 编解码
购买阿里云服务器选择合适的配置与云盘容量参考
现在越来越多的企业都在建立宣传自己企业文化、形象、产品的官方网站,而选择一款合适的云服务器产品则是实现这一目标的关键一步。但对于初次接触云服务器的企业来说,对于如何选择合适的云服务器配置和云盘容量却不是很清楚,有些用户由于是初次接触云服务器产品,往往不知道云服务器应该购买多大容量的,也不知道应该购买哪一款配置的云服务器比较好,本文就来说说购买阿里云服务器如何选择合适的配置与云盘容量,以供参考。
购买阿里云服务器选择合适的配置与云盘容量参考