You need to enable JavaScript to run this app.
导航
配置 API 自动发现与防护策略提升 API 安全
最近更新时间:2024.12.27 15:40:43首次发布时间:2024.12.27 15:40:43

Web 应用服务涉及大量的 API,他们被用于客户端和服务端建连并传输数据。WAF 提供 API 防护能力,用于检测和监控业务 API 的异常情况,并根据防护策略对异常 API 执行流量拦截动作,提升 API 安全。本文介绍如何使用 API 防护功能提升业务 API 安全。

为什么 API 需要安全防护?

API 攻击可能会涉及未经授权的访问、数据泄露、拒绝服务或操控 API 按非预期方式运行等问题。

  • 由于 API 常常用于传输敏感数据,如果 API 受到攻击,这些敏感数据可能会被泄露,导致重大的隐私和安全问题。
  • API 遭受攻击可能会导致应用程序崩溃和服务中断,影响用户的正常使用。

WAF 的 API 防护策略可解决什么问题?

API 防护策略是指 WAF 能根据设定的 API 格式和参数,对请求 API 流量进行检查,以过滤和拦截满足规则的非法 API 请求。

  • 识别 API 中的异常参数:WAF 可根据设定的 API 参数,检测请求流量中的异常参数,帮助拦截可能存在风险的请求,确保业务安全和稳定。
  • 拦截 API 中的敏感信息:API 自动发现功能可自动识别并拦截请求流量中的敏感信息,包括生日、银行卡号、电子邮件地址、身份证号等,确保数据传输过程中不会泄露用户隐私。
  • 监测 API 的调用频次:对已经添加到列表的 API,WAF 会统计近 30 天的调用量和近 24 小时内的 QPS 峰值,支持按照调用量和 QPS 峰值排序,帮助您提高 API 资产管理效率。
  • 全面管理 API 资产:支持手动上传与自动发现相结合的模式,降低手动添加的成本,确保 API 资产无遗漏。

使用流程

Image

前提条件

您已将需要防护的网站接入 WAF 实例。接入相关操作,请参见接入方式概述

步骤一:开启 API 防护策略开关

操作步骤

  1. 登录 Web 应用防火墙控制台
  2. 在顶部菜单栏选择实例所属地域。
  3. 在左侧导航选择防护策略>API 防护
  4. 选择目标域名。
  5. 确认当前域名的防护模式为“启用防护”,否则需要单击更改防护模式修改。
  6. 开启策略启用开关。

启用效果说明

开启后,在域名列表中域名的 API 图标将会显示为绿色,表示当前域名已开启 API 防护功能。

步骤二:配置 API 防护策略

您可以通过人工登记的方式,设置针对特定 API 路径和请求方法的 API 防护策略,也可以使用 API 自动发现功能,自动记录存在风险的 API 请求行为。

人工登记

如果您已明确存在风险的 API 路径,可通过手动添加或者 JSON 文件上传的方式,将具有固定特征的 API 记录为资产。

操作步骤

  1. 登录 Web 应用防火墙控制台
  2. 在顶部菜单栏选择实例所属地域。
  3. 在左侧导航选择防护策略>API 防护
  4. 选择目标域名。
  5. 添加资产,支持手动添加和文件上传两种添加方式。
    • 手动添加:手动设置 API 资产。

      参数

      说明

      配置示例

      API 名称

      API 请求动作的名称。

      说明

      • 以中文、字母、数字开头。
      • 允许字母、数字、中文、点“.”、下划线“_”和短横线“-”。
      • 长度为 1-128 个字符。

      删除文件

      API 描述

      填写 API 资产的相关备注。

      用于防护未经授权的删除操作

      API 路径

      填写 API 请求路径。最多 128 个字符,须符合 swagger PATH 格式,不包含域名和参数。

      /api/v1/delete_project_file

      请求方法

      选择 API 请求方法,支持 GET、PUT、POST、DELETE、OPTIONS、HEAD、PATCH 和 TRACE。

      DELETE

      执行动作

      当请求命中 API 参数异常的规则后,WAF 执行的动作。

      • 观察:放行请求流量,但会将请求行为上报至攻击日志。
      • 拦截:拦截请求流量,将请求行为上报至攻击日志。如果配置了自定义拦截响应页面,WAF 会将配置的拦截响应页面信息返回给客户端。

      拦截

      规则开关

      开启或关闭资产对应的规则。

      开启

      API 参数

      • 填写 API 参数详情,包括参数名称、参数位置、参数格式和是否必选参数等。
      • 当请求的参数格式是否必选参数与配置不一致时,该请求将被判定为 API 参数异常。
      • 参数名称:ID
      • 参数位置:query
      • 参数格式:string
    • 文件上传:批量导入 JSON 格式的 API 文件。

      说明

      1. 格式要求:swagger 3.0 格式的 JSON 文件,单次上传的文件大小不超过 500 KB。
      2. 导入已存在的 API 会覆盖原有数据。
      3. API 成功导入后,默认开启策略开关且执行动作为“观察”,导入成功后可手动更改。
  6. 单击确定,完成规则配置。

