AWS | IAM | 获取与用户或角色关联的策略

1,634 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

AWS IAM权限模型介绍

AWS IAM 权限模型包括Account、User、Role、Group、Policy、Permission 以及相互之间的关系,其关系如下图所示。

image.png

具体对权限模型的介绍见官网,这篇文章的主题讲解如何获取与用户或角色关联的策略(内联策略-Inline Policy和托管策略-Managed Policy)。

内联策略是嵌入在 IAM 身份(用户、组或角色)中的策略;托管策略 是由 AWS 创建和管理的独立策略;两者最大的区别是后者有独立的Resource Arn,两者合在一起才是IAM 身份完整的策略,详情请参考docs.aws.amazon.com/zh_cn/IAM/l…

取附加在 IAM User 上的 IAM Policy (Managed Policy)

step1.列出所有的 IAM Users(list-users) docs.aws.amazon.com/cli/latest/…

step2.获取附加在 IAM User 的 IAM policy (list-attached-user-policies) docs.aws.amazon.com/cli/latest/…

会得到以下输出:

{
    "AttachedPolicies": [
        {
            "PolicyName": "AutoScalingFullAccess",
            "PolicyArn": "arn:aws:iam::123456789012:policy/MyEC2Policy"
        }
    ]
}

step3.获取某个 Poilcy 的默认版本号(get-policy) docs.aws.amazon.com/cli/latest/… 会得到以下输出:

{
    "Policy": {
        "PolicyName": "MyEC2Policy",
        "PolicyId": "ANPAIZT2BABFC6H2KPSEU",
        "Arn": "arn:aws:iam::123456789012:policy/MyEC2Policy",
        "Path": "/",
        "DefaultVersionId": "v2",            <-----------  取得默认版本
        "AttachmentCount": 0,
        "PermissionsBoundaryUsageCount": 0,
        "IsAttachable": true,
        "Description": "Allow users to start and start EC2 instances.",
        "CreateDate": "2019-07-21T12:08:28Z",
        "UpdateDate": "2019-05-29T23:06:26Z",
        "Tags": []
    }
}

step4.获取某个 Policy 的内容(get-policy-version) docs.aws.amazon.com/cli/latest/… 会得到以下输出:

{
    "PolicyVersion": {
        "Document": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "ec2:StartInstances",
                        "ec2:StopInstances"
                    ],
                    "Resource": "arn:aws:ec2:*:*:instance/*"
                },
                {
                    "Effect": "Allow",
                    "Action": "ec2:DescribeInstances",
                    "Resource": "*"
                },
                {
                    "Effect": "Deny",
                    "Action": "ec2:TerminateInstances",
                    "Resource": "*"
                }
            ]
        },
        "VersionId": "v2",
        "IsDefaultVersion": true,
        "CreateDate": "2020-05-29T23:06:26Z"
    }
}

获取IAM 用户的某个 Inline policy 的内容

需要用到get-user-policy docs.aws.amazon.com/cli/latest/… 会得到以下输出:

{
    "UserName": "WStester",
    "PolicyName": "IAMLimitedAdmin",
    "PolicyDocument": {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "workspaces:*",
                    "ds:*"
                ],
                "Resource": "*"
            }
        ]
    }
}