如何限制仅通过接口型S3终端节点或VPC关联网络访问Amazon S3
基于VPC/VPC终端节点的S3访问控制方案
替换原策略中的aws:SourceIp条件,改用VPC相关的IAM条件键,就能实现仅允许指定VPC(含VPN/Direct Connect接入的流量)或S3接口终端节点访问S3,即便密钥被盗,攻击者也无法从公网发起有效请求。
修改后的IAM策略
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3.*", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:SourceVpc": "vpc-xxxxxxxxx", // 替换为你的目标VPC ID "aws:SourceVpce": "vpce-xxxxxxxxx" // 替换为你的S3接口型终端节点ID } } } }
关键条件说明
aws:SourceVpc:指定允许访问的VPC ID,所有通过VPN/Direct Connect接入该VPC的流量,以及VPC内部发起的请求,都会被AWS识别为来自这个VPC,从而匹配条件。aws:SourceVpce:指定允许使用的S3接口终端节点ID,确保只有通过该终端节点的请求能通过权限验证。- 若需要排除AWS内部服务(如CloudTrail)的访问干扰,可在Condition中添加
"Bool": {"aws:ViaAWSService": "false"},避免这类合法请求被拦截。
优化建议
- 避免使用通配符
"s3.*",根据实际需求细化允许的S3操作(比如s3:GetObject、s3:ListBucket),遵循最小权限原则。 - 定期轮换IAM用户的访问密钥,同时启用CloudTrail记录所有S3访问日志,便于及时发现异常行为。
内容的提问来源于stack exchange,提问作者s_earlgrey
相关产品推荐
相关产品推荐

