我可以搜索现有 IAM 策略来执行特定操作吗?

ama*_*eod 8 amazon-web-services amazon-iam

在 AWS IAM 中,有没有办法通过脚本或 Web 控制台来查找哪些现有策略包含给定操作?

例如,我希望允许角色myRole访问我的所有 EC2 实例上的DescribeTags操作。我知道我可以使用适当的规则创建自己的策略,但如果存在这样的情况,我想使用现有的亚马逊策略。

Sat*_*hed 6

这是一篇旧帖子,但它可能会对某人有所帮助......不管其他人怎么说,你都可以做到这一点。它只需要一些脚本编写。

您可以使用 AWS CLI 执行以下操作。

  1. 获取策略的 ARN 并存储在policies_arn数组中。

    mapfile -t policies_arn < <(aws iam list-policies --query 'Policies[*].[Arn]' --output text)

  2. 获取每个策略的 VersionId 并存储在policies_ver数组中。

    mapfile -t policies_ver < <(aws iam list-policies --query 'Policies[*].[DefaultVersionId]' --output text)

  3. 使用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

  4. 在文本编辑器中打开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)

干杯!