ama*_*eod 8 amazon-web-services amazon-iam
在 AWS IAM 中,有没有办法通过脚本或 Web 控制台来查找哪些现有策略包含给定操作?
例如,我希望允许角色myRole访问我的所有 EC2 实例上的DescribeTags操作。我知道我可以使用适当的规则创建自己的策略,但如果存在这样的情况,我想使用现有的亚马逊策略。
这是一篇旧帖子,但它可能会对某人有所帮助......不管其他人怎么说,你都可以做到这一点。它只需要一些脚本编写。
您可以使用 AWS CLI 执行以下操作。
获取策略的 ARN 并存储在policies_arn数组中。
mapfile -t policies_arn < <(aws iam list-policies --query 'Policies[*].[Arn]' --output text)
获取每个策略的 VersionId 并存储在policies_ver数组中。
mapfile -t policies_ver < <(aws iam list-policies --query 'Policies[*].[DefaultVersionId]' --output text)
使用for循环循环遍历每个策略并将策略文档存储在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
}
}
Run Code Online (Sandbox Code Playgroud)
干杯!
| 归档时间: |
|
| 查看次数: |
3350 次 |
| 最近记录: |