AWS root帐户无法访问组织帐户

时间:2019-03-17 18:31:30

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

我正在编写一个适用于AWS平台的应用程序,该应用程序计划从具有根证书的root帐户启动。此时,我需要停止由AWS组织成员帐户启动的某些计算机。

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

更多关于这里。 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权限以访问所有内容或让其担当角色?

1 个答案:

答案 0 :(得分:1)

首先,请不要使用您的Root帐户!最佳做法是从根帐户中删除访问密钥,添加MFA令牌并将其锁定。我们拥有庞大的AWS Organization结构,除了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. 在子帐户中创建具有策略的目标角色,以允许该子帐户中的操作以及在主组织帐户中为您的IAM用户定义的信任关系。

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

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

其他:不确定要构建的内容,但在适当的情况下,Consider Using Service-linked Roles直接向应用提供所需的特定权限-而不是处理用户凭据。

相关问题