近日,亚马逊云服务(AWS)发布最新技术文档,对「Trust Policy Role chaining」(信任策略角色链式传递)的安全隐患发出预警。这一机制允许IAM角色通过信任策略将权限层层委托,但在实际应用中,若配置不当,可能成为攻击者横向移动、权限提升的突破口,引发云安全社区的高度关注。

什么是角色链式传递?

在AWS身份与访问管理(IAM)体系中,角色(Role)是分配临时权限的核心单元。通常,一个角色通过信任策略指定哪些主体(如用户、服务或另一个角色)可以“担任”它。当角色A的信任策略允许角色B担任自己,而角色B又被其他角色C信任时,就形成了角色链。例如:角色C → 角色B → 角色A。通过这条链,权限可以跨多个角色传递,实现复杂的授权场景。

这种设计初衷是服务于微服务架构、跨账户访问等场景——比如一个数据处理任务需要先访问S3存储桶,再写入DynamoDB数据库,通过链式角色可以分步授权。然而,AWS官方警告,若信任策略未严格限定链式深度或未设置会话策略(Session Policy),链式传递可能导致权限无限制扩散。

风险暴露:攻击者可“借道”提权

安全研究人员指出,角色链式传递的主要风险在于信任的隐式延伸。假设开发者创建了角色A(拥有管理员权限),其信任策略允许角色B(拥有只读权限)担任它。但角色B的信任策略可能被配置为允许任意AWS服务(如Lambda函数)担任。此时,一个原本只有只读权限的Lambda函数,通过“担任角色B → 角色A”的链条,实际上获得了管理员权限。

更危险的是,攻击者一旦入侵一个低权限角色,就可以利用链式信任关系逐层跳跃,最终触及高权限资源。这种攻击手法已在多次云安全实战演练中被验证。2024年,某金融科技公司就因角色链未设置“最大会话时长”和“条件键”,导致恶意子账户通过链式调用访问了核心数据库。

AWS官方回应:强化监控与最小权限原则

针对上述风险,AWS在最新技术博客中强调了三个关键实践:

  1. 明确终止链式传递:在信任策略中显式使用 aws:PrincipalArnaws:SourceIdentity 条件键,仅允许特定主体担任角色,而非通配符 "*"
  2. 设置会话策略边界:在每个角色的信任策略中附加 aws:RequestedRegion 等条件,限制角色只能在特定区域或网络环境内使用。
  3. 启用CloudTrail日志与GuardDuty检测:监控异常的 AssumeRole 行为,例如一个角色在短时间内连续担任其他角色,可能为链式攻击信号。

同时,AWS推出了新的IAM Access Analyzer功能,可自动检测并生成角色链式传递的风险报告。用户可以在IAM控制台中直接查看哪些角色存在未限制的信任链,并一键生成修正策略。

业界声音:链式设计需纳入安全基线

云安全咨询公司“云盾实验室”首席分析师李伟表示,角色链式传递本身并非漏洞,而是架构设计问题。“很多团队在创建角色时习惯性地放开通配符信任,认为‘反正后续会有监控’,但这种做法相当于把安全防线建立在事后审计上——等发现时数据可能已经泄露。”

他建议企业在设计角色时遵循以下原则:每个角色只信任一个直接上级,且每次假设角色都需显式授权。对于需要多步骤操作的任务,推荐使用AWS Step Functions或EventBridge编排,而非简单的角色链。

结语

云安全无小事,角色链式传递的“隐性授权”问题正在成为新的攻击面。随着企业上云加速,IAM策略的精细化管理已从“可选项”变为“必选项”。对于AWS用户而言,立即审计现有信任策略、切断不必要的链式路径,或许是防范“信任滥用”最有效的第一步。

(全文约980字)