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

如何将ECS假定任务角色添加至KMS密钥策略解决解密权限问题

ECS Execute Command KMS Decrypt权限被拒的解决办法

方案一:用KMS密钥策略的条件匹配任务角色

KMS密钥策略不支持arn:aws:sts::444444444444444:assumed-role/EcsTaskRole-b2c7a1c/*这种通配符格式的ARN,但可以通过条件判断匹配原始IAM角色——因为STS临时身份的aws:PrincipalArn属性会关联到对应的任务角色ARN。

直接修改KMS密钥策略,加入以下规则:

{
  "Sid": "AllowECSTaskDecrypt",
  "Effect": "Allow",
  "Principal": "*",
  "Action": "kms:Decrypt",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "aws:PrincipalArn": "arn:aws:iam::444444444444444:role/EcsTaskRole-b2c7a1c"
    }
  }
}

所有通过这个任务角色生成的临时STS身份(包括你的ECS任务身份)都会被允许执行解密操作,完美绕开通配符的限制。

方案二:给任务角色附加IAM权限+KMS策略放行角色

另一种常规思路是双管齐下:先让KMS密钥允许任务角色访问,再给任务角色加解密权限。

  1. 更新KMS密钥策略,添加对任务角色的放行:
{
  "Sid": "GrantECSTaskRoleAccess",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::444444444444444:role/EcsTaskRole-b2c7a1c"
  },
  "Action": "kms:Decrypt",
  "Resource": "*"
}
  1. 在ECS任务角色的IAM权限中添加解密权限:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:你的区域:444444444444444:key/你的KMS密钥ID"
    }
  ]
}

注意事项

  • 权限修改后AWS需要1-2分钟同步,别着急立刻测试
  • 确认KMS密钥确实是ECS Execute Command配置中指定的加密密钥(检查任务定义或集群的Execute Command设置)
  • 可以在容器内执行aws sts get-caller-identity验证当前身份,确认角色关联正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:22:10