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

IAM role to access services of another AWS account

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

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

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

示例 STS 政策:

{
"Version": "2012-10-17",
"Statement": {
    "Effect": "Allow",
    "Action": "sts:AssumeRole",
    "Resource": "arn:aws:iam::546161XXXXXX:role/AdminAccessToAnotherAccount"
   }
}

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

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

看来您的情况是:

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

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

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

示例: