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

How can restrict an IAM user to assume Cross Account roles with a specific name

我可以申请哪个条件来限制 IAM 仅承担具有特定名称的角色?

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

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

谢谢

要让您的 IAM 用户在多个账户中担任特定名称的角色,white-list 明确所有必需的角色 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 账户中承担任何角色的权限(不安全

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

在任何 AWS 账户中承担 'MyRole' 的访问权限(不安全

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

通过此通配符访问,IAM 用户可以代表您的公司在任何 third-party AWS 账户中担任 'MyRole'(或任何角色)。