如何通过AWS Systems Manager跨AWS Organizations多账号管理EC2实例更新
AWS Organizations架构下跨账号SSM管理EC2实例最佳实践
一、核心前提确认
- 确保所有成员账号已加入AWS Organizations,且启用了SSM服务
- 所有目标EC2实例满足SSM Agent运行条件:
- 实例处于公有子网/能通过VPC端点访问SSM服务(推荐用VPC端点避免公网依赖)
- 已安装对应系统的SSM Agent(Amazon Linux 2/Amazon Linux 2023默认预装,Windows Server部分版本也预装,其他系统需手动安装)
二、IAM角色与策略配置
1. 成员账号:SSM实例角色(必须)
创建角色并附加AmazonSSMManagedInstanceCore AWS托管策略,将该角色关联到所有目标EC2实例。该策略包含SSM Agent与SSM服务通信的核心权限,关键权限片段:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:UpdateInstanceInformation", "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
若需补丁管理,额外附加AmazonSSMPatchAssociation托管策略,获取补丁扫描、安装权限
2. 成员账号:跨账号信任角色(供维护账号调用)
在每个成员账号创建角色(例如SSMCrossAccountAdminRole),信任关系指向维护账号,信任策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::维护账号ID:root" }, "Action": "sts:AssumeRole" } ] }
给该角色附加权限策略,允许访问SSM核心资源:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:DescribeInstances", "ssm:ListManagedInstances", "ssm:GetInventory", "ssm:StartAutomationExecution", "ssm:CreatePatchBaseline", "ec2:DescribeInstances" ], "Resource": "*" } ] }
3. 维护账号:IAM实体权限
给维护账号中用于操作SSM的IAM用户/角色,添加允许扮演成员账号角色的权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::*:role/SSMCrossAccountAdminRole" } ] }
三、跨账号访问配置(Organizations层面)
1. 启用SSM跨账号共享
- 在Organizations控制台检查服务控制策略(SCP),确保未阻止SSM相关操作
- 在SSM控制台「跨账号管理」模块,添加成员账号为共享目标,指定维护账号为管理账号
2. 批量配置成员账号角色(可选)
用AWS CloudFormation StackSets批量部署跨账号信任角色到所有成员账号:
- 编写包含角色定义和信任策略的CloudFormation模板
- 通过StackSets将模板部署到指定组织单元(OU)或全部成员账号
四、Fleet Manager实例可见性配置
- 进入维护账号的SSM控制台「Fleet Manager」
- 点击「设置跨账号访问」,添加成员账号的
SSMCrossAccountAdminRoleARN - 刷新页面后,在线且关联了SSM实例角色的成员账号EC2实例会自动显示在列表中
五、用Runbooks实现跨账号补丁自动化
1. 配置补丁基线
在维护账号集中创建补丁基线,定义补丁规则(如仅安装安全补丁),并关联到成员账号实例的补丁组。
2. 执行跨账号补丁Runbook
- 在维护账号SSM控制台「自动化」模块,选择预定义Runbook(如
AWS-RunPatchBaseline) - 执行参数中选择「跨账号」,指定成员账号ID和对应信任角色ARN
- 通过标签、补丁组筛选目标实例,启动自动化执行
- 可配置维护窗口,定期自动执行补丁任务,规避业务高峰
六、简化流程的技巧
- 标签统一管理:给成员账号EC2实例打统一标签(如
Environment:Production),快速筛选目标实例 - SCP强制合规:在Organizations中创建SCP,强制所有成员账号EC2实例必须关联SSM实例角色,避免遗漏
- SSM Inventory自动收集:启用SSM Inventory,自动收集实例软件、配置信息,辅助补丁依赖分析
- 集中日志监控:将成员账号SSM执行日志同步到维护账号的CloudWatch Logs,统一监控补丁执行状态
内容的提问来源于stack exchange,提问作者Emre Hayta
相关产品推荐
相关产品推荐

