跨账号仅通过VPN访问S3静态网站的配置问题排查
AWS Client VPN跨账号访问S3存储桶静态网站排查指南
现有配置概述
存储桶策略
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": "account-prod", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::bucket/*", "Condition": { "StringEquals": { "aws:SourceVpc": "vpc-1" } } }, { "Sid": "", "Effect": "Allow", "Principal": "account-network", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::bucket/*", "Condition": { "StringEquals": { "aws:SourceVpc": "vpc-2" } } } ] }
环境配置
- 采用Transit Gateway(TGW) + network账号下的AWS Client VPN
- 已配置S3 VPC接口端点,尝试过
aws:SourceVpc/aws:SourceVpce条件 - 已在VPN端点、安全组、认证规则中放行S3端点IP,TGW配置了S3前缀列表路由
- 存储桶为私有ACL+对象所有者权限+存储桶策略,已尝试添加规范账号ID授权
核心排查点
1. 主体(Principal)配置正确性
- 确认
account-network是12位数字的规范账号ID,而非账号别名或根用户ARN。S3存储桶策略仅识别规范ID或IAM实体ARN,账号别名无法匹配。 - 若授权network账号下的特定IAM角色/用户,直接指定对应ARN(如
arn:aws:iam::123456789012:role/vpn-access-role),避免泛账号授权导致的匹配失效。
2. 源条件(Condition)逻辑错误
aws:SourceVpc不支持跨账号:该条件仅对prod账号内的VPC生效,network账号的VPC-2无法被S3识别,直接排除此配置。aws:SourceVpce需用完整ARN:使用network账号中S3接口端点的完整ARN(如arn:aws:ec2:us-east-1:123456789012:vpc-endpoint/vpce-xxxxxx),而非仅VPCE ID。同时确保VPCE安全组允许Client VPN流量访问HTTPS(443)端口。
3. Transit Gateway路由与关联验证
- 确认TGW路由表中,S3前缀列表的路由条目指向network账号的S3接口端点,而非prod账号的端点。
- 检查Client VPN路由表,确认S3域名/前缀已指向TGW,确保流量走TGW到S3接口端点。
- 验证跨账号TGW资源共享:prod账号需授权network账号的TGW访问存储桶所在VPC资源,或TGW已正确关联prod账号的目标VPC(若适用)。
4. S3接口端点策略限制
- 检查network账号中S3接口端点的端点策略,需手动添加跨账号授权,允许访问prod账号的目标存储桶(
arn:aws:s3:::bucket/*)及s3:GetObject动作。默认端点策略仅允许同账号S3访问。
5. 静态网站访问路径问题
- 静态网站端点域名(如
bucket.s3-website-us-east-1.amazonaws.com)不支持VPC接口端点,流量会走公网,导致源条件不匹配。 - 改用S3 REST API域名(如
bucket.s3.us-east-1.amazonaws.com)访问静态内容,或配置CloudFront通过VPCE对接S3,再让VPN用户访问CloudFront端点。
6. 权限叠加与冲突检查
- 开启存储桶对象所有权控制的"ACLs disabled"或"Bucket owner preferred",确保桶所有者拥有对象权限,避免对象ACL覆盖存储桶策略授权。
- 检查network账号中VPN用户的IAM权限,需同时授予
s3:GetObject访问prod存储桶的权限(跨账号访问需要两端权限:存储桶策略允许+IAM用户/角色有权限)。
7. 流量与日志验证
- 从VPN客户端用
curl --debug或AWS CLI带--debug参数测试访问,查看请求的源IP/VPCE信息,确认流量是否经过预期路径。 - 在prod账号启用S3访问日志,查看被拒绝请求的
source-vpc、source-vpce、principal-id字段,对比存储桶策略条件是否匹配。
内容的提问来源于stack exchange,提问作者MOps
相关产品推荐
相关产品推荐

