本文介绍云原生 API 网关如何结合 WAF 通过添加域名的方式与云原生 API 网关的资源(包括服务、路由)进行绑定,实现对经过云原生 API 的流量进行检测和拦截。
域名防护提供服务级、路由级别的防护,分别适用于不同粒度的防护,您可根据网关业务特性和 API 使用情况分别配置,在节约成本的同时保障 API 安全。对应的防护的区别为:
防护类型 | 防护说明 | 状态转换 |
服务级防护 | 访问该服务下所有路由的请求都将接入 WAF 默认规则的防护引擎,如您需要针对具体服务开启WAF防护,可使用该粒度防护。 | 默认关闭。 服务下全部路由开启:自动变为全部开启 服务下部分路由关闭:自动变为部分开启 |
路由级防护 | 仅访问该路由的请求都将接入 WAF 默认规则的防护引擎,如您只需要对具体路由开启WAF防护,可使用该粒度防护。 | 默认关闭。 服务防护开启:自动变为全部开启 |
说明:
前提条件
在开启 WAF 前,确保您的 tse-global-configuration 插件和 tse-cloud-waf 插件已升级到最新版本。
1. 登录 TSE云原生API网关控制台。
2. 在左侧导航栏单击云原生 API 网关 > 插件管理,在页面上方选择好网关实例。
3. 选择系统插件页签,查看插件是否已更新到最新版本,若未更新,单击操作列的安装最新版本即可。
操作步骤
步骤 1:配置 Web 应用防火墙
1. 登录 Web 应用防火墙控制台,在左侧导航栏中,选择资产中心 > 接入管理 > 域名接入。
2. 在域名接入页面,单击添加域名,填写相关配置参数,单击确定即可。
参数 | 说明 |
所属实例 | 负载均衡型。 |
域名 | 在域名输入框中添加需要防护的域名。 |
流量来源 | 选择云原生 API 网关。 |
代理情况 | 选择“是” ,WAF 将通过 XFF 字段获取客户真实 IP 地址作为源地址,勾选可能存在源 IP 被伪造的风险。 |
国内地域 | 选择需要防护的地域。 |
3. 单击确定,即可返回域名接入。在域名接入可以查看到防护域名和网关实例 ID、名称等信息。
步骤 2:添加防护域名
1. 登录 云原生 API 网关控制台,在左侧导航栏选择安全防护 > WAF 防护,在防护域名 Tab,单击添加域名,选择或填写 步骤 1 中已经接入 WAF 的域名,支持选择在证书管理中已添加证书对应的域名,也支持自行输入域名进行添加。
2. 单击确定,确认防护域名已添加完成。
注意:
您需要确保防护域名已完成 WAF 接入,否则将无法将对应域名的请求进行送审。
步骤 3:开启资源防护
云原生 API 网关支持服务级和路由级粒度的防护,
开启服务级防护
1. 进入防护服务 Tab,默认展示当前实例下所有服务。
2. 选择需要进行 WAF 接入的服务,单击开启防护,在开启 WAF 防护的弹窗中,单击确定,开启该服务的 WAF 防护。
说明:
服务级防护开启后,该服务以及服务下所有的路由都对应开启防护。
如将服务下部分路由防护关闭,服务防护状态和实例防护状态都将变为部分开启。
开启路由级防护
1. 进入防护路由 Tab,默认展示当前实例下所有路由。
2. 选择需要进行 WAF 接入的路由,单击开启防护,在开启 WAF 防护的弹窗中,单击确定,开启该路由的 WAF 防护。
关闭服务级防护
1. 进入防护服务 Tab,默认展示当前实例下所有服务。
2. 选择需要关闭 WAF 接入的服务,单击关闭防护,在关闭 WAF 防护的弹窗中,单击确定,关闭该服务的 WAF 防护。
注意:
服务级防护关闭后,该服务以及服务下所有的路由都对应关闭防护。
关闭路由级防护
1. 进入防护路由 Tab,默认展示当前实例下所有路由。
2. 选择需要进行 WAF 接入的路由,单击关闭防护,在关闭 WAF 防护的弹窗中,单击确定,关闭该路由的 WAF 防护。
步骤4: 测试验证
1. 登录云原生 API 网关 控制台,在左侧导航栏中,选择安全防护。
2. 确认域名防护状态为部分开启或全部开启。
3. 在浏览器中输入网址
http://<网关域名或IP>/?test=alert(123)
并访问,浏览器返回阻断页面,说明 Web 应用防火墙防护功能正常。