作为AWS Organization的管理account/delegated admin,如何在AWS SDK中为每个成员账户调用AWS服务?

As a management account/delegated admin in a AWS Organization, how to call AWS services for each member account in AWS SDK?

假设我从帐户 111111111111 建立了一个 AWS 组织,然后我 create/invite 2 个帐户,222222222222 和 33333333333。启用 SCP 后,我立即看到一个 FullAWSAccess 策略附加到所有成员。我试图在 AWS SDK 中以编程方式更新每个帐户,而不必每次都在控制台上切换角色。例如:

AWSOrganizations client = AWSOrganizationsClientBuilder.standard().build();
ListAccountsResult result = client.listAccounts(new ListAccountsRequest().withMaxResults(10))
result.getAccounts()
      .stream()
      .forEach(account -> {
          // I am not sure what to do with below data
          // account.getArn()
          // account.getId()
      })

假设我希望每个成员像这样放置一个 s3 对象:

s3.putObject(..)

我是否需要为每个会员账户承担一个角色(AWS 默认创建一个 OrganizationAccountAccessRole 角色)并调用 AWS 服务?还是我遗漏了什么?

您的假设是正确的,为了在其他成员帐户中执行操作,您需要先在该帐户中承担一个角色。 AWS Organizations 在每个新创建的账户中创建 OrganizationAccountAccessRole,此角色具有信任主账户的信任策略。因此,只要您使用具有 sts:AssumeRole 操作的任何角色通过主帐户的身份验证,您就可以在目标帐户中担任 OrganizationAccountAccessRole 并执行“必需品”。

作为最佳实践,您应该在每个帐户和一个专用的自动化帐户中拥有自己的自动化角色。这个自动化角色可以说“管道角色”将具有只能从您的自动化帐户承担的有限权限。

通过这种方式,您可以减少使用主帐户的需要,并使该自动化角色仅在您的自动化需要时发挥作用,而不是使用完整的 AdministratorAccess 策略。