🚀 AWS S3 跨账号安全数据共享指南
想要在不同 AWS 账号间安全地共享 S3 数据?别担心,通过 S3 存储桶策略(Bucket Policy)和 IAM 权限的配合,可以实现精细化的访问控制!🔒
一、核心架构逻辑 🏗️
要实现跨账号访问,本质上是源账号(资源方)授权给目标账号(访问方)。请遵循以下三个关键步骤:
二、配置步骤详解 🛠️
步骤 1:在源账号(存储桶所在账号)配置存储桶策略
你需要修改存储桶的 Policy,允许特定账号的 IAM 角色或用户进行访问。请将以下 JSON 模板中的 Account ID 替换为对方账号:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCrossAccountAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::目标账号ID:root"
},
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::你的存储桶名称",
"arn:aws:s3:::你的存储桶名称/*"
]
}
]
}
步骤 2:在目标账号(访问方)配置 IAM 权限 🔑
仅仅有存储桶策略是不够的!你必须确保目标账号的 IAM 用户或角色拥有足够的权限来“接收”这份授权。在目标账号中创建一个策略并附加到相应的身份上:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::你的存储桶名称",
"arn:aws:s3:::你的存储桶名称/*"
]
}
]
}
三、安全最佳实践(避坑指南)⚠️
- 最小权限原则: 尽量不要使用
"Principal": "*",请明确指定具体的账号 ID 或 IAM 角色 ARN。 ✅
- 使用加密: 如果存储桶启用了 KMS 加密,记得在 KMS 密钥策略中也添加允许跨账号访问的权限,否则会出现 403 Access Denied 错误! 🔐
- 条件限制: 可以添加
"Condition" 字段,通过 aws:SourceIp 限制仅允许特定 IP 段访问,安全加倍。 🛡️
- 公共访问设置: 确保源账号没有开启“阻止全部公共访问”设置,除非你明确知道自己在做什么。 🚫
配置完成后,记得使用 aws s3 ls s3://你的存储桶名称 --profile 目标账号配置 命令进行快速验证哦!祝你的跨账号数据流转顺畅!✨