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

本文涉及的产品
云服务器 ECS,每月免费额度280元 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
目录
相关文章
|
22天前
|
弹性计算 负载均衡 容灾
slb配置后端服务器组
配置阿里云SLB后端服务器组涉及四个主要步骤:创建服务器组、添加ECS实例、关联监听规则和设定负载均衡策略。这使得流量根据业务需求和服务器特性进行转发,便于应用架构的灵活管理和扩展,支持蓝绿部署、灰度发布,并通过多可用区提升系统可用性和容灾能力。
23 3
|
15天前
|
弹性计算
2024年阿里云服务器不同实例规格与配置实时优惠价格整理与分享
2024年阿里云服务器的优惠价格新鲜出炉,有特惠云服务器也有普通优惠价格,本文为大家整理汇总了2024年阿里云服务器的优惠价格,包含特惠云服务器和其他配置云服务器的优惠价格。以便大家了解自己想购买的云服务器选择不同实例规格和带宽情况下的价格,仅供参考。
2024年阿里云服务器不同实例规格与配置实时优惠价格整理与分享
|
3天前
|
数据采集
robots.txt配置 减小服务器压力
robots.txt配置 减小服务器压力
9 0
|
13天前
|
网络协议 Linux 网络安全
Linux服务器DNS服务器配置实现bind的正向解释和反向解释
Linux服务器DNS服务器配置实现bind的正向解释和反向解释
17 0
|
15天前
|
弹性计算 网络安全 虚拟化
ECS数据问题之升级配置预防数据丢失如何解决
ECS(Elastic Compute Service,弹性计算服务)是云计算服务提供商提供的一种基础云服务,允许用户在云端获取和配置虚拟服务器。以下是ECS服务使用中的一些常见问题及其解答的合集:
|
16天前
|
弹性计算 Kubernetes 安全
ECS选型推荐配置
在构建Kubernetes集群时,应避免使用过多小规格ECS,因它们可能带来网络限制、容量不足和资源碎片化问题。采用大规格ECS能提升网络性能,优化镜像拉取效率。选择Master节点时,要考虑集群规模,生产环境建议选择较高规格。Worker节点推荐使用CPU≥4核、内存≥8GiB的ECS,根据集群总核数和容错率来决定节点数量。当规模达1000核,可选用裸金属神龙服务器,它提供超强网络、零计算抖动和安全性能,适合大促等需快速扩展的场景。
22 1
|
20天前
|
弹性计算 固态存储 调度
2024年阿里云服务器配置选择指南,新手整理
阿里云服务器配置选择指南:个人用户推荐轻量应用服务器或ECS通用算力型u1,适合小型网站和轻量应用。企业用户应选择企业级独享型如ECS计算型c7、通用型g7,保证高性能计算需求。配置选择要考虑CPU内存比例、公网带宽和系统盘。轻量服务器提供2核2G3M和2核4G4M选项,ECS实例则有多种规格以适应不同业务场景。公网带宽建议至少5M,系统盘可选高效云盘、SSD或ESSD。详细信息见[阿里云服务器产品页](https://www.aliyun.com/product/ecs)。
52 3
|
21天前
|
安全 网络安全 数据安全/隐私保护
如何配置常用邮箱服务器_云·企业官网 | 常用邮箱配置邮件服务器
本文介绍了邮件服务器的作用,如接收用户留言和表单通知,并提供阿里云企业邮箱、QQ邮箱、腾讯企业邮箱、163邮箱和谷歌邮箱的配置步骤。建议根据服务器所在地选择相应邮箱服务。配置涉及开启SMTP/POP3服务、获取授权码或应用密码,并在网站后台填写邮件服务器地址、SSL设置、账号和端口等信息。
35 0
|
21天前
|
存储 弹性计算 监控
ecs配置与优化
阿里云ECS优化涉及实例规格选择、磁盘存储、网络配置、OS及软件优化、连接数管理、监控自动化和升级扩展。选择合适实例类型、磁盘类型以满足I/O需求,优化网络带宽与安全组规则,保持操作系统更新并调整软件配置。注意监控关键指标,利用弹性伸缩适应业务变化,适时升级资源,实现性能与成本的最佳平衡。
22 3
|
24天前
|
存储 弹性计算 运维
阿里云轻量应用服务器与标准型阿里云服务器ECS全面对比(配置、价格)
随着云计算技术的蓬勃发展,阿里云作为业界的佼佼者,推出了多样化的云服务器产品以满足不同用户群体的需求。在这些产品中,阿里云轻量应用服务器与标准云服务器(ECS)因其各自的特点而备受关注。下面,我们将从多个角度对这两款产品进行深入剖析,以帮助您更好地选择适合自身需求的云服务器。
631 2