![](/img/trans.png)
[英]AWS IAM policy to deny permissions to any EC2 instances inside of autoscaling group or ECS cluster
[英]AWS IAM Policy grant permissions for some EC2 instances
我想限制特定用戶的訪問權限,只能查看幾個 EC2 實例。 我在 IAM 角色中創建了一個新用戶,並為其附加了一個新策略。 該政策的內容附在下面。 我試圖查看文檔並像這樣自己做:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": [
"arn:aws:ec2:eu-west-1:ACCOUNT_ID:instance/i-INSTANCE_ID1",
"arn:aws:ec2:eu-west-1:ACCOUNT_ID:instance/i-INSTANCE_ID2"
]
}
]
}
我放置了我的region
、 ACCOUNT_ID
(所有者 ID,不是創建的新用戶instance-id
)和instance-id
,但是當我與該用戶連接並列出所有實例時,我得到了這個An error occurred fetching instance data: You are not authorized to perform this operation.
.
將代碼放入 JSON 編輯器后,在Policy Review步驟中,我收到以下消息:
此策略定義了一些不提供權限的操作、資源或條件。 要授予訪問權限,策略必須具有具有適用資源或條件的操作。 有關詳細信息,請選擇顯示剩余了解更多
我假設您在控制台中以該用戶身份連接(但與 CLI 相同)這是我認為正在發生的事情:
要列出所有實例,控制台很可能會調用DescribeInstances API。 根據可在 IAM 策略中使用的操作/資源/標簽列表,此 API 不支持 IAM 中的資源過濾器。
這意味着您的用戶無權列出實例,並且它們不會顯示在控制台中。 您可以通過使用 CLI 請求特定實例 id 的詳細信息來驗證此理論,如果我的假設正確,它將被授權。
由於 DescribeInstances 不能受資源或標簽的限制,我認為不可能為用戶過濾實例列表。
要使控制台正常工作,您需要在 IAM 策略中添加以下語句
"Statement": [
{ your existing statement },
{
"Effect": "Allow",
"Action": "ec2:DescribeInstances",
"Resource": "*"
}
]
如果我是對的,請報告 :-) 您在問題中提到的示例完全表明: Resources = *
on DescribeInstances
和 Resources 特定 InstanceId 在其他操作上。
之前的答案是錯誤的,您可以有條件地允許通過標簽名稱訪問 ec2:DescribeInstances。 這也是 AWS 的最佳實踐。 還明確拒絕訪問 ec2:CreateTags 和 ec2:DeleteTags 操作,以防止用戶創建或刪除標簽來控制實例。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:DescribeInstances",
"Resource": "*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/UserName": "${aws:username}"
}
}
},
{
"Effect": "Deny",
"Action": [
"ec2:CreateTags",
"ec2:DeleteTags"
],
"Resource": "*"
}
]
}
DescribeInstances
操作不支持條件。
https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.