You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用SSM SendCommand针对资源组所需IAM权限配置问题排查

以资源组为目标执行SSM SendCommand的权限配置方案

问题根源

你当前的IAM策略存在两个核心问题:

  1. 调用ssm:SendCommand时指定了资源组作为目标,但资源组的ARN未被纳入该操作的资源列表,AWS会拒绝未授权的资源访问
  2. 过度开放了resource-groups:*权限,且未明确限定必要的资源组操作——实际上仅需resource-groups:ListGroupResources权限(SSM会调用该API获取资源组内的EC2实例)

修正后的CDK权限代码

// 允许针对指定文档、实例和资源组发送SSM命令
ssmSenderlambdaRole.addToPolicy(new PolicyStatement({
  effect: Effect.ALLOW,
  actions: ['ssm:SendCommand'],
  resources: [
    linuxDocumentArn,
    windowsDocumentArn,
    `arn:aws:ec2:${Aws.REGION}:${Aws.ACCOUNT_ID}:instance/*`,
    // 替换为你的目标资源组ARN,支持多个或通配符(按需使用)
    `arn:aws:resource-groups:${Aws.REGION}:${Aws.ACCOUNT_ID}:group/your-resource-group-name`
  ],
}));

// 仅授予获取资源组成员的最小权限
ssmSenderlambdaRole.addToPolicy(new PolicyStatement({
  effect: Effect.ALLOW,
  actions: ['resource-groups:ListGroupResources'],
  resources: [
    `arn:aws:resource-groups:${Aws.REGION}:${Aws.ACCOUNT_ID}:group/your-resource-group-name`
  ],
}));

补充注意事项

  • 若需支持多个资源组,可在资源列表中添加对应ARN,或使用arn:aws:resource-groups:${Aws.REGION}:${Aws.ACCOUNT_ID}:group/*通配符,但建议仅开放业务所需的资源组以遵循最小权限原则
  • 确保目标EC2实例已安装并运行SSM Agent,且实例关联的IAM角色包含AmazonSSMManagedInstanceCore托管策略(否则实例无法接收SSM命令)

内容的提问来源于stack exchange,提问作者Sam Fakhreddine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 02:24:57