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

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
对象存储 OSS,20GB 3个月
云服务器ECS,u1 2核4GB 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时,由于没有权限而报错。

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


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

相关实践学习
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
7天前
|
弹性计算 安全 API
访问控制(RAM)|凭证安全管理与最佳实践
本文分享将为您介绍从访问云资源的人员/程序身份两种身份类型,介绍云上凭证的认证方式、安全风险及凭证管理的最佳实践。
102508 7
|
7天前
|
弹性计算 安全 API
访问控制(RAM)|云上安全使用AccessKey的最佳实践
集中管控AK/SK的生命周期,可以极大降低AK/SK管理和使用成本,同时通过加密和轮转的方式,保证AK/SK的安全使用,本次分享为您介绍产品原理,以及具体的使用步骤。
102006 4
|
7天前
|
云安全 弹性计算 安全
AK泄露了,怎么办?
AccessKey(包含AccessKey ID和Secret)是程序访问的凭证,无异于打开云上资源的大门钥匙,保管好AK是保障云上安全最重要的事情,甚至没有之一。
105653 7
|
7天前
|
数据库 数据安全/隐私保护
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
533 3
|
9月前
|
存储 编译器 C语言
RAM明明断电会丢失数据,为什么初始化的全局变量存储在RAM?详细分析程序的存储
RAM明明断电会丢失数据,为什么初始化的全局变量存储在RAM?详细分析程序的存储
489 0
|
存储 数据采集 运维
阿里云RAM账号配置SLS数据加工最佳实践
数据加工服务是阿里云SLS推出的面向日志ETL处理的服务,主要解决数据加工过程中转换、过滤、分发、富化等场景。使用数据加工功能时,将涉及数据读写权限以及数据加工操作权限的授予问题。本文档主要介绍:1. 使用主账号为RAM用户授权以使其具有浏览Logstore数据的权限并能够创建和修改数据加工作业;2. 在不同工作场景下使用RAM账号创建或修改数据加工的最佳实践方法。
|
安全 关系型数据库 分布式数据库
PolarDB-X 1.0-用户指南-访问控制-RAM在PolarDB-X中的应用
本文档主要介绍阿里云的访问控制服务RAM的基本概念以及RAM在PolarDB-X中的应用场景。
1677 0
PolarDB-X 1.0-用户指南-访问控制-RAM在PolarDB-X中的应用
|
关系型数据库 分布式数据库 数据库
PolarDB-X 1.0-用户指南-访问控制-在PolarDB-X中使用RAM
本文介绍如何在PolarDB-X中使用RAM的账号体系及权限策略进行资源和权限控制。
389 0
|
SQL 监控 关系型数据库
PolarDB-X 1.0-用户指南-访问控制-RAM资源授权
本文汇总了PolarDB-X支持的RAM资源授权规则以及已经为PolarDB-X开通了RAM服务的地域。
1853 0
|
JSON 弹性计算 运维
最佳实践-使用OOS审批授权子账号RAM权限
当通过RAM控制台或OpenApi为RAM用户授权时,权限是即时生效的,这样对于频繁授权或者高权限授予场景来讲,完全没法保障安全性。就此,本文引入一种高效的授权审批保障机制。
1157 0
最佳实践-使用OOS审批授权子账号RAM权限