我在自动缩放的ec2-env上运行了应用程序。通过AWS CDK创建的account1的(它还应该支持在多个区域上运行(。在应用程序执行过程中,我需要从account2的s3中获取对象。
获取s3数据的方法之一是使用tmp凭据(通过sts扮演角色(:
- 在account1端为ec2实例角色创建一个策略,以承担s3对象的sts-tmp凭据
- 在account2端创建一个策略GetObject访问s3对象
- 在account2站点上创建角色并将point2的策略附加到它+与account1的ec2角色的信任关系
优点:无需用户凭据即可访问数据缺点:每次env更新后都需要手动权限配置
另一种方法是在account2中创建一个拥有获取s3对象权限的用户,并将凭据放在account1一侧。
优点:每次env更新后不需要手动配置权限缺点:暴露IAM用户的凭据
是否有更好的选项来消除手动权限配置和显式IAM用户凭据共享?
您可以在帐户2中的Amazon S3存储桶上添加存储桶策略,该策略允许由帐户1中的Amazon EC2实例使用的IAM角色访问。
这样,EC2实例就可以访问bucket,就像它在同一个Account中一样,而不必承担任何角色或用户。
只需将Principal
设置为EC2实例使用的IAM角色的ARN。