云计算学习笔记
  • 前言
  • AWS入门
    • 如何创建一个AWS账号
    • 创建管理员用户
    • 如何在AWS上创建一个服务器
  • 账户
    • IAM
      • CLI(AWS 命令行接口)
      • 策略
        • 通过资源策略授权跨账户访问S3
        • 使⽤标签限制⽤⼾只能操作⾃⼰的AWS资源
        • 策略示例
  • 计算
    • EKS
      • 使用控制台创建EKS
      • 使用eksctl创建EKS
      • 为其他用户授权使用已经创建的EKS
    • EC2
      • 创建EC2
      • AMI
  • 存储
    • EBS(卷)
  • 粤ICP备20030352号
由 GitBook 提供支持
在本页
  • 背景
  • 思路
  • 示例
  • 总结
  • 参考

这有帮助吗?

  1. 账户
  2. IAM
  3. 策略

通过资源策略授权跨账户访问S3

上一页策略下一页使⽤标签限制⽤⼾只能操作⾃⼰的AWS资源

最后更新于4年前

这有帮助吗?

背景

有的时候,我们的服务资源分布在不同的AWS账号下,比如A公司的EMR 需要使用B公司的AWS S3资源。或者一个公司下有多个AWS账号,不同账号下的服务需要进行访问。如何进行跨账号授权访问资源,AWS 提供了两种方式,1:使用资源策略,2:使用 IAM 角色。本文将介绍使用资源策略授权方式,将B 账号下的S3 授予A 账号下的EMR 访问

思路

  1. 在B账号下的S3 中,配置存储桶策略,授权A 账号可以完全访问权限

  2. 在A 账号中,创建一个访问B账号 S3 的策略

  3. 在现在EMR 角色中,附加上面创建的策略

示例

1:在B账号的S3 存储桶上(假设存储桶名为:bucketname),配置存储桶策略,授权对A账号(假设AccountID:111111111)的访问权限

2:在A 账号中创建一个策略,允许访问B账号下的S3资源

3:将策略附加给EMR_EC2_DefaultRole

以上即完成了将B 账号下的S3 授予A 账号下的EMR 访问

总结

  1. 使用资源策略授权一定是在被访问的资源上配置资源策略

  2. 资源策略有了以后,访问者使用这个资源和平时使用本账号下资源类似,该怎么创建策略,角色都是一样的

注意点

  1. 示例中是将策略附加给EMR_EC2_DefaultRole,这是因为我的EMR 使用的是默认的角色名,如果你在创建EMR 时使用了别的角色名,只是将策略附加到对应的角色上即可。之后在EMR 节点上就可以直接操作 B账号下的S3 ,比如使用aws s3 ls s3://bucketname 就可以验证是否配置正确。正常情况下是可以列出目录下文件,整个的原理就是策略定义了可以访问B账号的 S3,策略被附加到了角色,角色被附加在节点,也就使节点有了访问B账号对应S3的权限

  2. 如果S3资源所有区与EMR 所在区不在同一个region,那么可能会提示需要在先配置region,而我们的hive 程序在执行的时候,不会这么聪明的识别到,可能会报错,报错信息为:An error occurred (IllegalLocationConstraintException) when calling the ListObjectV2 operation: The unspecified location constraint is incompatible for the region specific endpoint the request was sent to. 可以使用s3a://bucketname 这样来访问,以绕过不同region的访问受限问题

参考

委派访问权限的策略示例