【问题标题】:AWS root account cannot access organizational accountsAWS 根账户无法访问组织账户
【发布时间】:2019-08-08 04:18:52
【问题描述】:

我正在为 AWS 平台编写一个应用程序,该应用程序计划从根帐户启动,并带有根凭据。此时我需要停止 AWS 组织成员账户启动的部分机器。

默认情况下,AWS 组织不授予对根账户的访问权限以查看或管理其他成员账户的资源。所以我尝试使用临时凭据并尝试承担由目标帐户创建的角色。

更多关于这里。 https://docs.aws.amazon.com/AmazonS3/latest/dev/AuthUsingTempSessionTokenJava.html

另一方面,它不允许 root 帐户承担角色,并抛出此类异常。

com.amazonaws.services.securitytoken.model.AWSSecurityTokenServiceException: Roles may not be assumed by root accounts. (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: 7bee7537-48e0-11e9-bb1a-bb36134736e4)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1695) ~[aws-java-sdk-core-1.11.475.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1350) ~[aws-java-sdk-core-1.11.475.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1101) ~[aws-java-sdk-core-1.11.475.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:758) ~[aws-java-sdk-core-1.11.475.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:732) ~[aws-java-sdk-core-1.11.475.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:714) ~[aws-java-sdk-core-1.11.475.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:674) ~[aws-java-sdk-core-1.11.475.jar:na]
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:656) ~[aws-java-sdk-core-1.11.475.jar:na]
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:520) ~[aws-java-sdk-core-1.11.475.jar:na]
at...

有没有办法解决这个问题?例如,以某种方式授予对所有内容的 root 访问权限或让它承担角色?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-iam aws-organizations


    【解决方案1】:

    首先,请不要使用您的 Root 帐户!最佳做法是从 root 帐户中删除访问密钥,添加 MFA 令牌并将其锁定。我们有一个庞大的 AWS 组织结构,除了absolutely required 之外,我们不会将根账户用于任何其他地方。

    请参阅IAM Best Practices 用户指南,特别是以下部分:Lock Away Your AWS Account Root User Access Keys

    出于您描述的管理目的,请使用 IAM 用户

    IAM 用户可以担任角色。推荐步骤:

    1. 创建 IAM 组并附加管理员权限所需的策略。 AdministratorAccess 策略是一个简单的预构建策略,可在当前帐户中提供完全的管理员访问权限,但要在子帐户中承担角色,您真正需要允许的是 sts:AssumeRole 操作。

    2. 创建一个 IAM 用户并将其分配给 IAM 组。

    3. 使用策略在您的子账户中创建目标角色,以允许在该子账户中执行操作,并在主 Org 账户中为您的 IAM 用户定义信任关系。

    4. 通过 IAM 用户凭证、临时凭证等对您的应用进行身份验证。

      • 注意:您链接的临时凭证文档适用于 IAM 用户,我建议您在正确设置 IAM 用户后再次尝试。
      • 有很多方法可以对 AWS 服务进行身份验证,另一个示例请参见:Assuming an IAM Role in the AWS CLI

    附加:不确定您正在构建什么,但如果合适,Consider Using Service-linked Roles 可以直接为应用提供所需的特定权限,而不是处理用户凭据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-17
      • 2023-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多