跳转至

nla自定义规则

POST 创建自定义控制规则 nlaV1:acl:edit

POST /prod-api/waf/nlaV1/custom/rules/modifyCustomRule

Body 请求参数

{
  "ruleMessage": "deemo",
  "status": "enable",
  "aclId": 74,
  "rules": {
    "conditions": [
      [
        {
          "target": "HOST",
          "operator": "EQ",
          "values": ["test.ruisuyun.com"],
          "name": "HOST"
        },
        {
          "target": "REQUEST_URI",
          "operator": "ENDS_WITH",
          "values": ["js", "png", "jpg"],
          "name": "REQUEST_URI"
        }
      ]
    ],
    "action": {
      "action": "AUTHENTICATION",
      "parameters": [
        { "name": "log", "values": ["log"] },
        { "name": "validType", "values": ["A"] },
        {
          "name": "signatureParameterName",
          "values": ["x-security-auth"]
        },
        { "name": "validTime", "values": ["2"] },
        {
          "name": "authKey",
          "values": ["HiUUyUEYMIVvjXFohjpDuej3MP", "Age4YqyEtPQnfcuThgyrDL8GBD"]
        }
      ]
    }
  }
}

请求参数

名称 位置 类型 必选 中文名 说明
Authorization header string 无补充说明
body body ModifyNlaCustomRuleReqVO ModifyNlaCustomRuleReqVO 请求体 JSON,字段说明见上文「Body 请求参数字段说明」。

返回示例

200 Response

{
  "msg": "成功",
  "code": 200,
  "data": 128
}

数据模型

ModifyNlaCustomRuleReqVO

{
  "aclId": 0,
  "customRuleId": 0,
  "ruleMessage": "string",
  "rules": {
    "action": {
      "action": "string",
      "parameters": [
        {
          "name": "string",
          "values": ["string"]
        }
      ]
    },
    "conditions": [
      [
        {
          "conditionId": 0,
          "name": "string",
          "operator": "string",
          "target": "string",
          "values": ["string"]
        }
      ]
    ]
  },
  "sort": 0,
  "status": "string"
}

ModifyNlaCustomRuleReqVO

属性

名称 类型 必选 约束 中文名 说明
aclId integer(int64) - 策略组 ID 规则所属访问控制(ACL)/策略组编号。
ruleMessage string - 规则名称 规则对外展示名称或说明。
rules object - 规则内容 含匹配条件 conditions 与命中后动作 action
status string - 启用状态 enable(启用)、disable(关闭)等,以实现为准。

Body 请求参数字段说明

字段名称 字段描述
ruleMessage 规则名称或对外展示说明(示例为「鉴权」)。
status 是否启用该规则;示例 enable 表示启用,关闭时常为 disable 等枚举值(以实现与列表接口为准)。
aclId 本规则所属 访问控制(ACL)/策略组 的编号,用于把规则挂到指定策略组下。
rules 规则内容,内含 匹配条件 conditions 与 命中后动作 action

rules 对象下字段

字段名称 字段描述
rules.conditions 条件组的二维数组:第一层每个元素为一组;组内为多条子条件,组内一般为 与 关系(以实现为准)。
rules.action 命中后执行的动作;包含 action(动作编码)与 parameters(键值参数列表)。

rules.conditions[][](组内单条条件)

字段名称 字段描述
conditions[][].target 匹配维度编码,如 HOSTREQUEST_URI,与 describeParametertargets[].target 一致。
conditions[][].operator 比较运算符,如 EQENDS_WITH 等。
conditions[][].values 参与比较的实际取值列表;同一运算符下可多项。
conditions[][].name 维度展示名,常与 target 相同。
conditions[][].conditionId (更新场景可选)已有条件的持久化 ID;新建条件时可不传,由服务端生成。

rules.action 下字段

字段名称 字段描述
rules.action.action 动作类型编码;示例为 AUTHENTICATION(鉴权)。其它取值及参数键说明见《查询自定义控制规则》「动作与参数(客户总览)」;各动作完整 rules.action JSON 见下文「rules.action:各动作完整 JSON 示例」。
rules.action.parameters 动作附加参数数组;每项为 { "name", "values" },解析时以 name 为准,顺序不保证固定。

本示例中 rules.action.parametersname 含义

name 字段描述
log 是否记录日志;示例取值 log 表示记录(亦可为 nolog,以实现为准)。
validType 鉴权或校验类型标识;示例为 A
signatureParameterName 参与签名校验的 HTTP 头或参数名;示例 x-security-auth
validTime 签名或令牌有效时间相关配置(字符串,单位以实现为准)。
authKey 鉴权密钥列表,可配置多条用于轮换或主备。

rules.action:各动作完整 JSON 示例(编辑 modifyCustomRule 请求体)

以下与控制台保存自定义规则时常见组装方式一致:各动作均包含 log 项(valueslognolog);其余键随动作追加。仅替换请求体中的 rules.action 即可切换动作类型;rules.conditions、根级 ruleMessage 等字段仍须按业务填写。数组顺序以接口实际返回为准。

AUTHENTICATION(鉴权)

{
  "action": "AUTHENTICATION",
  "parameters": [
    { "name": "log", "values": ["log"] },
    { "name": "validType", "values": ["A"] },
    { "name": "signatureParameterName", "values": ["x-security-auth"] },
    { "name": "validTime", "values": ["2"] },
    {
      "name": "authKey",
      "values": ["HiUUyUEYMIVvjXFohjpDuej3MP", "Age4YqyEtPQnfcuThgyrDL8GBD"]
    }
  ]
}

DENY(拦截)

{
  "action": "DENY",
  "parameters": [
    { "name": "log", "values": ["log"] },
    { "name": "statusCode", "values": ["418"] }
  ]
}

LOG(仅记录不拦截)

{
  "action": "LOG",
  "parameters": [{ "name": "log", "values": ["log"] }]
}

ALLOW(跳过后续规则)

{
  "action": "ALLOW",
  "parameters": [{ "name": "log", "values": ["nolog"] }]
}

LIMIT_RATE(频率限速)

{
  "action": "LIMIT_RATE",
  "parameters": [
    { "name": "log", "values": ["log"] },
    {
      "name": "traits",
      "values": [
        "{\"target\":\"COUNTRY_CODE\",\"name\":\"COUNTRY_CODE\",\"value\":\"COUNTRY_CODE\"}"
      ]
    },
    { "name": "limit_access", "values": ["1"] },
    { "name": "limit_time", "values": ["3"] },
    { "name": "behavior", "values": ["excess"] },
    { "name": "limit_blacklist", "values": ["2"] }
  ]
}

REDIRECT(重定向)

{
  "action": "REDIRECT",
  "parameters": [
    { "name": "log", "values": ["log"] },
    { "name": "url", "values": ["/example"] },
    { "name": "statusCode", "values": ["301"] }
  ]
}

CAPTCHA(人机验证) — 无额外结构化参数时仅 log

{
  "action": "CAPTCHA",
  "parameters": [{ "name": "log", "values": ["log"] }]
}

DETECTION_ROBOT(验证爬虫) — 同上,仅 log

{
  "action": "DETECTION_ROBOT",
  "parameters": [{ "name": "log", "values": ["log"] }]
}