在AWS IAM中有沒有一種方法可以通過腳本或在Web控制檯中找到哪些現有策略包含給定的操作?我可以搜索現有IAM策略以進行特定操作嗎?
例如,我想允許角色myRole
訪問我所有EC2實例上的DescribeTags操作。我知道我可以用適當的規則創建自己的策略,但如果存在這樣的情況,則希望使用現有的亞馬遜策略。
在AWS IAM中有沒有一種方法可以通過腳本或在Web控制檯中找到哪些現有策略包含給定的操作?我可以搜索現有IAM策略以進行特定操作嗎?
例如,我想允許角色myRole
訪問我所有EC2實例上的DescribeTags操作。我知道我可以用適當的規則創建自己的策略,但如果存在這樣的情況,則希望使用現有的亞馬遜策略。
這是舊的文章,但它可以幫助別人......不管別人怎麼說,你可以做到這一點。它只需要一些腳本。
您可以使用AWS CLI執行以下操作。
獲取策略的ARN並存儲在policies_arn
數組中。
mapfile -t policies_arn < <(aws iam list-policies --query 'Policies[*].[Arn]' --output text)
查看該policies_ver
陣列中的每個政策和商店VersionIds。
mapfile -t policies_ver < <(aws iam list-policies --query 'Policies[*].[DefaultVersionId]' --output text)
使用以使每一個政策循環來和政策文件存儲在~/policies.txt
for ((i=0; i<${#policies_arn[@]}; i++)); do echo ${policies_arn[i]} >> policies.txt && aws iam get-policy-version --policy-arn ${policies_arn[i]} --version-id ${policies_ver[i]} --output json >> ~/policies.txt; done
在文本編輯器了policies.txt
並搜索行動。
注意:根據您的CLI配置,您可能需要也可能不需要--output text
參數。但是,輸出必須是文本(而不是JSON)才能運行。
從那裏,你可以很容易地把它變成.sh
shell腳本。
樣本輸出:
arn:aws:iam::123456789012:policy/DenyAllAccess
{
"PolicyVersion": {
"CreateDate": "2016-12-06T18:40:51Z",
"VersionId": "v1",
"Document": {
"Statement": [
{
"Action": "*",
"Effect": "Deny",
"Resource": "*"
}
],
"Version": "2012-10-17"
},
"IsDefaultVersion": true
}
}
乾杯!
有沒有辦法通過操作縮小列表的範圍?我可以通過手動查找200多個政策來尋找「DescribeTags」,但這將是單調乏味的。在我的例子中,'AmazonEC2ReadOnlyPolicy'運行得很好,但這基本上只是一個「幸運的猜測」。我所希望的是在所有可用策略中搜索「ec2:DescribeTags」或甚至是「ec2:Describe *」的方法。 – amacleod
不,你不能這樣做,任何你可以嘗試政策模擬器多數民衆贊成但它不能通過上述控制檯中的關鍵詞搜索政策。 – error2007s