文档中心 CDN Pro 集成API安全与管理

集成API安全与管理

更新时间:2022-06-20 09:25:59

集成API安全与管理

在CDN Pro上集成API应用

《REST API加速》这篇文章中,我们已经为您介绍了如何在CDN Pro上加速一个API,并在CDN Pro边缘对一个API进行调用鉴权。在提升API请求性能的同时,我们也需要考虑API的安全与管理问题。在这里,您可以选择成我们的API安全与管理服务,以清点您的API资产并保护您的API安全。同样的,您也可以在CDN Pro上集成其他第三方API安全或者API网关以加速、管理并保护您的API资产。

  • API加速:您可以CDN Pro边缘逻辑(Edge Logic)中定义了一些API缓存规则对您的API进行短时缓存,同时还可以将一些鉴权规则写入网络边缘,以实现加速分发并卸载源站压力。
  • API安全:您可以在CDN Pro上创建API安全应用,对这些动态API资源请求进行风险识别,以保护后端API服务器的安全。

本文将为您介绍如何在CDN Pro上集成API安全应用。

集成示例:CDN Pro+网宿API安全与管理

假设您的API具备如下特性:

  • API 服务域名是:api.8686c.com, 从API服务器获取资源,需要在请求Host头中携带该域名,以访问指定的API内容。
  • API 源站服务器的回源域名是apisec-origin.8686c.com,该域名已配置解析到API服务器 IP 地址: 1.1.1.11.1.1.2
  • API 服务使用了标准的 HTTP 请求方法:GET、POST、PUT、DELETE、PATCH
  • 访问 API 服务的所有输入参数都通过请求查询参数(query string)指定,我们需要对部分查询参数做检测及限制。

使用 CDN Pro 保护此 API 服务:

  • 业务流量会先经过CDN Pro边缘的ES服务器进行API鉴权与短时缓存(如下图“API Edge Logic”),然后由CDN Pro将API动态请求引入到API安全与管理应用进行安全检测与拦截(如下图“API Application”),确保非法API请求不会轻易访问您的后端API Server。

  • 《REST API加速》这篇文章中我们已经为您介绍了如在在CDN Pro上配置加速与鉴权。接下去我们将以网宿API安全与管理为例,为您介绍如何在CDN Pro上配置API应用。

网宿互联网安全报告之主机安全篇:打工人,你的电脑也正在偷偷为别人打工…

步骤1:创建并配置API应用

  • 进入API控制台。在CDN Pro控制台上点击左侧菜单【API安全与管理】,进入网宿API控制台。

网宿互联网安全报告之主机安全篇:打工人,你的电脑也正在偷偷为别人打工…

  • 为域名创建API应用。进入API控制台【域名管理】菜单页,点击“新增域名”按钮,为需要开启API安全防护的域名创建API应用。这里我们创建了API应用 apisec.8686c.com ,并配置其回源地址指向API Server的回源地址地址:apisec-origin.8686c.com,此时,系统生成这个应用的API CNAME:apisec.8686c.com.wscdns.com 。稍后我们会将经过CDN Pro的流量指向这个API CNAME地址。

网宿互联网安全报告之主机安全篇:打工人,你的电脑也正在偷偷为别人打工…

  • 配置回源HOST。在域名管理页面下,勾选刚刚创建的API应用,点击“配置修改”进入在配置修改页面下,我们在【回源配置】页签下进行【回源协议改写】和【回源替换】配置。此处,我们配置了API回源HOST为 apisec.8686c.com,并指定了回源的端口为8443。同时,我们认为HTTP传输是不安全的,因此配置了回源请求的协议统一走HTTPS。

网宿互联网安全报告之主机安全篇:打工人,你的电脑也正在偷偷为别人打工…

步骤2:为API域名配置证书

  • 为API配置证书。进入【证书管理】控制台,上传授权域名包含 apisec.8686c.com 的SSL证书,并进行证书关联域名操作,以开启HTTPS。若您没有证书,可通过“申请一键证书”来申请免费的DV SSL证书。

网宿互联网安全报告之主机安全篇:打工人,你的电脑也正在偷偷为别人打工…

步骤3:定义并配置API

  • 新增API。点击API控制台【API定义】菜单,点击“新增API”按钮,添加需要开启API安全防护的API列表。

网宿互联网安全报告之主机安全篇:打工人,你的电脑也正在偷偷为别人打工…

  • 配置API基础信息:我们在API定义的【基础信息】配置页面下对这个API的基础信息进行配置。其中:①API名称:这里我们添加了APITestCDNProAPI;②所属域名:这个API的所属域名是我们在步骤1中添加的apisec.8686c.com;③请求方法:配置了这个API支持的标准HTTP请求方法包括 GET;POST;PUT;DELETE;PATCH;④前端路径:API的URI路径为 /apipath/{para1},{papa2} ,其中, {para1},{papa2}是这个API需要匹配的路径参数。API默认仅包含scheme+域名+URI部分,默认不包含路径参数,这里我们通过{}来对这个API新增包含路径参数,即:包含scheme+域名+URI部分+配置的查询参数;⑤API URL:系统根据配置的域名和路径参数自动组合生成访问这个API的完整URL。

网宿互联网安全报告之主机安全篇:打工人,你的电脑也正在偷偷为别人打工…

  • 配置API安全检测信息:我们在API定义的【请求body和参数检测】页面下对这个API的请求body和参数信息配置检测规则。这里面,我们对这个API的 POST 方法配置了对 para1para2这两个参数进行限制及检测。在此处您也可以对API请求的body做限制。

