为现有S3存储桶强制SSL流量:如何避免业务出现中断?
你提供的是S3桶资源策略(非S3 ACL),本身是强制S3仅允许HTTPS访问的标准实现方案,策略逻辑没有问题。正确格式化后的策略如下:
{ "Version": "2012-10-17", "Id": "Enforce HTTPS", "Statement": [ { "Sid": "HTTPSOnly", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::mybucket", "arn:aws:s3:::mybucket/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } } } ] }
按以下步骤操作即可保证配置后Lambda、外部集成服务正常运行:
操作步骤
- 校验所有调用端的访问协议
AWS官方SDK(含Lambda运行环境默认集成的S3 SDK)默认走HTTPS协议发起请求,只要你没有手动将客户端的use_ssl配置项改为false,都默认符合策略要求。如果存在自定义脚本、第三方工具通过HTTP访问S3的场景,直接将访问地址的协议头改为HTTPS即可,不需要调整权限配置。 - 适配多桶批量部署
你当前的策略仅覆盖单个桶mybucket,多桶场景下可以直接在Resource字段批量添加所有目标桶的ARN,也可以用通配符"arn:aws:s3:::*"、"arn:aws:s3:::*/*"一次性覆盖所有同账号下的S3存储桶。 - 灰度上线验证
先选择1个非核心业务的存储桶配置该策略,观察关联的Lambda、安全监控系统的读写日志1~2小时,确认无报错、业务正常后再逐步推广到所有生产存储桶。 - 配置异常兜底监控
开启S3存储桶访问日志,或者在CloudTrail中配置筛选规则,监控所有被该策略拒绝的、aws:SecureTransport为false的请求,上线后如果出现异常可以快速定位调用源调整。
内容的提问来源于stack exchange,提问作者Dimi
相关产品推荐
相关产品推荐

