有奖捉虫:行业应用 & 管理与支持文档专题 HOT
本文档将为您介绍如何通过 API 安全功能,进行 API 安全策略配置,从而进一步保护 API 接口安全。

背景信息

通过 API 安全功能,您可以添加启用系统内置的 API 防护策略或添加自定义防护策略。其中,API 入参检测规则能力向已购买 Web 应用防火墙高级版及以上版本实例的用户免费提供。其余 API 安全配置能力均需购买 API 安全增值能力后才支持启用。

查看是否启用 API 安全

1. 登录 Web 应用防火墙控制台,在左侧导航栏中,单击 API 安全
2. 左上角选择要查看的域名,右侧展示当前域名是否开启 API 安全开关。
说明:
仅购买了 API 安全的实例绑定的域名/CLB对象支持开启 API 安全开关。开启开关后将开始对流量进行分析,预计30分钟后完成分析,展示 API 资产列表及相关统计数据。


入参检测规则

1. API 安全 > 入参检测规则页面,支持开启入参检测规则开关,查看配置的入参检测规则总数、当前启用规则数。关闭入参检测规则开关后,该模块下所有规则均不生效。


2. 添加 API 防护规则,目前支持通过 导入 API 添加 API 两种方式进行增加 API 规则。
导入 API(推荐):根据获取的 API 文档,直接导入文件进行解析。
添加 API:用户根据网站的路径接口,手动添加需要防护的 API 路径。

导入 API(推荐)

1. 在自定义入参检测规则页面,单击导入 API,弹出导入 API 接口弹窗。
2. 在导入 API 接口弹窗中,选择上传文件类型,单击点击上传,传入 API 文件即可。
说明
目前 WAF 支持两种 swagger2.0 文件的解析,分别是:YML 文件和 JSON 文件。导入规则说明:
格式:导入 API 描述文件,文件后缀名必须为 .yml 或 .json,单次上传的 API 描述文件不超过100KB。
数量:每次最多可上传创建20条 API,导入已经存在的 API 会默认跳过。
导入创建成功的 API ,可进行编辑,请根据实际情况进行接口确认。

3. 上传文件后, API 安全模块会自动解析 swagger2.0 文件中的 API 策略,解析完成后,单击确认导入,即可添加成功。


4. 添加成功后,您可在自定义入参检测规则页面,查看新导入的 API 规则。

添加入参检测规则

1. 在自定义入参检测规则页面,单击添加规则,弹出添加入参检测规则弹窗。
2. 在添加入参检测规则弹窗中,您可以添加对应的 API 安全规则,添加完成后,单击添加

字段说明:
API名称:添加 API 路径,以‘/’开头,注意接口名称+请求方式不能重复,如:/guanjia/waf/config
描述:选填项,API 策略的相关描述。
规则开关:API 安全策略开关,默认为开。当开启开关后,才能对相应 API 策略进行解析,执行后续的观察和拦截动作。
请求方式:目前 API 安全支持四种请求方式:GET、POST、PUT 及 DELETE 方式。
匹配条件:需要您添加5个参数,分别为参数名称、参数位置、参数类型、是否必填(若勾选必填,WAF 会检查请求中,是否含有该参数,若有,则请求正常通过,若没有就会被拦截。)以及备注(可填项),参数位置目前支持 body、query 及 path 三种类型(可根据您业务实际参数所在位置进行选择)。
执行动作:目前支持两种动作,观察和拦截模式。
说明:
建议您添加规则时,先开启观察模式,查看攻击日志是否存在误拦截,确认无误后,再调整为拦截模式。
3. 添加成功后,您可在自定义入参检测规则页面,查看新导入的 API 规则。

字段说明:
规则 ID:成功添加一条 API 规则后,会自动生成一个对应的规则 ID,该 ID 在 API 安全模块具有唯一性,您可根据此 ID 在 攻击日志 中,查找对应的日志。
接口名称(描述):显示配置的 API 名称和描述,API 名称为 API 的实际路径,请按照实际防御域名的路径填写。
来源:来源分为两种,文件解析和手动添加。如果是导入的 API,则显示为文件解析,如果是手动添加的 API,则显示为手动添加。
请求方法:您配置的请求方法,分为 GET、POST、PUT 及 DELETE 四种。
API 参数:配置的 API 的参数列表,最多支持30个。
执行动作:分为观察和拦截两种。
规则开关:API 规则的启用状态,若关闭开关,则表示不启用。如需同时开启或关闭多个开关,可选择多个 API 规则,在列表上方,单击批量启用批量禁用,进行批量操作。
修改时间:API 防护规则最新更新的时间。
操作:对指定的防护 API 操作说明,包括编辑及删除规则两种操作。如需批量删除规则,可选择多个 API 规则,在列表上方,单击批量删除,即可进行批量操作。

