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

IAM策略限制无合规标签实例创建时不同AMI表现异常咨询

问题根源与解决方案

这个问题的核心原因是不同AMI的ARN格式差异导致的权限覆盖不全,咱们来具体分析:

1. AMI ARN的两种格式差异

  • AWS官方发布的公共AMI(比如你测试的Amazon Linux 2),它的ARN格式是:arn:aws:ec2:<region>::image/<ami-id>——注意中间没有账号ID段,直接是两个冒号连接region和image。
  • 第三方发布的公共AMI(比如CentOS 7),ARN格式是:arn:aws:ec2:<region>:<account-id>:image/<ami-id>——这里多了一个发布者的账号ID段。

2. 你的IAM策略的漏洞

在AllowRunInstances这条允许语句里,你指定的image资源仅覆盖了官方AMI的格式:

"arn:aws:ec2:*::image/*"

完全没有包含第三方AMI的ARN格式。而ec2:RunInstances是一个多资源依赖的操作,需要对启动实例用到的AMI、子网、安全组等所有资源都拥有允许权限,只要其中一个资源没有被允许,整个请求就会被拒绝。

这就解释了为什么选Amazon Linux 2时正常(AMI资源符合允许列表),选CentOS 7时触发权限拒绝(AMI资源不在允许范围内)。

3. 修复方案

修改AllowRunInstances语句中的Resource列表,同时包含两种AMI的ARN格式:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowToDescribeAll",
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "ec2:CreateTags",
        "ec2:DeleteTags"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowRunInstances",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:*::image/*",
        "arn:aws:ec2:*:*:image/*",
        "arn:aws:ec2:*::snapshot/*",
        "arn:aws:ec2:*:*:subnet/*",
        "arn:aws:ec2:*:*:network-interface/*",
        "arn:aws:ec2:*:*:security-group/*",
        "arn:aws:ec2:*:*:key-pair/*"
      ]
    },
    {
      "Sid": "AllowLaunchOnlyWithRequiredTags1",
      "Effect": "Deny",
      "Action": [
        "ec2:RunInstances"
      ],
      "Resource": [
        "arn:aws:ec2:*:012345678901:instance/*"
      ],
      "Condition": {
        "StringNotLike": {
          "aws:RequestTag/Purpose": "?*",
          "aws:RequestTag/CostCategory": "?*",
          "aws:RequestTag/Env": "?*",
          "aws:RequestTag/CreatedBy": "?*",
          "aws:RequestTag/Owner": "?*",
          "aws:RequestTag/CreationDate": "?*",
          "aws:RequestTag/Expiry": "?*",
          "aws:RequestTag/Name": "?*",
          "aws:RequestTag/Project": "?*"
        }
      }
    }
  ]
}

添加arn:aws:ec2:*:*:image/*这个资源条目后,就能覆盖所有第三方发布的公共AMI,同时也支持你自己账号创建的自定义AMI(这类AMI的ARN格式同样包含账号ID段),确保启动CentOS 7实例时的AMI资源权限被允许。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:59:11