当函数计算遇上白名单

本文涉及的产品
简介: 函数计算访问第三方服务时如何带上指定的外网地址。

实际上这个世界上没有好人和坏人,只有做了好事的人,和做了坏事的人。
——柴静《看见》

阿里云函数计算(Function Compute)是一个事件驱动的全托管 Serverless 计算服务。使用函数计算只需编写代码并上传,而无需管理服务器等基础设施,函数计算会准备好计算资源,并以弹性、可靠的方式运行代码。

不久前在一个项目上使用了函数计算,需要在函数计算中调用第三方服务,第三方服务有可能会对函数计算的地址进行白名单验证,但函数是通过弹性扩容的方式动态为函数分配计算资源的,因此无法提前预知访问第三方接口服务的IP地址,而且目前函数计算也没有像阿里云WEB应用防火墙一样提供回源地址清单,第三方接口需要的白名单IP要使用一些特殊手段来取得。

在阿里云函数计算的文档中的“场景案例”中有一个章节就是针对这种情况的,使用的是Nginx正向代理来代理函数计算的访问请求,这种通过Nginx的代理后,第三方服务看到的将是Nginx服务器的公网IP地址,这样就可以解决白名单的问题。

其中Nginx的配置如下:

server{

resolver x.x.x.x;
listen 8080;
location / {
    proxy_pass http://$http_host$request_uri;
}

}

其中resolver x.x.x.x;是DNS服务器的地址。
这样虽然能解决白名单的问题,但这个代理你能使用,别人也能用,这肯定不是你要看到的情况。解决的方案是对请求的目标主机名进行验证,只对目标第三方服务的请求进行代理,其余的请求一律拒绝。

Nginx服务器的配置如下:

server {
resolver x.x.x.x;
listen 8080;
location /{

if ( $http_host = ‘y.y.y.y’ ) {
  proxy_pass http://$http_host$request_uri;
  break;
}
return 403;

}
}

用一个或者多个条件判断对请求的http主机名进行验证,假如请求的是第三方服务则代理发送,否则请求将被拒绝。

解决了Nginx的盗用的问题,还有一个问题要解决,就是Nginx服务的可用性问题,这个问题可以通过负载均衡SLB和来解决,架构如下:

1.jpg

第三方服务的防火墙需要加两条地址,分别是两台Nginx服务器的公网IP。
2.jpg

上图中xx.xx.125.101和xx.xx.119.208是两台ECS的外网地址,可以将这两个地址提供给第三方加白名单,xx.xx.227.184是函数计算的地址,这个地址无法保证固定,不能用做白名单。

这里需要至少加两个IP,那么假如只能加一条地址怎么办?
这就需要对架构进行一些调整了,架构如下:

3.jpg

需要给函数计算增加VPC内网访问接口,访问在内网的SLB负载均衡和Nginx代理,Nginx代理服务器不配置公网IP而是通过NAT网关访问第三方接口。

为函数计算增加VPC访问接口需要进行访问授权,配置的方式是在函数计算的控制台打开服务配置。
4.jpg

点击修改,后可以看到网络配置,选择函数计算要对接的VPC和虚拟交换机。

5.jpg

在权限配置部分选择新建角色,并指定系统模版授权,选择
AliyunECSNetworkInterfaceManagementAccess ,并点击授权。

使用函数计算访问代理服务后,从阿里云弹性网卡控制台可以看到新增的ENI弹性网卡。

6.jpg

该弹性网卡地址虽然也是动态分配的,但地址范围仅限于指定的虚拟交换机内。

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
Serverless 应用服务中间件 网络安全
三分钟解决函数计算访问小程序 IP 白名单问题
背景 当你使用函数计算服务访问第三方服务的时候,第三方服务出于安全考虑,要求你设置一个白名单,比如:微信小程序等。但是函数计算服务的 IP 是动态且不可枚举的。为了能够让函数计算服务支持设置白名单,目前有两种常用的方式:ECS + EIP + Nginx 搭建代理和 NAT + EIP,第一个访问操作起来可能比较麻烦,需要准备一台 ECS,第二种方式操作简单,费用可能会高些。
9517 0
三分钟解决函数计算访问小程序 IP 白名单问题
|
2月前
|
人工智能 数据管理 Serverless
阿里云数据库走向Serverless与AI驱动的一站式数据平台具有重大意义和潜力
阿里云数据库走向Serverless与AI驱动的一站式数据平台具有重大意义和潜力
404 2
|
2月前
|
人工智能 运维 Cloud Native
、你如何看待阿里云数据库走向Serverless与AI驱动的一站式数据平台?
、你如何看待阿里云数据库走向Serverless与AI驱动的一站式数据平台?
149 2
|
3月前
|
JSON 安全 Serverless
在使用阿里云函数计算(FC)服务时,您可以通过自定义域名来访问部署好的云函数
在使用阿里云函数计算(FC)服务时,您可以通过自定义域名来访问部署好的云函数【1月更文挑战第23天】【1月更文挑战第112篇】
222 7
|
2月前
|
人工智能 数据管理 大数据
阿里云数据库走向Serverless与AI驱动的一站式数据平台是一个很有前景和意义的发展方向
阿里云数据库走向Serverless与AI驱动的一站式数据平台是一个很有前景和意义的发展方向
33 2
|
7天前
|
监控 Serverless API
阿里云函数计算的工作原理与事件驱动模型密切相关
【4月更文挑战第17天】阿里云函数计算的工作原理与事件驱动模型密切相关
61 4
|
7天前
|
消息中间件 运维 Serverless
阿里云函数计算是一种FaaS(Function as a Service)云服务
【4月更文挑战第17天】阿里云函数计算是一种FaaS(Function as a Service)云服务
48 3
|
8天前
|
自然语言处理 Cloud Native Serverless
通义灵码牵手阿里云函数计算 FC ,打造智能编码新体验
近日,通义灵码正式进驻函数计算 FC WebIDE,让使用函数计算产品的开发者在其熟悉的云端集成开发环境中,无需再次登录即可使用通义灵码的智能编程能力,实现开发效率与代码质量的双重提升。
95394 2
|
8天前
|
人工智能 Serverless 数据处理
利用阿里云函数计算实现 Serverless 架构的应用
阿里云函数计算是事件驱动的Serverless服务,免服务器管理,自动扩展资源。它降低了基础设施成本,提高了开发效率,支持Web应用、数据处理、AI和定时任务等多种场景。通过实例展示了如何用Python实现图片压缩应用,通过OSS触发函数自动执行。阿里云函数计算在云计算时代助力企业实现快速迭代和高效运营。
44 0
|
12天前
|
存储 安全 Serverless
用 Github Actions 自动部署阿里云函数计算 FC
介绍了如何配置阿里云函数计算(FC)与GitHub Actions集成以实现自动部署。首先在阿里云创建函数,然后在项目根目录创建`s.yaml`文件配置Serverless Devs。接着在GitHub仓库中设置 Secrets 存储阿里云账号信息,并创建名为`aliyun-fc-deploy.yaml`的工作流文件来定义GitHub Actions。当代码推送到`master`分支时,Actions会自动部署到函数计算。最后,成功配置后,提交代码会触发自动部署,并可在GitHub Actions和阿里云控制台查看部署状态。
400 3