多个AWS帐户承担用于API网关访问的IAM角色

时间:2019-06-03 06:12:18

标签: amazon-web-services roles amazon-iam

我们有一个API网关,其中公开了一些API。为了给其他AWS账户提供访问权限,我们使用了IAM角色方式,即我们在账户中创建了IAM角色,并在信任策略中使用了其他AWS账户可以假定的其他AWS账户ID。现在,如果我想以相同的角色向该策略添加更多的AWS账户,那么他们就可以担当此角色。通过练习可以这样做吗?还是应该为每个新的AWS账户ID创建新角色?哪种方法更好?

1 个答案:

答案 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