配置效果说明

配置完成后,可在 API 防护列表查看 API 信息。人工登记的 API 默认状态为“已确认”。

开启 API 自动发现

WAF 基于智能检测和学习能力,自动发现 API 资产和参数信息,并记录在资产列表中。API 自动发现可在人工登记的基础上,补充和完善您的 API 防护资产,提升防护能力。
自动添加的资产默认为“已发现”状态,且默认执行“观察”动作。您可以手动确认资产信息和修改执行动作,确认后资产将切换为“已确认”状态。

注意

该功能处于限时免费阶段,当前仅面向企业版及以上规格开放。

操作步骤

  1. 登录 Web 应用防火墙控制台
  2. 在顶部菜单栏选择实例所属地域。
  3. 在左侧导航选择防护策略>API 防护
  4. 选择目标域名。
  5. 开启自动发现功能。

启用效果说明

开启后,在域名列表中域名的 AI 图标将会显示为绿色,表示当前域名已开启 API 防护自动发现功能。

说明

如果暂未开启 API 防护策略开关,AI 图标显示为黄色,此时 API 自动发现不生效。

如果 WAF 发现了存在风险的 API 请求,会自动生成一条 API 资产,该资产的状态为“发现中”。

设置未登记 API 默认执行动作

未登记 API 是指既没有通过人工方式添加,也不在 API 自动发现列表中的 API 资产,即对“已发现”和“已确认”之外状态的 API 路径访问请求执行路由检查策略。您可以为这类 API 设置统一的处置动作,包括观察、不检查或拦截,默认执行动作为不检查

执行动作说明

  • 观察:放行请求流量,但会将请求行为上报至攻击日志。
  • 不检查:放行请求流量,将请求行为上报至访问日志。
  • 拦截:拦截请求流量,将请求行为上报至攻击日志。如果配置了自定义拦截响应页面,WAF 会将配置的拦截响应页面信息返回给客户端。

操作步骤

  1. 登录 Web 应用防火墙控制台
  2. 在顶部菜单栏选择实例所属地域。
  3. 在左侧导航选择防护策略>API 防护
  4. 选择目标域名。
  5. 设置未登记 API 的执行动作。

如果暂不确定是否存在风险但又担心影响正常访问,您可以先设置动作为观察。然后根据调用量、QPS 峰值和日志分析来判断是否可以直接放行。

步骤三:处置风险

例如,某域名开启 API 自动发现功能后,生成一条名为/passport/proto******的 API,且展示为“发现中”状态。您已确认该 API 为需要补齐的资产,可以参考以下链路处置。

说明

人工登记的 API 处置方式类似,但不需要手动确认,支持编辑和废弃操作。

确认自动发现的 API 资产

  1. 单击 API 操作列对应的确认

  2. 按照下图确认 API 名称、描述、执行动作、参数等信息。

  3. 单击确定

    说明

    API 状态切换为“已确认”,WAF 按照更新后的规则执行检测。后续请求的执行动作为“观察”,即相关请求被放行。

  4. 观测 API 的调用量、QPS 峰值和日志分析数据。
    如果发现确实有攻击存在 ,建议调整对应规则的执行动作以防护业务安全。

调整策略执行动作

例如该 API 的调用量、QPS 峰值明显高于其他 API 接口,且在日志检索中发现对应的 API 参数异常和 API 敏感信息攻击行为日志,则需要将 API 参数异常和 API 敏感信息策略的处置动作调整为“拦截”。

  • API 参数异常策略处理:直接在 API 防护列表中将对应 API 资产的执行动作设置为拦截即可。

  • API 敏感信息策略处理:

    1. 在 API 防护列表中单击对应 API 资产的名称,进入详情页面。
    2. 在请求参数列表中,选择敏感信息标签,并设置标签的执行动作。
    * **拦截该敏感信息**:拦截敏感标签对应的内容。
    * **仅删除标签,不拦截敏感信息**:将敏感信息标签从规则中删除,放行对应内容。
    

API 防护策略类型

WAF API 防护包括以下四种策略类型,即检测到以下四种情况时,相关请求行为会被判定为 API 攻击,并执行对应防护动作。

策略类型

说明

支持的操作

API 路由异常

  • 如果未登记 API 执行动作被设置为“拦截”,则所有未登记的 API 请求行为都被判定为路由异常。
  • 如果未登记 API 执行动作还可以设置为“观察”或“不检查”,未登记的 API 请求行为会被放行,不会触发 API 路由异常的防护策略。
  • 观察
  • 不检查
  • 拦截

API 参数异常

如果请求参数的是否必选参数类型属性与配置规则中的参数信息不一致,则该请求会被判定为参数异常。支持设置以下两种执行动作。

  • 观察:放行请求流量,但会将请求行为上报至攻击日志。
  • 拦截:拦截请求流量,将请求行为上报至攻击日志。如果配置了自定义拦截响应页面,WAF 会将配置的拦截响应页面信息返回给客户端。
  • 观察
  • 拦截

API 废弃资产

如果某 API 资产被标记为废弃,则该 API 资产将禁止被访问,发起相关请求时会触发“API 废弃资产”规则。

废弃

API 敏感信息

  • WAF 检测到 API 请求或响应信息中存在敏感信息后会对 API 打上敏感信息标签,包括身份证、银行卡、手机号、电子邮箱、地址、出生日期和姓名。您将标签的执行动作设置为“拦截”后,相关敏感信息会被拦截。
  • 您还可以手动删除标签,删除意味着 WAF 不再检测该 API 资产对应的敏感信息,直接放行。
  • 拦截
  • 删除

API 状态流转说明

API 策略配置完成后,会在API 防护策略列表生成对应的资产。其中人工登记的 API 资产,其状态显示为“已确认”;API 自动发现首次生成的资产,其状态显示为“发现中”。您可以参考下方说明了解 API 防护资产的不同状态,以及可执行的操作。

API 自动发现

Image

状态

说明

规则是否执行

下一步操作说明

发现中

  • 当 WAF API 自动发现检测到业务中有相关资产且暂未被人工添加,会生成一条状态为“已发现”的资产。
  • 此时资产未被验证和确认,相关规则也不会被执行。

  • 继续自动发现:AI 继续自动发现,如果校验确实属于业务相关的 API 资产,资产切换为“已发现”状态。
  • 确认:确认自动发现的 API 参数,确认并提交后,资产切换为“已确认”状态。
  • 废弃:废弃该资产,资产切换为“已废弃”状态。
  • 忽略:忽略该资产,资产切换为“已忽略”状态。

已发现

  • 当状态为“已发现”的资产在持续发现过程中得到验证后,会转换为“已发现”状态。
  • 此时不进行任何操作, WAF 也会根据自动发现的规则观察/拦截对应流量。

  • 确认:确认自动发现的 API 参数,确认并提交后,资产切换为“已确认”状态。
  • 废弃:废弃该资产,资产切换为“已废弃”状态。
  • 忽略:忽略该资产,资产切换为“已忽略”状态。

已确认

  • 已发现的资产经过手动确认后,会转换为“已确认”状态。
  • 此时 WAF 会按照确认后的规则自动观察/拦截对应流量。

  • 编辑:编辑该资产,可修改名称、动作和参数等配置。确定之后资产仍为“已确认”状态。
  • 废弃:废弃该资产,资产切换为“已废弃”状态。

已忽略

  • 处于“发现中”或“已发现”状态的 API 资产被忽略后会转换为“已忽略”状态。
  • 此时资产会展示在“已忽略”列表中。
  • WAF 不再执行该资产关联的规则检测。

  • 恢复:恢复该资产,恢复之后资产切换为“发现中”状态。

已废弃

  • 处于“发现中”、“已发现”或“已确认”状态的 API 资产被废弃后会转换为“已废弃”状态。
  • 此时资产会展示在“已废弃”列表中。
  • WAF 对该资产关联的请求直接拦截。

  • 恢复:编辑该资产,可修改名称、动作和参数等配置。确定之后资产切换为“已确认”状态。
  • 删除:删除该资产,但 AI 可能会重新发现相同规则。

人工登记

Image

状态

说明

规则是否执行

下一步操作说明

已确认

  • 人工登记的资产添加后,默认为“已确认”状态。
  • 此时如不进行任何操作,WAF 也会自动观察/拦截对应流量。

  • 编辑:编辑该资产,可修改名称、动作和参数等配置。确定之后资产仍为“已确认”状态。
  • 废弃:废弃该资产,资产切换为“已废弃”状态。

已废弃

  • “已确认”状态的 API 资产被废弃后会转换为“已废弃”状态。
  • 此时资产会展示在“已废弃”列表中。
  • WAF 对该资产关联的请求直接拦截。

  • 恢复:确认要恢复后,可编辑该资产,支持修改名称、动作和参数等配置。修改并提交之后资产切换为“已确认”状态。
  • 删除:删除该资产,但 AI 可能会重新发现相同规则。

常见问题

自动发现的 API 必须手动确认吗?

自动发现的 API 首次生成时,并未得到验证和确认。如果您没有手动确认,WAF 会通过业务流量数据继续发现该 API。

  • 自动发现的 API 处于“发现中”状态时,WAF 不会执行规则检测。
  • 自动发现的 API 处于“已发现”状态时,即便您不手动确认,WAF 也会执行对应的规则检测。

如何查看已经忽略或者废弃的 API 资产?

已经忽略或废弃的 API 资产不会展示在 API 防护策略列表中,您可以通过以下方式查看。

  1. 登录 Web 应用防火墙控制台

  2. 在顶部菜单栏选择实例所属地域。

  3. 在左侧导航选择防护策略>API 防护

  4. 选择目标域名。

  5. 在 API 规则列表上方单击查看。

    说明

    如果当前域名下暂时没有被忽略或者废弃的 API,则页面不展示该入口。

  6. 查看被废弃或忽略的 API。

    • 已废弃的 API:支持恢复或删除。
    • 已忽略的 API:支持恢复。