繁体   English   中英

通过角色连接到 2 个不同 AWS 账户的资源

[英]Connect to resources of 2 different AWS accounts via roles

考虑 2 个 AWS 账户 A(其他团队)和 B(我的)对于我的用例,我必须轮询 A 的 AWS 账户中的队列以获取有效负载并在 B 中执行数据库操作。为此,我在 B 中创建了一个角色,具有访问我的数据库 + A 的帐户 ID 作为信任关系。 同样,A 创建了一个角色,用于授予对 A 中队列的访问权限 + 添加 B 作为受信任关系。

执行所有轮询 + 数据库操作的代码将驻留在我帐户 ( B ) 中的 EC2 上。 现在我如何从角色的角度使用有效负载并执行操作。 我的理解正确吗?

  1. 承担角色A
  2. 轮询到配置队列,从 SQS 获取 JSON 负载
  3. 承担角色 B
  4. 在 Oracle RDS 中执行数据库操作
  5. 承担角色A
  6. 返回对响应 SQS 的响应
  7. 在配置队列 SQS 上再次开始轮询

仅供参考:我正在使用 Python + Boto3 执行上述操作

您没有说明您使用的是哪种编程语言或 SDK,但基本上您可以创建两个客户端/服务对象,一个利用来自角色 A 的凭据,另一个利用来自角色 B 的凭据。然后只需使用适当的客户端/服务对象进行 API 调用.

使用 boto3,例如:

sqs_accounta = boto3.client(
    'sqs',
    region_name='us-east-1',
    aws_access_key_id=xxx,
    aws_secret_access_key=yyy,
    aws_session_token=zzz
)

rds_accountb = boto3.client(
    'rds',
    region_name='us-west-2',
    aws_access_key_id=aaa,
    aws_secret_access_key=bbb,
    aws_session_token=ccc
)

您可以向账户 B 中的用户/角色授予对账户 A 中队列的跨账户访问权限,而不是承担角色。

在您的情况下,将其授予 EC2 实例角色,然后您将能够从实例内执行所有必需的操作,而无需任何“承担角色”技巧。

假装一切都发生在您自己的帐户(帐户-B)中。

您将为您的代码提供一组凭证(IAM 用户,或者,如果代码在 Amazon EC2 实例上运行,您将为该实例分配一个 IAM 角色),它可用于访问账户 B 中的必要资源. 所以,没有问题。

唯一的附加要求是您希望在账户 A 中访问 Amazon SQS。 碰巧的是,您可以直接向授予跨账户访问权限的 Amazon SQS 队列添加权限

请参阅: Amazon SQS 的 IAM 策略的基本示例 - Amazon Simple Queue Service

因此,您实际上不需要承担任何角色 只需使用分配给您的代码的普通凭证,并向 SQS 队列添加权限以允许该特定 IAM 用户或 IAM 角色使用该队列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM