文本信息审查
介绍如何调用接口在WebService应用通道中进行针对文本内容的内容审查。
请求方式
接口地址
/skg/v1/dlp/channel/webserviceapp/<WebService应用ID>/<文本请求模式>
请求参数
参数名称 | 参数位置 | 是否必须 | 描述 |
---|---|---|---|
<WebService应用ID> | URL参数 | 是 | WebService应用程序的ID。 |
<文本请求模式> | URL参数 | 是 | 指定文本内容的请求模式为同步或异步。
|
元数据参数
支持文本内容的扫描
metadata参数定义
参数名 | 类型 | 适用状态 | 说明 |
---|---|---|---|
user | String(必选) | 同步和异步 | 生成事件的用户名 - 支持域用户,格式为域名\用户名。 |
customAttribute | String(可选) | 同步和异步 | 支持用户自定义的参数名。 |
queryID | String(必选) | 同步和异步 | 与此请求关联的事件查询ID,保持唯一。若请求无事件生成则无法查询到事件详情。 注: queryid的值对应于第三方云服务中的流量UUID。 |
redaction | Dict(可选) | 同步和异步 | 脱敏功能相关。是否开启脱敏功能。具体的脱敏设置,请查阅sendBack参数。
|
sendBack | Dict(可选) | 同步和异步 | 脱敏功能相关。脱敏后内容的处理。 注: 如需使用脱敏功能,请将redaction参数值设置为true。 该字段要求输入一个必选的type属性,表示返回文件的方式,Type属性支持以下选项: response:将脱敏后的内容返回至当前路径 httpUpload:将脱敏后的内容发送至指定URL s3:将脱敏后的内容上传至Amazon S3存储空间
|
operation | int(可选) | 同步和异步 | 操作ID。创建WebService应用时定义,在API流量日志的Webservice操作字段中将会显示操作ID对应的操作名称。默认有以下四种,用户也可以自定义:
|
encoding | String(可选) | 同步和异步 | 文件编码 |
uploadtype | String(必选) | 异步 | 只限于异步。支持本地文件。
|
callback_url | String(可选) | 异步 | 只限于异步模式填写回调函数的url |
请求示例
以下示例为调用接口分别在同步模式和异步模式下发送文本内容至统一内容安全审查平台UCWI进行内容安全检测。
- 同步状态下:
POST /skg/v1/dlp/channel/webserviceapp/appid/message_sync Content-Type: multipart/form-data; boundary=${bound} --${bound} Content-Disposition: form-data; name="metadata" Content-Type: application/json { "user":"abc\enduser1", "queryID":"cd2fd109-c4d4-489f-9b27-53752f7827d6", } --${bound} Content-Disposition: form-data; name="inspectContent"; Content-Type: text/plain %Message Content%
- 异步状态下:
POST /skg/v1/dlp/channel/webserviceapp/appid/message_async Content-Type: multipart/form-data; boundary=${bound} --${bound} Content-Disposition: form-data; name="metadata" Content-Type: application/json { "user":"abc\enduser1", "queryID":"cd2fd109-c4d4-489f-9b27-53752f7827d6", "callback_url":"http://172.22.113.49:5000/post/webserviceapp" } --${bound} Content-Disposition: form-data; name="inspectContent"; Content-Type: text/plain %Message Content%
Python请求示例 - WebService通道(同步模式)
以下示例为使用Python代码调用接口,以在异步模式下,上传WebService通道中的文本内容,以供内容安全审查。
注: 在如下Python代码示例中,app_id为WebService应用ID,如需获取该ID,参照获取WebService应用ID。
# -*- coding: utf-8 -*- from requests.packages.urllib3.exceptions import InsecureRequestWarning from ucwi_config import UCWIConfig from ucwi_auth import get_headers import requests import json import uuid requests.packages.urllib3.disable_warnings(InsecureRequestWarning) app_id = "caafb22a-9f6d-4a06-a0e4-b12c170afdf5" api = "/skg/v1/dlp/channel/webserviceapp/{}/message_sync".format(app_id) url = "{0}{1}".format(UCWIConfig.base_url, api) file_path = "test.txt" metadata = { "user": "ucwitestuser", # 发送数据的用户,用于内容安全审查时的策略匹配,以及内容安全审查完成后的事件显示 "queryID": str(uuid.uuid4()), "origin_filename": file_path } with open(file_path) as f: content = f.read() # 需要检查的内容 headers = get_headers() data = { "metadata": json.dumps(metadata), "inspectContent": content, } response = requests.post(url, headers=headers, data=data, verify=False) if response.status_code != 200: print("Bad request, response code:", response.status_code) print(response.text) else: result = response.json() if result["responseCode"] != 200: print("Bad request, response code:", result["responseCode"]) print(result["message"]) else: hint = "# 1:允许; 2:阻断;3:确认;4:删除附件;5:邮件加密;6:邮件隔离;7:终端系统加密;8:邮件内容加密;9:终端个人密钥加密" print("action:{} {}".format(result["actionCode"], hint)) if len(result["incident_info"]) == 0: print("not matched.") else: print("matched policy:") for policy in result["incident_info"]["matchedPolicies"]: print(json.dumps(policy, indent=2).encode('utf-8').decode('raw_unicode_escape'))
Python请求示例 - WebService通道(异步模式)
以下示例为使用Python代码调用接口,以在异步模式下,上传WebService通道中的文本内容,以供内容安全审查。
注: 在如下Python代码示例中,app_id为WebService应用ID,如需获取该ID,参照获取WebService应用ID。
# -*- coding: utf-8 -*- from requests.packages.urllib3.exceptions import InsecureRequestWarning from ucwi_config import UCWIConfig from ucwi_auth import get_headers import requests import json import os import uuid requests.packages.urllib3.disable_warnings(InsecureRequestWarning) app_id = "caafb22a-9f6d-4a06-a0e4-b12c170afdf5" api = "/skg/v1/dlp/channel/webserviceapp/{}/message_async".format(app_id) url = "{0}{1}".format(UCWIConfig.base_url, api) file_path = "test.txt" metadata = { "user": "ucwitestuser", # 发送数据的用户,用于内容安全审查时的策略匹配,以及内容安全审查完成后的事件显示 "origin_filename": file_path, # 上传文件的文件名,用于内容安全审查时的策略匹配 "queryID": str(uuid.uuid4()), # 此次请求关联的UUID,需要唯一,在异步模式下,用于事件查询 #"encoding": "UTF-8", # 可选参数,文件的编码方式,默认是UTF-8 #"antivirus": False, # 可选参数,是否执行反病毒检查,默认值为False,即忽略,如需反病毒检查,可改为True #"md5": "09e066b382d4225de7f3c0594aa89b5f", # 可选参数,默认为空字符串,用于内容安全审查完成后的事件显示 "uploadtype": "file", "callback_url": UCWIConfig.callback_url + "/webserviceapp" } # 需要检查的内容 with open(file_path) as f: content = f.read() headers = get_headers() data = { "metadata": json.dumps(metadata), "inspectContent": content } response = requests.post(url, headers=headers, data=data, verify=False) if response.status_code != 200: print("Bad request, response code:", response.status_code) print(response.text) else: result = response.json() print(result["message"])
返回参数
内容审查请求返回结果中包含以下参数:
名称 | 描述 |
---|---|
result | 请求是否成功,成功为0,失败为1 |
actionCode | 请求成功时,用户可选择对符合请求条件的内容进行默认操作,默认操作包括1-允许数据传输和2-阻断数据传输 |
errorCode | 请求失败时返回的错误代码 |
message | 请求失败时返回的错误消息 |
返回示例
内容审查请求的回复如下。
- 请求成功:
{ "result" : 0, "actionCode" : 1/2 } actionCode: 1 - allow, 2 - block
注: 若匹配策略,发现违规内容,系统还将返回策略匹配信息,具体请参照送检策略匹配返回值定义 - 请求失败:
{ "result" : 1, "errorCode" : 500, "message" : "Invalid parameter" }
错误代码
若调用出现错误,将返回以下错误代码:
错误码 | 描述 |
---|---|
400 | 无效参数 |
404 | 未知错误,例如请求了未触发的事件等。 |
500 | 无效参数 |