我可以应用哪个条件来限制 IAM 仅代入具有特定名称的角色?
此用户在多个 AWS 账户上具有信任关系,这些账户都包含角色名称"MyRole"。所以我想要一个这样的条件:
Assumed RoleARN ~= arn:aws:iam::[0-9]*:role/MyRole
谢谢
要让您的 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,我想强调以下内容是可能的,但会使您的公司面临安全风险。它违反了最小特权原则。
有权代入任何 AWS 账户中的任何角色 (不安全)
"Resource": [
"arn:aws:iam::*"
]
在任何 AWS 账户中担任"MyRole"的访问权限 (不安全)
"Resource": [
"arn:aws:iam::*:role/MyRole"
]
通过此通配符访问权限,IAM 用户可以在任何第三方 AWS 账户中代表您的公司代入"MyRole"(或任何角色)。