【雷池】OpenAPI文档及使用指导说明
各位师傅好,本文章将介绍雷池WAF产品的OpenAPI
文档及使用方法。雷池(SafeLine)具备全功能开放接口(OpenAPI),所有页面功能均可通过API实现调用,可通过SoC或SIEM平台调取雷池(SafeLine)检测日志、下发安全策略等,构建多平台、多设备的安全联动,提高安全和运维管理效率。雷池(SafeLine)提供基于REST-ful的标准API接口,可快速融入用户安全运维体系。
使用手册
通过浏览器访问雷池如下URL地址:
软件版:https://$wafip:9443/openapi_doc/
硬件版:https://$wafip:443/openapi_doc/
页面内容如下,使用API前请先阅读《SafeLine Web 应用防火墙 API 文档》中的使用手册
章节。
如何获取API-TOKEN
使用默认admin
账号(其他普通用户也可以生成 token)登录雷池WEB管理界面,点击界面右上角 “用户” 图标,下拉选项选择 “个人中心”,点击 “OPEN API” 选项卡,点击右上角“添加一个OPEN API TOKEN”,根据提示配置生成API-TOKEN,其中“过期时间”不设置时表示永久生效,权限设置需要勾选对应的功能模块,生成Token后,需要复制并保存该串Token,如下图示例。后续可在该界面管理维护生成的Token。
OpenAPI使用格式说明
OpenAPI不同功能模块的使用格式介绍,请根据功能模块查阅。
示例:IP组功能
请求示例(POST Body):
{
"name": "test",
"comment": "test1",
"original": [
"1.1.1.1-1.2.3.4",
"2.2.2.2",
"fe80::10c1:18b9:175b:e5fc",
"::1/80",
"192.168.1.1/24"
]
}
响应示例:
{
"err": null,
"data": {
"id": 24,
"cidrs": [
"1.1.1.1/32",
"1.1.1.2/31",
"1.1.1.4/30",
"1.1.1.8/29",
"1.1.1.16/28",
"1.1.1.32/27",
"1.1.1.64/26",
"1.1.1.128/25",
"1.1.2.0/23",
"1.1.4.0/22",
"1.1.8.0/21",
"1.1.16.0/20",
"1.1.32.0/19",
"1.1.64.0/18",
"1.1.128.0/17",
"1.2.0.0/23",
"1.2.2.0/24",
"1.2.3.0/30",
"1.2.3.4/32",
"2.2.2.2/32",
"fe80::10c1:18b9:175b:e5fc/128",
"::/80",
"192.168.1.0/24"
],
"name": "test",
"comment": "test1",
"original": [
"1.1.1.1-1.2.3.4",
"2.2.2.2",
"fe80::10c1:18b9:175b:e5fc",
"::1/80",
"192.168.1.1/24"
]
},
"msg": null
}
调用样例
curl
调用API创建IP组
curl https://$wafip:443/api/IPGroupAPI -H "API-TOKEN: xxxxx" -H "Content-Type: application/json" --data "{"name":"test","comment":"test1","original":["1.1.1.1-1.2.3.4","2.2.2.2","fe80::10c1:18b9:175b:e5fc","::1/80","192.168.1.1/24"]}"
python
通过API修改登录用户密码
#/usr/bin/python
# coding:utf-8
import json
import requests
base_url = "https://172.16.37.17:9443"
headers = {"API-TOKEN": "YXPVu7342HebzsHHsDZZ4irBkZxf6pyEWMLaJUtP"}
password_data = {
"authentication_method":"password",
"old_password":"admin",
"new_password":"!@#$QweasD",
"tfa_token":""
}
resp = requests.put(base_url + "/api/ResetUserCredentialAPI", headers= headers, json=password_data, verify=False)
print(resp.json())