访问控制(RAM)|云上程序使用临时凭证的最佳实践

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
访问控制,不限时长
简介: STS临时访问凭证是阿里云提供的一种临时访问权限管理服务,通过STS获取可以自定义时效和访问权限的临时身份凭证,减少长期访问密钥(AccessKey)泄露的风险。本文将为您介绍产品原理,以及具体的使用步骤。

内容介绍:

一、凭证管理的基本原则

二、云上程序使用临时凭证的最佳实践

 

本次分享的内容是云上程序使用临时凭证的最佳实践。


>>>欢迎点击查看阿里云凭证管理与安全最佳实践专题页


一、凭证管理的基本原则

谈及凭证管理,我们需要了解凭证管理的基本原则,其核心包括两部分,一是缩短暴露时长,二是缩小暴露面积。如今很多手机APP都无需填写用户名和密码,只需通过手机号加验证码的方式即可实现注册和登录。验证码的有效期通常只有五分钟,超过这个时间,验证码就会失效,这体现了其缩短暴露时长的原则。对于缩短暴露面积,最常见的安全风险如AK泄露,如研发人员把AK明文写到代码中,又上传到了公开的仓库中,在世界范围内,只要能看到仓库的人都可以看到该AK的信息,暴露面积很大。

image.png

基于两大核心原则,在云上分为两大身份类型。第一类是人员身份,企业有很多的员工,人员身份往往对应到企业员工中具体的个人;第二类是程序身份,程序身份对应到业务甚至环境中,它需要通过AK等方式访问阿里云的API,以获取数据或进行运维管理操作。

这两大身份在身份凭据管理中都容易出现很多安全风险,如AK泄漏等。就如何系统化地规划身份凭据管理,提升安全水位,我们围绕两大身份和基本原则提供了一系列的解决方案和最佳实践。

对于人员身份,开启MFA多因素认证,使用SSO单点登录等。

对于程序身份,结合凭据管理的两大原则进行分析。第一,缩短暴露时长,与前面提到的手机验证码的案例,云上也有类似的方案,即本次分享的主题——使用临时凭据的方案(STS Token)。众所周知,使用固定AK易被泄露,使用STS Token就会自带有效期,如同手机验证码,其有效期一般是小时级别的。一旦有了有效期,研发人员就很难把STS Token硬编码到自己的代码里,因为几小时后可能就会失效。同时,STS Token还能刷新,刷新之后可以缩短其暴露时长,相对而言,可以极大地降低其泄露风险。


二、云上程序使用临时凭证的最佳实践

在云上,我们需要结合不同的应用部署的环境去使用不同的临时凭据方案。

1、解决方案

1ECS实例角色获取STS Token访问云资源

如果客户的应用部署在ECS上,则可以使用ECS实例角色方案获取STS Token

image.png

在创建ECS实例时,可以直接配置ECS关联的RAM角色,或者在“实例设置”中为已有的ECS实例配置RAM角色。在ECS实例内部,客户的应用程序可以通过ECSMeta服务获取STS 临时凭据,再基于STS 临时凭据访问其他产品的API。同时,临时凭据将自动地周期性更新,用户不需要关心其过期刷新的过程。如此,既可以规避永久凭据导致的安全风险问题,保证云账号的AK的安全性,也可以借助访问控制实现更精细化的控制和权限管理。

2ACK RRSA功能获取STS token访问云资源

如今,越来越多的客户开始使用K8S等云原生架构,阿里云也针对性地推出了相应的解决方案。下面的架构图展示了针对ACK集群使用临时凭据的方案:

image.png

虽然架构图相对复杂,但在产品化之后,运维管理员只需一键即可开启ACK集群中的RRSA组件完成配置。且研发人员使用也很简单,无需关心STS token过期刷新的逻辑,只需在阿里云官方提供的sdk的基础上稍做简单配置,即可在自己的代码中自动获取STS Token。并且在STS Token临过期时,sdk会自动刷新STS Token

2、操作演示