网宿互联网安全报告之主机安全篇:打工人,你的电脑也正在偷偷为别人打工…

步骤4:创建加速项目并为其开启API应用

  • 为域名创建加速项目。在CDN Pro控制台【边缘配置】【加速项目】页面下,点击“新建加速项目”,为域名 apisec.8686c.com 创建一个加速项目。

网宿互联网安全报告之主机安全篇:打工人,你的电脑也正在偷偷为别人打工…

  • 配置源站信息。此处我们添加了2个源站:
  • 1)API安全与管理应用 APIAPP:将API应用作为CDN Pro的源站应用,并将API CNAME作为回源地址,以API动态请求在发到源站之前会经过API应用做检测中。其中:①服务器:源站服务器配置的是我们刚刚新创建的API CNAME apisec.8686c.com.wscdns.com。CDN Pro回源访问API CNAME,API应用安全检测完成后,合法流量才会导入回源地址 apisec-origin.8686c.com 以从 1.1.1.11.1.1.2 服务器上获取API资源;②Host请求头:我们配置了HOST请求头为 apisec.8686c.com。在此场景下我们其实也可以不配置这个host,因为我们在步骤1中已经在API应用上添加了这个配置,API应用回源的时候就会携带这个头部。
  • 2)API源站服务器 APIServer:将API源站服务器直接作为CDN Pro的回源地址。其中:①服务器:API的源站服务器的回源域名 apisec-origin.8686c.com直接,CDN Pro回源请求将直接从1.1.1.11.1.1.2 服务器上获取API资源;②Host请求头:我们配置了HOST请求头为 apisec.8686c.com

网宿互联网安全报告之主机安全篇:打工人,你的电脑也正在偷偷为别人打工…
网宿互联网安全报告之主机安全篇:打工人,你的电脑也正在偷偷为别人打工…

  • 在边缘逻辑中配置引入API应用。我们通过 origin_pass 指令来配置CDN Pro在回源阶段引入API应用 APIAPP 。在这个配置示例中,我们定义CDN Pro默认把回源请求直接导入API源站 APIServer;但是如果是 /apipath/ 这个路径的请求会先转发到 APIAPP进行安全监测后才会回API源站。其中,对于 /apipath/ 这个 location 下的API们把还做了这些处理:①API 用户名和客户端 IP 被添加到了缓存键中,以确保同一IP同一用户仅会在CDN Pro上命中唯一的缓存内容;②强制请求走HTTPS,同时仅缓存1分钟的短暂缓存时间,这对于大多数应用程序来说已足够安全;③默认情况下,仅对 GET 请求方法的响应进行缓存。您也可以使用 proxy_cache_methods 指令来对其他请求方法的响应进行缓存。④我们允许客户端使用 ‘Cache-Control: no-cache’ 标头字段来绕过缓存。当 CDN Pro 服务器接受到的请求携带了这个字段值时,不会在节点服务器上进行缓存查询,而是直接将请求直接转发给API应用服务器,API应用检测合法才会从API服务器获取内容;⑤最后,我们通过指令 origin_fast_route 开启了快速路由功能,以确保以最稳定的链路高效回源。
location / { #This is the default location.
proxy_cache_valid 1440m; #200, 301, and 302 responses will be cached for 1440m
set $cache_misc $cache_misc$sorted_querystring_args; #Add sorted query string to the cache key
proxy_ignore_headers Expires Cache-Control Set-Cookie; #Ignore caching headers from the origin
origin_pass APIServer;
}
location apipath/ { #This is the default location.
# reject http
if ($request_scheme = http) {
return 400 "please use https!";
}
origin_pass APIAPP; #the request URI and query string will be passed to the origin
# add API user name and client IP into cache key
set $cache_misc $cache_misc.$remote_user.$client_real_ip;
# add sorted query string into cache key
set $cache_misc $cache_misc.$sorted_querystring_args;
# the client can use Cache-Control: no-cache to by pass cache
if ($http_cache_control ~ (no-cache|no-store)) {
set $bypass_cache 1; #do not use cached copy
}
proxy_cache_bypass $bypass_cache;
proxy_cache_valid 1m; #200, 301, and 302 responses will be cached for 1m
origin_fast_route on; #enable the Fast Route to origin
}

网宿互联网安全报告之主机安全篇:打工人,你的电脑也正在偷偷为别人打工…

步骤5:为加速项目配置证书

  • 为加速项目配置TLS证书。您可以根据您的安全要求配置 TLS 最低协议版本、TLS 最高协议版本以及TLS加密套件:

网宿互联网安全报告之主机安全篇:打工人,你的电脑也正在偷偷为别人打工…

步骤6:测试部署并引流生效

  • 在演练环境中测试加速项目后,可以部署到生产环境。
  • 如果您还没有边缘调度域名,您可以根据您的流量管理需求创建一个CDN Pro边缘调度域名,然后针对 apisec.8686c.com 添加一条CNAME 的 DNS 记录指向CDN Pro边缘调度域名。

现在,所有访问apisec.8686c.com域名的请求都将被路由到 CDN Pro 平台。CDN Pro收到请求后,若是访问指定的API目录资源,则会先执行边缘逻辑下的代码:API短时缓存命中或者鉴权失败直接响应给客户端;未命中或者鉴权通过的请求会被路由到API安全与管理应用。API安全与管理应用对接收到的API动态请求进行安全检测,检测合法才会被转发给后端的API源站服务器,确保非法的API请求不会访问到源站。

集成其他第三方API应用

除了在CDN Pro上集成网宿API安全与管理之外,您也可以采用同样的方式集成第三方API安全或者API网关。

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!