
我瀏覽了官方文檔並且似乎找不到任何關於 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
部分更改為 just "*"
,現在它可以工作了,但現在我的 IAM 使用者可以為我帳戶中的任何 EC2 執行個體建立 AMI(因此導致重新啟動)。
我怎麼能鎖定這個?
答案1
不幸的是,您目前無法將其鎖定在資源層級。有一個一堆 EC2 操作不支援資源等級權限,並且ec2:CreateImage
是其中之一。
答案2
建立映像也涉及建立附加到該實例的快照。以下 IAM 策略應該有效。
{
"Effect": "Allow",
"Action": [
"ec2:Describe*",
"ec2:CreateSnapshot",
"ec2:CreateImage"
],
"Resource": [
"*"
]
}
答案3
您無法在資源層級鎖定/限制 CreateImage,@nkryption 的答案是正確的。 http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-api-permissions.html
答案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"
}
}
}
]
}