亚马逊AWS官方博客
亚马逊云资源操作的二次验证机制:保障企业云安全的最后一道防线
![]() |
引言
在现代企业中,云平台已经成为承载核心业务系统的关键基础设施。随着企业对云服务的依赖日益加深,如何确保云资源的安全管理已成为 IT 部门面临的重要挑战。本文将介绍一种基于亚马逊云科技无服务器架构实现的二次验证机制,为企业云资源的高危操作提供额外的安全保障。
业务痛点
企业运维部门的日常工作中,运维人员通常拥有较高的权限,包括删除 EC2 实例、RDS 数据库、S3 存储桶等关键资源的操作能力。这种权限配置虽然提高了工作效率,但也带来了显著的安全风险:
- 恶意操作风险:业内曾多次发生”删库跑路”事件,部分是由于人员恶意操作导致
- 误操作风险:更常见的情况是由于误操作或操作流程不规范,导致关键资源被意外删除
- 后果严重:无论是何种原因,关键资源的意外删除都可能引发系统不可用、数据丢失,甚至造成严重的业务中断和经济损失
解决方案需求
为了防止高危操作(如删除 EC2 实例、RDS 数据库等)造成不可挽回的损失,运维部门希望实现一套二次交叉验证机制,具有以下特点:
- 非个人 MFA 验证,而是需要审核员的独立审批
- 对高危操作进行精准识别和拦截
- 提供完整的审批流程和操作日志
- 审批通过后,为操作人提供临时的最小权限执行操作
架构设计
我们设计了一套基于亚马逊云科技无服务器架构的二次验证解决方案,整体流程如下:
高危事件触发标准
系统通过 EventBridge 规则识别高危操作,触发条件如下:
{
"detail-type": ["AWS API Call via CloudTrail"],
"detail": {
"userIdentity": {
"type": ["IAMUser"]
},
"eventSource": [
"rds.amazonaws.com",
"ec2.amazonaws.com",
"s3.amazonaws.com",
"eks.amazonaws.com",
"elasticloadbalancing.amazonaws.com"
],
"eventName": [
"TerminateInstances",
"DeleteAccessPoint",
"DeleteInternetGateway",
"DeleteNatGateway",
"DeleteNetworkInterface",
"DeleteSubnet",
"DeleteTransitGateway",
…….
],
"errorCode": ["Client.UnauthorizedOperation", "AccessDenied"]
}
}
核心服务组件
DynamoDB
Amazon DynamoDB 作为全托管 NoSQL 数据库服务,在本方案中用于存储高危操作事件的元数据和审批日志信息。其优势在于:
- 高性能:提供毫秒级的响应时间,确保审批流程的高效执行
- 高可用:多可用区部署,保障数据的持久性和服务的可靠性
- 无服务器:无需管理数据库基础设施,降低运维成本
- 灵活性:支持文档和键值数据模型,适合存储结构多变的事件数据
Lambda
AWS Lambda 作为无服务器计算服务,在本方案中承担了多项核心功能:
- 从 CloudTrail 事件中提取关键信息
- 生成最小权限的临时 IAM 角色
- 构建执行高危操作的脚本代码
- 处理审批流程中的各类逻辑
Lambda 的按需执行特性使得整个解决方案具有极高的成本效益,只在处理事件时产生费用。
Step Functions
AWS Step Functions 提供了可视化的工作流编排能力,用于实现完整的审批流程:
工作流程包括以下关键环节:
- 启动:为高风险操作请求创建记录
- 通知流程:向操作人发送高风险操作请求的通知
- 状态管理:更新确认状态或处理超时场景
- 审批流程:向授权审批人发送审批邮件并等待响应
- 执行阶段:生成临时权限并执行高危操作
- 完成:更新状态记录并发送最终通知
Step Functions 的状态机设计确保了整个流程的可靠执行和完整追踪。
Simple Email Service (SES)
Amazon SES 用于发送各类通知邮件,包括:
- 操作人的操作确认请求
- 审批人的审批请求
- 操作结果通知
通过邮件通知机制,确保所有相关人员及时了解高危操作的状态和进展。
EventBridge
Amazon EventBridge 作为事件总线,负责捕获 CloudTrail 中的高危操作事件并触发 Lambda 函数,启动整个审批流程。其规则引擎能够精确识别符合条件的高危操作,避免对正常操作造成干扰。
API Gateway
Amazon API Gateway 提供了三个关键 API 接口,用于:
- 操作人确认高危操作意图
- 审批人批准或拒绝高危操作
- 操作人最终确认执行高危操作
这些 API 通过邮件中的链接暴露给用户,提供了简便的交互方式。
IAM
AWS Identity and Access Management 在本方案中扮演了双重角色:
- 识别并拦截没有直接权限的高危操作
- 为审批通过的操作生成临时的最小权限
通过精细的权限控制,确保高危操作只能在获得适当审批后执行,且仅限于特定资源。
工作流程详解
1. 高危操作识别与拦截
当运维人员尝试执行高危操作(如删除 EC2 实例)时,由于 IAM 策略限制,操作会被拒绝并返回”AccessDenied”错误。此时:
- CloudTrail 记录该操作尝试
- EventBridge 规则捕获该事件
- 触发 Lambda 函数,启动审批流程
2. 操作确认阶段
系统向操作人发送确认邮件,确认其是否确实有意执行该高危操作:
- 如果操作人确认,流程进入审批阶段
- 如果操作人取消或超时未响应,流程终止
3. 审批阶段
系统向指定的审批人发送审批请求邮件:
- 邮件中包含操作详情、资源信息和操作人信息
- 审批人可以选择批准或拒绝该操作
- 支持配置多级审批流程和审批超时时间
4. 执行阶段
当审批通过后:
- 系统向操作人发送最终确认邮件
- 操作人确认后,系统生成临时 IAM 角色,具有执行特定高危操作的最小权限
- 系统执行高危操作并记录结果
- 操作完成后,临时权限立即被撤销
5. 日志与通知
整个流程中的所有环节都会被记录到 DynamoDB 中,包括:
- 操作详情(资源 ID、操作类型等)
- 时间戳(操作时间、审批时间等)
- 人员信息(操作人、审批人)
- 操作结果
同时,系统会在流程的关键节点发送通知邮件,确保相关人员及时了解操作状态。
方案优势
1. 全无服务器架构
- 低成本:按使用量付费,无需预置资源
- 高可靠:AWS 托管服务提供高可用性保障
- 易扩展:自动扩缩以应对不同规模的操作请求
2. 灵活的配置能力
- 可定制的高危操作范围:通过 EventBridge 规则灵活定义哪些操作需要二次验证
- 多级审批支持:可配置单人或多人审批流程
- 自定义通知模板:邮件内容和等待时间均可定制
3. 完善的安全保障
- 最小权限原则:临时权限仅限于特定资源的特定操作
- 完整审计日志:所有操作和审批记录可追溯
- 多重确认机制:操作人确认、审批人审批、操作人再确认的三重保障
4. 易于部署与维护
- AWS CloudShell + CDK 部署:简化部署流程
- 无需额外基础设施:完全基于AWS 托管服务
- 可扩展的通知渠道:除邮件外,可轻松扩展到 Slack、Teams 等通知渠道
能力扩展
本方案具有良好的扩展性,可以进一步增强以下能力:
- 集成企业身份系统:与企业 SSO 系统集成,实现基于角色的审批流程
- 智能风险评估:引入机器学习模型,对操作风险进行智能评估,动态调整审批流程
- 多渠道通知:扩展到 Slack、Microsoft Teams 等企业通讯工具
- 操作模拟与预览:在执行高危操作前,提供资源状态变化的模拟预览
- 自动化恢复能力:集成 AWS Backup,在执行高危操作前自动创建资源快照
结论
在云资源管理日益复杂的今天,二次验证机制为企业提供了一道重要的安全防线,有效防止了因恶意操作或误操作导致的资源损失。本文介绍的基于 AWS 无服务器架构的二次验证解决方案,具有部署简便、成本低廉、灵活可扩展等优势,适合各类企业采用。
通过实施这套解决方案,企业可以在保持运维效率的同时,显著提升云资源管理的安全性,为业务连续性提供更可靠的保障。
注:本文中的架构和代码示例仅供参考,实际部署时需根据企业具体需求进行调整和优化。