亚马逊AWS官方博客
IAM 托管策略维护经验分享
简介:使用亚马逊云科技IAM托管策略可以简化权限设计和管理。托管策略更新后,用户侧也需要及时维护。本文以一个淘汰的托管策略所引发的事故为例,为您分析忽视托管策略维护可能会造成的问题,展示如何妥善地处置托管策略更新引发的事故,分享一些托管策略维护的实践经验,希望可以帮助企业更加安全地使用托管策略。
背景
在亚马逊云科技的身份及访问管理服务(IAM)中,策略(Policy)用于定义权限。在设计权限时,用户可以完全自主创建并且维护一组特定的权限,这类策略被称为客户托管策略(Customer Managed Policy)。亚马逊云科技也为客户提供并维护了许多策略,这些默认内置在您的账户中的策略被称为亚马逊云科技托管策略(AWS Managed Policy,后文简称为托管策略)。使用托管策略可以有效地简化权限设计,用户通常会以托管策略为初始权限集,再按最小权限原则裁减权限,最后得到满足用户需求的权限集。
问题
使用托管策略需要遵循云上责任共担模型,用户需要负责托管策略用户侧的维护工作。截至2022年10月,亚马逊云科技中国区账户中提供了超过980个托管策略。每当发布新服务或是中断某个过时服务时,相关托管策略可能会被调整。一些托管策略会随着时间的推移而不被建议继续使用,一些不再适用的托管策略也会被淘汰并删除。相关更新通常会提前数月或数周进行通知,但如果用户没有注意到通知或是没有及时评估并采取行动,就有可能会遭遇意外情况。
案例
2022 年 7 月 5 日,亚马逊云科技中国区正式淘汰并移除了一个名为AWSConfigRole的托管策略。某企业在数月之后的一次故障中才发现托管策略维护的盲区,并引起了企业的重视。
事件发生
该企业使用了Amazon Config来实现云上的资源管理和自动合规审计,他们开发了许多客户规则(Custom Rule),这些规则是账号安全基线的一个部分, 并通过IaC流水线来进行部署。他们在代码中使用一个名为AWSConfigRole的托管策略。这套机制一直运行良好,但某天他们新建账号时遭遇到失败。
初步评估
通过追踪新建账号的流水线,找到了执行失败的Stack。并在这个Stack的相关事件中发现了一个“CREATE_FAILED”报错信息,信息显示: “Policy arn:aws-cn:iam::aws:policy/service-role/AWSConfigRole does not exist or is not attachable”。 根据此信息,用户在账号中查找AWSConfigRole策略,结果没有找到这个托管策略,由此初步判定出错与托管策略有关。
根因分析
在初步定位问题之后,用户开始调查找不到这个托管策略的原因,于是通过亚马逊云科技的支持服务进行询问,支持人员很快地提供了如下信息:
“Amazon Config 将在 2022 年 7 月 5 日弃用托管策略 AWSConfigRole。 此策略已被策略 AWSConfigRole 替换。AWSConfigRole 托管策略将继续生效于当前附加的所有用户、组和角色。 但是在 2022 年 7 月 5 日之后,AWSConfigRole 托管策略无法附加到任何新用户、组或角色。此外,该策略也不会更新以包含对新支持的资源类型和新托管规则的权限。 作为 AWSConfigRole 的用户,请将附加到 Amazon Config 角色的策略更新为 AWSConfigRole。要更新策略,请导航到 IAM 控制台上用于 Config 的 IAM 角色 ,将策略 AWS_ConfigRole
附加到角色,然后从角色中删除策略 AWSConfigRole。”
由此,用户确认了事件的根本原因是:托管策略AWSConfigRole 发生了更新,但用户没有及时发现此次更新会对使用了这个托管策略的IaC代码产生影响。由于新建账号不是经常性的操作,所以相关影响在数月后才被发现。
问题修复
了解了根因之后,就要选择适当的修复方案。经过比较权衡,用户决定用另一个新的托管策略来代替原有的托管策略。于是,用户把IaC代码中的AWSConfigRole
更改为AWS_ConfigRole
,随后创建账号成功,问题得到修复。
深入分析
根据事件响应的最佳实践,在当前问题解决之后,还要进一步全面排查是否存在其它风险,并思考如何预防类似事件的发生。
在这个案例中,用户从人工使用和代码使用两个方面来评估了这个托管策略变更的影响面,所幸只有几处IaC代码受到影响,且都已得到了修复。但其后续托管策略的维护仍不可忽视,通过深入地思考,用户提出了一些新的问题和解决思路。比如:在策略更新预警方面,用户强化了管理制度的执行,并将采取技术手段来建立事件驱动的自动响应机制;在IaC代码开发和维护方面,用户正在考虑增加针对托管策略使用的开发规范,并尝试通过自动化工具来检测不符合托管策略使用规范的代码等。
事件学习
经历此次事件后,用户认识到在用户侧对托管策略进行维护的必要性,将其纳入到日常云运维工作之中,并从三个方面总结了一些思路和方法:
一、事前准备
理解托管策略,策略为权限根基,要对各个策略的内容和用途了然于心;建立策略管理机制,特别是通过集中管理来准确快速地分析影响面;保持信息渠道的畅通和持续关注,建立机制来保障及时收到托管策略更新信息,并快速进行分析和响应;人员方面,要具备事件处置所需的知识和技能。
二、事中响应
严格遵循企业事件响应流程和操作规范。不仅要解决表面问题,还要找出根因,评估实际影响范围和程度,选择较优的修复方案。另外,建议第一时间寻求厂商的支持。
三、事后总结
从失败事件中学习经验,总结在事件响应中哪些做得好的要保持的,哪些做得不够需要改进的。还要更深入地思考,寻找类似的其它的场景,进一步地发现问题并研究相关的解决方案。
总结
通过本文,您已经借助一个实际案例认识到用户侧托管策略维护的必要性,学习了如何遵循事件响应流程来处理托管策略相关事件,以及持续改进用户侧的托管策略维护工作的一些经验。您可以利用类似的思路和方法来帮助发现和解决更多的问题,期待收到您的反馈意见和建议,想要了解更多云计算安全内容您可以关注亚马逊云科技的博客。