如何限制IAM用户承担具有特定名称的跨帐户角色

时间:2017-01-10 10:12:05

标签: amazon-web-services amazon-iam

我可以应用哪种条件来限制IAM仅承担具有特定名称的角色?

此用户在多个AWS账户上拥有可信关系,这些账户都包含角色名称" MyRole"。所以我想要一个像这样的条件:

Assumed RoleARN ~= arn:aws:iam::[0-9]*:role/MyRole

由于

1 个答案:

答案 0 :(得分:5)

要让您的IAM用户在多个帐户中担任特定名称的角色,明确地列出所有必需的角色ARN 。这是安全的方式来做到这一点。

"Resource": [
    "arn:aws:iam::AWS-ACCOUNT-ID1:role/MyRole",
    "arn:aws:iam::AWS-ACCOUNT-ID2:role/MyRole",
    "arn:aws:iam::AWS-ACCOUNT-ID3:role/MyRole"
]

以下是完整的政策:( AWS-ACCOUNT-ID是12位数字,没有大肆宣传

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": [
                "arn:aws:iam::AWS-ACCOUNT-ID1:role/MyRole",
                "arn:aws:iam::AWS-ACCOUNT-ID2:role/MyRole",
                "arn:aws:iam::AWS-ACCOUNT-ID3:role/MyRole"
            ]
        }
    ]
}

但是,考虑到您尝试使用通配符代替帐户ID,我想强调可能存在以下情况,但会使您的公司面临安全风险。它违反了principle of least privilege

访问以承担任何AWS账户中的任何角色( INSECURE

"Resource": [
    "arn:aws:iam::*"
]

获取假设' MyRole'在任何AWS账户中( INSECURE

"Resource": [
    "arn:aws:iam::*:role/MyRole"
]

通过这种通配符访问,IAM用户可以假设“MyRole”#39; (或任何角色)代表贵公司在任何第三方AWS账户中。