AWS下通过API Gateway对接Cognito实现Django鉴权及EC2公网访问限制咨询
解决方案
快速修复方案(无需调整业务架构,可立即落地)
- 安全组层面拦截:修改EC2实例关联的安全组入站规则,删除原来对
0.0.0.0/0开放的80/443端口规则,仅允许API Gateway的服务IP段访问对应端口。如果需要更高的可靠性,可以开启API Gateway的VPC私有集成,将EC2放到私有子网中,完全取消EC2的公网IP,从根源上杜绝公网直接访问的可能。 - 应用层面兜底校验:在Django中新增全局中间件,校验请求是否携带API Gateway专属的
x-amz-apigw-id请求头,未携带该头的请求直接返回403拒绝访问。该方案适合暂时无法调整网络配置的场景,仅需添加少量代码即可生效。
长期优化架构方案(提升安全性+降低运维成本)
- 拆分静态资源:将Vue.js构建出的静态资源从Django服务中剥离,直接上传到S3存储桶,搭配CloudFront CDN分发,既可以提升前端访问速度,也能降低EC2的负载。
- 服务托管改造:将Django REST API部署到ECS容器服务或者Lambda无服务平台,不需要长期维护EC2实例,支持自动扩缩容,同时天然避免了公网直接暴露后端服务的风险。
- 新增安全防护:在API Gateway层接入AWS WAF,配置规则拦截SQL注入、爬虫、恶意扫描等常见网络攻击,进一步提升服务整体安全性。
注意:如果选择VPC私有集成方案,EC2不需要分配公网IP,也不需要配置公网路由,所有入站流量只能通过API Gateway进入VPC访问后端服务,是当前场景下安全性最高的方案
内容的提问来源于stack exchange,提问作者Abhishek Mukherjee
相关产品推荐
相关产品推荐