这里演示如何使用ECS实例角色获取STS Token并访问云资源,以读取OSS文件为例。案例中有两个OSS Bucket,本次演示中部署在ECS上的程序只需要访问名为web-app-01 Bucket下的文件,其他Bucket下的文件无需也无权访问。

进入web-app-01 Bucket,可以看到下面有名为ram-role-test的文件。进入RAM控制台,创建ECS关联的角色,“可信实体类型”选择“阿里云服务”,“受信服务”选择“云服务器”,这样即可创建能与ECS实例关联的角色。案例中创建了名为ECSRamRoleTest的角色,并为其绑定权限策略。

{

  Version: 1,

Statement: [

      {

              Effect: Allow,

              Action: oss:ListObjects,

              Resource:acs:oss:*:*:web-app-01

          },

          {

               Effect: Allow,

               Action: oss:GetObjects,

               Resource:acs:oss:*:*:web-app-01/*

          }

]

}

在该权限策略中,仅允许该角色访问名为web-app-01 OSS Bucket下的文件对象。

进入ECS控制台,点击“创建实例”,在高级选项中选择一个实例RAM角色,案例中选择了创建的ECSRamRoleTest角色。如果是已有实例,可以在实例设置中点击“授予/收回RAM角色”,关联相应的RAM角色。

登录现有的机器上,已经写入了一段Python代码:

image.png

从这段代码可以看到,我们首先从ECSMeta服务中获取到了实例角色的STS Token,用该STS Token分别从web-app-01web-app-03两个Bucket中遍历文件对象。通过之前的步骤可以知道,我们只给实例角色授予了web-app-01 Bucket的权限。

运行这段代码,运行结果如下图所示:

image.png

可以看到已成功遍历了web-app-01下的所有文件,而在遍历web-app-03时,由于没有权限而报错。

以上是关于云上程序使用临时凭据的最佳实践。总之,如果应用部署在阿里云上,则建议使用临时凭据的方案,一方面能够极大地降低凭证泄露的风险,另一方面,如果泄露也可以有效地缩短凭证暴露的时长。


>>>欢迎点击查看阿里云凭证管理与安全最佳实践专题页

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
6月前
|
弹性计算 安全 API
访问控制(RAM)|凭证安全管理与最佳实践
本文分享将为您介绍从访问云资源的人员/程序身份两种身份类型,介绍云上凭证的认证方式、安全风险及凭证管理的最佳实践。
102804 7
|
6月前
|
弹性计算 安全 API
访问控制(RAM)|云上安全使用AccessKey的最佳实践
集中管控AK/SK的生命周期,可以极大降低AK/SK管理和使用成本,同时通过加密和轮转的方式,保证AK/SK的安全使用,本次分享为您介绍产品原理,以及具体的使用步骤。
102466 5
|
6月前
|
云安全 弹性计算 安全
AK泄露了,怎么办?
AccessKey(包含AccessKey ID和Secret)是程序访问的凭证,无异于打开云上资源的大门钥匙,保管好AK是保障云上安全最重要的事情,甚至没有之一。
106459 8
|
6月前
|
数据库 数据安全/隐私保护
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
653 3
|
5月前
|
敏捷开发 Web App开发 测试技术
阿里云云效产品使用问题之钉钉绑定主帐号和RAM 有什么区别么
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
5月前
|
文字识别 API
印刷文字识别产品使用合集之如何创建RAM用户和阿里云账号的访问密钥
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
6月前
|
缓存 BI
咨询下,阿里云云效ram账号绑定钉钉账号后,手机端看项目,是空的,怎么解决?
咨询下,阿里云云效ram账号绑定钉钉账号后,手机端看项目,是空的,怎么解决?
104 2
|
11月前
阿里云RAM角色和自定义角色
阿里云RAM角色和自定义角色
139 1
|
安全 API 数据安全/隐私保护
云安全中心-云平台配置检查CIEM查询到的Ram相关的检查项,能否在阿里云OpenAPI查到同样的?
云安全中心-云平台配置检查CIEM查询到的Ram相关的检查项,能否在阿里云OpenAPI查到同样的?
117 1