我们有一个API网关,其中公开了一些API。为了给其他AWS账户提供访问权限,我们使用了IAM角色方式,即我们在账户中创建了IAM角色,并在信任策略中使用了其他AWS账户可以假定的其他AWS账户ID。现在,如果我想以相同的角色向该策略添加更多的AWS账户,那么他们就可以担当此角色。通过练习可以这样做吗?还是应该为每个新的AWS账户ID创建新角色?哪种方法更好?
答案 0 :(得分:0)
不需要为每个客户(帐户)创建单独的角色,但是您应该确保正确处理外部ID。
对于每个客户,您应该创建仅在您和该特定客户之间共享的外部ID,以防止混淆的代理问题。
在为所有客户设置了外部ID之后,您可以修改角色的信任策略,以包括针对每个客户的单独语句,在其中检查它是否是受信任的主体(帐户ID)以及相应的外部ID已作为参数传递给DELETE
调用。
假设您有一个可以由两个客户担任的角色。第一个帐户的ID为sts:assumeRole
,该客户的外部ID为1111
。第二个帐户的ID为aaaa
,该客户的外部ID为2222
。您的信任政策应如下所示。
bbbb
请注意,您可能希望将GUID用作外部ID,而不是{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::1111:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "aaaa"
}
}
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::2222:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "bbbb"
}
}
}
]
}
或aaaa
。