访问另一个 AWS 账户服务的 IAM 角色

beg*_*hon 0 amazon-s3 amazon-ec2 amazon-web-services amazon-sns amazon-iam

出于安全原因,我们有一个开发、QA 和一个生产 AWS 账户。我们正在为实例使用 IAM 角色。这在每个帐户的基础上都能正常工作。

现在这里的招聘是我们要从 Dev aws 帐户访问 QA 帐户的 EC2 实例之一上的多个 aws 服务{例如 S3、SQS、SNS、EC2 等}。

我们创建了 STS 策略和角色,允许可信实体作为另一个 AWS 账户,但不知何故无法将此角色附加到 EC2 实例。

STS 策略示例:

{
"Version": "2012-10-17",
"Statement": {
    "Effect": "Allow",
    "Action": "sts:AssumeRole",
    "Resource": "arn:aws:iam::546161XXXXXX:role/AdminAccessToAnotherAccount"
   }
}
Run Code Online (Sandbox Code Playgroud)

AdminAccessToAnotherAccount:此 aws 策略针对具有管理员访问权限的另一个帐户。

附加到 ec2 实例时未列出此角色。

Joh*_*ein 5

看来你的情况是:

  • 您在 Account-1 中有一个 EC2 实例
  • 将 IAM 角色(“Role-1”)分配给 EC2 实例
  • 您想从 EC2 实例访问 Account-2 中的资源

以下步骤可以启用此功能:

  • 使用您希望实例接收的权限在 Account-2(“Role-2”)中创建一个 IAM 角色
  • 向角色 2 添加信任策略,信任角色 1
  • 确认 Role-1 有权在 Role-2 上调用 AssumeRole
  • 从使用 Role-1 的 EC2 实例,在 Role-2 上调用AssumeRole
  • 它将返回一组凭据(访问密钥、秘密密钥、令牌)
  • 使用这些凭据访问 Account-2 中的服务(通过aws configure --profile foo或 API 调用)。
    • 如果使用aws configure,您还需要手动编辑该~/.aws/credentials文件以将其添加aws_session_token到配置文件中,因为 CLI 命令不会请求它。

例子: