跳转至

查询自定义控制规则

1. 接口描述

接口请求路径:GET /prod-api/waf/nlaV1/custom/rules/describeCustomRule/{customRuleId}

describeCustomRule 用于按规则 ID 查询单条自定义控制规则的完整配置(匹配条件与命中动作)。默认规则(ruleClass=default)不可查询。

Token 获取方式见 密钥鉴权

2. 输入参数

以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见 公共请求参数

参数名称 必选 类型 描述
customRuleId Long Path 参数。自定义规则 ID。示例值:128

3. 输出参数

参数名称 类型 描述
code Integer 状态码。示例值:200
msg String 提示信息。示例值:成功
data Object 规则详情
data.customRuleId Long 自定义规则 ID。示例值:128
data.aclId Long 所属策略组 ID;可能为空
data.ruleMessage String 规则名称。示例值:鉴权
data.sort Integer 排序权重。示例值:1
data.status String 启用状态。取值:enable(启用)、disable(关闭)。示例值:enable
data.rules NlaCustomRule 规则内容

4. 示例

示例1 查询单条自定义规则

输入示例

GET /prod-api/waf/nlaV1/custom/rules/describeCustomRule/128

代码调用

请将 {登录域名}token 替换为实际值。

curl -X GET 'https://{登录域名}/prod-api/waf/nlaV1/custom/rules/describeCustomRule/128' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.xxxxxx'
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class DescribeCustomRuleTest {

    public static void main(String[] args) throws Exception {
        String url = "https://{登录域名}/prod-api/waf/nlaV1/custom/rules/describeCustomRule/128";
        String token = "eyJhbGciOiJIUzUxMiJ9.xxxxxx";

        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            HttpGet httpGet = new HttpGet(url);
            httpGet.setHeader("Authorization", "Bearer " + token);

            try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
                int statusCode = response.getStatusLine().getStatusCode();
                String body = EntityUtils.toString(response.getEntity(), "UTF-8");
                System.out.println("Status Code: " + statusCode);
                System.out.println("Body: " + body);
            }
        }
    }
}
package main

import (
    "fmt"
    "io"
    "net/http"
)

func main() {
    url := "https://{登录域名}/prod-api/waf/nlaV1/custom/rules/describeCustomRule/128"
    token := "eyJhbGciOiJIUzUxMiJ9.xxxxxx"

    req, err := http.NewRequest(http.MethodGet, url, nil)
    if err != nil {
        panic(err)
    }
    req.Header.Set("Authorization", "Bearer "+token)

    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, err := io.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }
    fmt.Println("Status Code:", resp.StatusCode)
    fmt.Println("Body:", string(body))
}

输出示例

{
  "msg": "成功",
  "code": 200,
  "data": {
    "customRuleId": 128,
    "aclId": null,
    "ruleMessage": "鉴权",
    "sort": 1,
    "rules": {
      "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"
            ]
          }
        ]
      },
      "conditions": [
        [
          {
            "conditionId": 120000873,
            "operator": "EQ",
            "target": "HOST",
            "name": "HOST",
            "values": ["test.ruisuyun.com"]
          },
          {
            "conditionId": 120000874,
            "operator": "ENDS_WITH",
            "target": "REQUEST_URI",
            "name": "REQUEST_URI",
            "values": ["js", "png", "jpg"]
          }
        ]
      ]
    },
    "status": "enable"
  }
}

5. 错误码

HTTP 状态码 / 业务提示 描述
200 成功
401 未鉴权或 Token 无效
403 无权限
规则不存在 规则 ID 无效或不属于当前账号
失败,定制规则无法查询 默认规则(default)不可查询
查询失败,无效的customRuleId 服务端未找到规则详情
查询失败,未获取到执行动作,请联系管理员 规则动作数据缺失

6. 数据模型

NlaCustomRule

自定义规则的匹配条件与命中动作。

参数名称 类型 描述
action NlaCustomRuleAction 命中后动作
conditions [NlaCustomRuleCondition] 条件组二维数组:第一层为条件组,组内子条件为与关系

NlaCustomRuleCondition

单条匹配条件。

参数名称 类型 描述
conditionId Long 条件持久化 ID。示例值:120000873
target String 匹配维度编码,与 查询条件参数targets[].target 一致。示例值:HOST
operator String 比较运算符,如 EQENDS_WITH。示例值:EQ
name String 维度名,常与 target 相同。示例值:HOST
values Array of String 比较取值列表。示例值:["test.ruisuyun.com"]

NlaCustomRuleAction

命中后执行动作。

参数名称 类型 描述
action String 动作编码。取值:DENY(拦截)、LOG(仅记录)、ALLOW(跳过后续规则)、LIMIT_RATE(频率限速)、CAPTCHA(人机验证)、DETECTION_ROBOT(验证爬虫)、REDIRECT(重定向)、AUTHENTICATION(鉴权)。示例值:AUTHENTICATION
parameters [NlaCustomRuleActionParameters] 动作参数列表

NlaCustomRuleActionParameters

动作参数项。

参数名称 类型 描述
name String 参数键。常见:logstatusCodeurltraitslimit_accesslimit_timebehaviorlimit_blacklistvalidTypesignatureParameterNamevalidTimeauthKey
values Array of String 参数值列表。示例值:["log"]