目录
1. S3存储桶概述
将S3存储桶的访问权限授予属于不同aws帐户的委托人,在很多组织的AWS架构中非常常见。
我们知道,创建的S3存储桶默认情况下是私有的,任何存储桶拥有者之外的账户都不能访问存储桶。在这种情况下,假设我们有两个aws账户bas和bas-developer,就需要使用存储桶策略来达成跨账户进行S3存储桶访问,也就是说bas创建存储桶策略,允许bas-developer访问存储桶。
2. 案例实践
2.1 资源准备
1) 假设现在账户bas创建好了bas-demo-bucket,进入到S3控制台。
2.2 配置S3存储桶策略
去到S3权限编辑,加上以下的存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "cross",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::004398020230:root"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bas-demo-bucket",
"arn:aws:s3:::bas-demo-bucket/*"
]
}
]
}
其中,Effect 是允许,Principal资源委托人,要配置为bas-developer也就是EC2所在账户的arn,可以在这复制过来:
到这已经可以通过bas-developer的cli访问bas的存储桶了。
2.3 配置AWS cli
1) 进入到IAM的安全凭证:
2) 然后创建新的访问密钥:
2.4 测试
1) 通过aws configure命令配置cli的access key和key id:
2) 通过bas-developer的profile访问bas的S3。
3) 下载测试。
附:
1. 关于AWS cli安装和环境配置可以参考:AWS CLI 安装配置。
2. 如果通过bas-developer拷贝本地文件到bas的桶,那么bas也下载不了这个文件。切换到bas控制台页面然后进入存储桶后找到这个文件,在右侧面板属性可以看到很多属性是拒绝访问的。图中可以看到只有bas-developer才有完全访问权限。
3. 关于S3跨账户访问配置可以参考:如何提供对 Amazon S3 存储桶中的对象的跨账户访问权限。