全部产品

场景介绍

更新时间:2018-10-23 16:43:33

在函数计算的一些使用场景中,有时需要在函数中访问第三方服务以获取数据或触发其他工作流。第三方服务往往会通过白名单等机制进行访问控制,这也就需要我们事先将执行函数的机器 IP 加入到白名单中。

而函数计算在执行的过程中,会动态为函数分配执行机器,是无法预先获知机器外网 IP 的,也就无法事先添加白名单而造成无法通过第三方服务的访问控制。这个问题可以通过搭建代理的方式来解决,本文对此方案的步骤进行详细介绍。

具体场景及解法思路

假设用户服务 A ,使用函数计算实现,同时 A 在执行的过程中需要访问受保护的资源,该资源提供方为服务 B (如 MySQL 等),B 对来访者采用白名单方式鉴权。由于函数运行实例的不确定性及不可枚举性,无法在服务 B 事先添加白名单。

基本思想及方案是:搭建 Nginx 代理 A -> B 的访问,B 在白名单中添加代理服务器 IP,放入所有通过代理到达的请求并返回受保护资源。如考虑到代理服务器可被其他恶意访问者攻击或扫到,导致服务 B 中的数据被获取,可考虑在 proxy 或服务 B 中另行增加 Token 等校验方式。

Illustration

示例大纲

以下为的具体实现及相关示例:

  1. 具体实现示例
  2. 测试结果

说明:如果您的第三方受保护资源使用保存于 RDS 中,可以参阅 通过 VPC 访问 RDS 示例 通过专有网络访问云上数据库资源,专有网络将为您提供更安全的访问控制。