私有暂存S3存储桶策略:如何仅允许自身AWS控制台用户私有访问staging.example.org
让暂存站点
staging.example.org私有访问(仅你作为AWS控制台登录用户可访问) 当然可以实现!要让你的暂存站点仅对已登录AWS控制台的你私有访问,这里有几种针对性的方案,根据你的部署架构选择最适合的:
方案一:AWS WAF + IAM身份验证(推荐)
这是最直接的基于IAM身份的访问控制方案,适合部署在CloudFront、ALB或API Gateway后的站点:
创建WAF Web ACL并添加IAM访问规则
- 进入AWS WAF控制台,创建一个新的Web ACL,关联到你的站点资源(CloudFront分发/ALB等)。
- 添加规则:选择
AWSManagedRulesIAMAccessControlRuleSet托管规则集,这个规则集会自动验证请求中的AWS SigV4签名是否有效。 - 细化规则:在托管规则集的基础上,添加一条自定义规则,仅允许你的IAM用户ARN对应的请求通过。例如,检查请求签名中的用户ARN是否匹配你的用户ARN(格式类似
arn:aws:iam::123456789012:user/your-username)。
配置请求签名(访问站点时)
因为WAF需要验证AWS SigV4签名,你访问站点时需要带上签名的请求头。可以用以下方式:- 使用AWS CLI的
curl结合签名工具:比如用aws sigv4 sign命令生成签名后的请求,然后用curl访问:aws sigv4 sign --service wafv2 --region us-east-1 --request-url https://staging.example.org | curl -K- - 用浏览器插件(比如AWS SigV4 Signer)自动为请求添加签名头,这样你在浏览器里直接访问站点时,插件会自动用你当前登录AWS控制台的身份生成签名。
- 使用AWS CLI的
方案二:CloudFront Signed Cookies + IAM(仅适用于CloudFront部署的站点)
如果你的站点用CloudFront分发,可以用Signed Cookies结合IAM来限制访问:
- 配置CloudFront的信任签名者
在CloudFront控制台,把你的IAM用户设置为信任的签名者,允许该用户生成Signed Cookies。 - 生成Signed Cookies
用你的IAM用户身份生成针对staging.example.org的Signed Cookies,然后在你的浏览器中导入这些Cookie。之后只有带有有效Cookie的请求才能通过CloudFront访问站点,而只有你能生成这些Cookie(因为是用你的IAM身份)。
方案三:VPC内部署 + AWS VPN/Direct Connect
如果你的站点部署在AWS VPC的私有子网里,可以通过以下方式让只有你能访问:
- 配置AWS VPN连接,将你的本地设备连接到VPC的VPN网关。
- 确保站点的安全组和NACL仅允许VPC内部或VPN连接的IP访问。
- 作为AWS控制台用户,你可以管理VPN连接的权限,仅给自己授予连接VPN的权限,这样只有你能通过VPN接入VPC访问站点。
注意事项
- 无论用哪种方案,都要确保你的IAM用户权限最小化:只授予访问该暂存站点所需的权限,不要给不必要的权限。
- 测试时,用其他IAM用户或匿名请求访问站点,确认无法访问,确保权限配置正确。
内容的提问来源于stack exchange,提问作者Sammy
相关产品推荐
相关产品推荐