API 限流规则

说明:
API 限流规则功能目前在灰度中,如需开通体验,请联系商务经理或通过 工单 联系我们。
1. API 安全 > 限流规则页面,支持开启限流规则开关,查看当前的限流规则总数、当前启用规则数。关闭限流规则开关后,该模块下所有规则均不生效。


2. 单击添加规则,正确配置对应的参数,单击确定,即可创建对应检测规则,单个域名最多添加50条规则。

字段说明:
域名:展示当前域名。
规则名称:支持自定义输入规则名称。
限流范围:支持针对 API 或当前域名进行限流。
API:选择应用于 API 时,填写需要进行限流的 API 资产路径,支持回车分隔多个 API 资产,最长128个字符。配置多个 API 资产时,共同计算访问频次,超出规定频次触发限流。
当前域名:选择应用于当前域名时,对域名整站计算访问频次,超出规定频次触发限流。
匹配方式:
访问频次:必填,超出规定频次触发限流。
请求方式:可选,设置需要进行限流的请求方式。支持属于、不属于、正则匹配三种逻辑符号,回车区隔多个匹配内容。
Header 参数值:可选,设置需要进行限流的请求特征。支持属于、不属于、正则匹配三种逻辑符号,回车区隔多个匹配内容。
Header 参数名:可选,设置需要进行限流的请求特征。支持每个参数值,属于、不属于、正则匹配三种逻辑符号,回车区隔多个匹配内容。选择每个参数值时,针对该 Header 参数名出现的每个参数值分别按设置的访问频次进行限流。
限流策略:对超出访问频次的请求,支持选择观察、拦截两种限流策略。
观察:仅记录攻击日志,不进行拦截。
拦截:记录攻击日志,且进行拦截,返回状态码429。
优先级:请输入1-100的整数,数字越小,代表这条规则的执行优先级越高;相同优先级下,创建时间越晚,优先级越高。

敏感检测规则

1. API 安全 > 敏感检测规则页面,支持开启敏感检测规则开关,查看当前的敏感检测规则总数、当前启用规则数。关闭敏感检测规则开关后,该模块下所有规则均不生效。


2. 添加 API 敏感检测规则,目前支持启用系统内置规则和添加自定义规则两种方式检测 API 敏感信息。
启用系统内置规则:开启 API 安全开关后,默认启用系统内置规则,检测请求中是否涉及对应敏感信息。
添加自定义规则:开启 API 安全开关后,可以根据业务场景自定义敏感检测规则,检测请求中是否涉及对应敏感信息。

启用系统内置规则

系统内置规则允许开启或关闭规则检测功能,但不支持规则的编辑或删除。默认可检测19类常见的敏感信息。


添加自定义规则

1. 单击添加规则,支持添加基于关键字匹配、字符匹配、正则匹配三种方式识别的自定义敏感检测规则。

2. 在添加规则的弹窗中,正确配置对应的参数,单击确定,即可创建对应检测规则。



字段说明:
规则名称:支持自定义输入,不允许重复,最长10个字符。
参数位置:支持多选 headers、body、query、cookie位置进行检测。
匹配条件及匹配内容:
关键字匹配:识别是否包含关键字;选择关键字匹配时,支持选择匹配包含其一(OR)或包含全部(AND),回车输入多个关键字,最多输入20个。
字符匹配:识别内容长度范围及是否为特定字符类型组成;选择字符匹配时,支持选择大写字母、小写字母、数字三个字符类型,可以多选;选择后输入字符长度范围,最小6个字符,最大128个字符。
正则匹配:识别是否符合特定正则表达式;选择正则匹配时,支持回车输入多个正则表达式进行匹配,最多输入20个。
参数泛化:选择泛化后,对应的 API 资产参数样例中该参数值将展示泛化后数据。
风险等级:支持选择高危、中危、低危,标识对应敏感信息的风险等级。
规则开关:支持开启或关闭该条规则。
3. 添加规则后,可以编辑或删除对应的规则。



API 资产聚合规则

