如何将移动应用生成的API请求流量加入EC2 API服务器白名单
解决方案
你当前的固定IP白名单策略仅适用于IP固定的服务端调用场景,移动应用的客户端IP是动态变化的,无法提前录入安全组白名单,可参考以下几种解决方案:
方案1:前置API网关 + 应用层鉴权(最推荐)
- 在AWS生态内为EC2 API服务前置一层API Gateway,所有移动应用的API请求先发送到API网关,再由网关转发到后端EC2
- 安全组配置:仅允许API网关的IP段访问EC2的API服务端口,无需向公网直接开放EC2的API端口
- Unity端适配:在请求头中加入API网关要求的鉴权凭证,如
API Key、JWT令牌,只有合法请求才能通过网关转发到后端 - 额外收益:可直接复用API网关自带的限流、熔断、请求日志统计能力,无需自行在EC2侧开发
方案2:请求签名鉴权 + 安全组开放公网访问(轻量低成本)
- 安全组配置:将EC2 API服务端口的入站规则源地址设为
0.0.0.0/0,把访问控制逻辑上移到应用层实现 - 为合法移动客户端分配唯一的
access_key和secret_key,Unity发起API请求时,用secret_key对请求参数、当前时间戳做哈希生成签名,将access_key、时间戳、签名一同放入请求头传输 - API服务侧收到请求后按以下逻辑校验,校验通过才处理业务逻辑:
- 校验请求时间戳与服务器时间差不超过5分钟,避免重放攻击
- 根据请求携带的
access_key查询对应的secret_key,用相同规则生成签名,与请求携带的签名做对比,二者一致则判定为合法请求
- 该方案无需额外引入AWS云服务,适合小流量个人项目使用
方案3:客户端VPN接入(仅适合内部封闭场景)
- 如果你的移动应用仅面向内部员工使用、不公开发布,可给EC2所在的VPC配置客户端VPN端点
- 移动用户需先连接VPN接入AWS VPC后才能访问API服务,安全组仅需开放VPN地址段的访问权限,无需对公网暴露API端口
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

