ec2-create-image にはどの IAM 権限が必要ですか?

ec2-create-image にはどの IAM 権限が必要ですか?

私は公式ドキュメントこのコマンドを使用するために IAM ユーザーがどのような権限を必要とするかについての参考資料は見つからなかったようです。

IAM ユーザーがこの特定のインスタンスのイメージのみを作成できるようにしたいので、ポリシーを次のように設定しました。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt999",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateImage"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:ec2:us-east-1:<my account id>:instance/<my instance id>"
      ]
    }
  ]
} 

しかし、EC2 CLI を使用するとアクセス拒否エラーが発生し続けました。そのResource部分を に変更したところ"*"、動作するようになりましたが、IAM ユーザーが自分のアカウント内の任意の EC2 インスタンスに AMI を作成できるようになりました (そのため、再起動が発生します)。

これをロックダウンするにはどうすればいいでしょうか?

答え1

残念ながら、現時点ではリソースレベルでこれをロックダウンすることはできません。EC2アクションの束リソース レベルのアクセス許可をサポートしていないものもec2:CreateImageその 1 つです。

答え2

イメージを作成すると、そのインスタンスにアタッチされたスナップショットも作成されます。以下の IAM ポリシーが機能するはずです。

{     
  "Effect": "Allow",
  "Action": [
    "ec2:Describe*",
    "ec2:CreateSnapshot",
    "ec2:CreateImage"
  ],
  "Resource": [
    "*"
  ]
}

答え3

リソース レベルで CreateImage をロック/制限することはできません。@nkryption の回答は正しかったです。 ec2-api-permissions は、AWSEC2 の API パーミッションを制御するために設計されています。

答え4

CreateImage は、リソース レベルのポリシーをサポートするようになりました。次のポリシーでは、指定されたインスタンス ID に対してのみイメージを作成できます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCreateImage",
            "Effect": "Allow",
            "Action": "ec2:CreateImage",
            "Resource": "arn:aws:ec2:*::image/*"
        },
        {
            "Sid": "RestrictCreateImageToInstance",
            "Effect": "Allow",
            "Action": "ec2:CreateImage",
            "Resource": "arn:aws:ec2:*:999999999999:instance/i-999999999",

        }
    ]
}

要件に合わせてアカウント番号とインスタンス ID を更新します。インスタンス タグに基づいてこれを制限することもできます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCreateImage",
            "Effect": "Allow",
            "Action": "ec2:CreateImage",
            "Resource": "arn:aws:ec2:*::image/*"
        },
        {
            "Sid": "RestrictCreateImageToInstances",
            "Effect": "Allow",
            "Action": "ec2:CreateImage",
            "Resource": "arn:aws:ec2:*:999999999999:instance/*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Name": "Test"
                }
            }
        }
    ]
}
            

関連情報