1. API 安全 > API 资产聚合规则页面,支持开启 API 资产聚合规则开关,开启后可以针对特定的 API 路径,按照输入的正则表达式进行匹配。关闭API资产聚合规则开关后,该模块下所有自定义规则均不生效,默认按系统内置模型进行资产发现。
说明:
默认不需设置,未自定义的情况下会按照系统内置的模型聚合 API 。
如 API 资产聚合结果不符合用户预期,则可以使用自定义聚合规则修正聚合结果。命中自定义的聚合规则后,下次资产更新会淘汰历史数据,按最新聚合结果展示。

2. 单击添加规则,正确配置对应的参数,单击确定,即可创建对应检测规则。


字段说明:
规则名称:支持自定义输入,不允许重复,最长10个字符。
API 名称:填写需要自定义聚合的 API 资产路径,最长128个字符。
请求方式:支持多选 GET、POST、PUT、DELETE 请求方式。
匹配内容:输入正则表达式进行匹配,最长200个字符。
规则开关:支持开启或关闭该条规则。

鉴权凭据识别规则

1. API 安全 > 鉴权凭据识别规则页面,支持开启鉴权凭据识别开关,开启后可以针对特定的 API 或域名配置用户鉴权的参数,以识别资产是否存在未授权或越权风险。关闭鉴权凭据识别开关后,该模块下所有自定义规则均不生效,默认按系统内置模型进行识别。
2. 单击添加规则,正确配置对应的参数,单击确定,即可创建对应检测规则。


字段说明:
规则名称:支持自定义输入,不允许重复,最长10个字符。
应用范围:支持选择应用于多个 API 或当前域名。
API:选择应用于 API 时,填写需要自定义鉴权凭据的 API 资产路径,支持回车分隔多个 API 资产,最长128个字符。
当前域名:选择应用于当前域名时,配置对域名下所有 API 资产生效。
鉴权参数位置:指定识别特定位置(QUERY、BODY、COOKIE 或 HEADERS)的参数名作为会话标识,以判断请求中是否携带对应的鉴权凭据。
鉴权参数:取值标识,以.字符区隔各个层级的参数,示例如下:
test:识别 JSON 字符串中 test 参数为鉴权参数。
test1.test2:识别 JSON 字符串中 test1包含的 test2参数为鉴权参数。
规则开关:支持开启或关闭该条规则。

规则配置案例

入参检测规则
API 限流规则
敏感检测规则
API 资产聚合规则
鉴权凭据识别规则
1. 配置场景:针对 API 接口/test/123,调用需要输入参数 user_idapi_keydomain ,对输入参数不符合入参规范的请求配置拦截策略。



2. 配置效果:
请求中如果未传递必填的参数user_idapi_key ,将被拦截。
请求中如果参数 user_idapi_keydomain 的参数类型与配置类型不符,将被拦截。
场景一:对不同的调用方进行限流
根据Header参数test标记不同的用户,对不同的用户进行分级限流,普通用户默认限流2000QPS,特殊用户单独定制规则限流10000QPS。

兜底规则:设置针对test参数出现的每个参数值分别限流2000QPS,优先级低于定制规则。



定制规则:对test参数出现的参数值test1和参数值test2分别限流10000QPS,优先级高于兜底规则。


场景二:对域名整站和关键接口进行限流
根据 API 或当前域名设置访问频次和相关访问特征,对符合匹配方式的请求进行统计,超出规定频次触发限流。
1. 配置场景:业务禁止携带敏感user_id内容,对携带敏感内容的资产进行检测,推动内部整改。



2. 配置效果:如果请求中携带敏感信息,将对资产做敏感标签标记。如果发现存在相关数据泄露风险,将生成 API 风险事件。
1. 配置场景:针对 API 资产列表中资产聚合不符合预期的场景,可以通过规则配置进行修正。如配置符合匹配内容中输入的正则表达式/test1/test2/page/[A-Za-z0-9]的 URL 统一聚合为 API 资产/test/test/page



2. 配置效果:配置后,所有符合正则表达式的 URL 均聚合为配置的 API 资产/test1/test2/page,且清除不符预期的历史数据。
1. 配置场景:针对API接口/test,使用 BODY 中的参数token作为判断是否鉴权的凭据,以识别资产是否存在未授权或越权风险。


2. 配置效果:配置规则后,将优先按照自定义的鉴权凭据进行识别。如相关 API 资产有越权风险,将生成 API 风险事件。