S3(Swift, COS, OSS)内容审查
介绍如何调用接口在WebService应用通道、异步模式下进行S3内容的审查。此步骤同样适用于Swift、COS、OSS等云端内容服务。查看具体支持的云服务商,参阅章节异步模式下审查云服务存储内容的objectinfo参数。
批量审查
介绍调用WebService应用通道,通过POST发送一个json文本对内容进行批量审查。需要将HTTP header中的 Content-type 设置为 "application/json"。本文以批量审查S3内容为例。请求方式
请求地址
/skg/v1/dlp/channel/webserviceapp/<WebService应用ID>/bulk_async
请求参数
参数名称 | 类型/是否必须 | 描述 |
---|---|---|
callback_url | String(必选) | 异步模式回调的url,所有对象检查完成后一并回调。 |
verbose | Bool(必选) | 是否返回incident_info。 |
objects | List(必选) | 检查对象的列表,具体参数参考以下表格。 |
以下表格详细介绍了objects列表的具体参数。
参数名 | 类型 | 说明 |
---|---|---|
user | String(必选) | 生成事件的用户名 - 支持域用户,格式为域名\用户名。 |
filename | String(可选) | 文件名 - 可做根据文件名设置的策略匹配 |
customAttribute | String(可选) | 支持用户自定义的参数名。 |
queryID | String(必选) | 与此请求关联的事件查询ID,保持唯一。若请求无事件生成则无法查询到事件详情。 注: queryid的值对应于第三方云服务中的流量UUID。 |
callback_url | String(可选) | call back的监听地址 |
verbose | String(必选) | 是否返回事件信息。 |
uploadtype | String(必选) | S3,批量上传支持的上传类型为S3。 注: 如果是其他云内容,则改为其他的云端内容类型。目前支持以下云内容类型:
|
s3Region | String(必选) | 使用s3时的region name,如果运行在EC2上并使用AWS IAM role,则以下三项可省略.
注: 此条参数,以及下面的accessKey、secretKey、endpointUrl、s3Bucket、s3Key均为S3相关参数。Swift、OSS等云服务的参数,请查阅章节异步模式下审查云服务存储内容的objectinfo参数。 |
accessKey | String(必选) | 使用s3时的access key。 |
secretKey | String(必选) | 使用s3时的secret key。 |
endpointUrl | String(必选) | 使用s3时的endpoint url。 |
s3Bucket | String(必选) | 使用s3时的对象bucket |
s3Key | String(必选) | 使用s3时的对象key(文件名) |
Python请求示例 - 批量送检
以下示例为使用Python代码调用接口,批量上传存储在S3上的文件,以供内容安全审查。
import json import requests auth_headers = { "Authorization": "<Authorization>", "x-skg-timestamp": "<timestamp>", } ucwi_endpoint = "<ENDPOINT>" url = ucwi_endpoint + "/skg/v1/dlp/channel/webserviceapp/78217a43-542d-47e2-97a5-4435bf11521d/bulk_async" data = { "callback_url": CALLBACK_URL, "verbose": False, "objects": [ { "user": "cloudtest\\clouduser", "filename": "file1", "queryID": "<queryID2>", "uploadtype": "s3", "objectInfo": { "s3Region": "cn-north-1", "accessKey": "<AWS_AK>", "secretKey": "<AWS_SK>", "endpointUrl": "https://s3.cn-north-1.amazonaws.com.cn", "s3Bucket": "falseuser-test1", "s3Key": "Desert1.jpg", }, { "user": "cloudtest\\clouduser", "filename": "file1", "queryID": "<queryID3>", "uploadtype": "s3", "objectInfo": { "s3Region": "cn-north-1", "accessKey": "<AWS_AK>", "secretKey": "<AWS_SK>", "endpointUrl": "https://s3.cn-north-1.amazonaws.com.cn", "s3Bucket": "falseuser-test1", "s3Key": "Deser2.jpg", }, } ] } r = requests.post(url, headers=auth_headers, json=data) print(r.json())
返回参数
批量审查请求返回结果中包含以下参数:
名称 | 描述 |
---|---|
result | 请求是否成功,成功为0,失败为1 |
actionCode | 请求成功时,用户可选择对符合请求条件的内容进行默认操作,默认操作包括1-允许数据传输和2-阻断数据传输 |
errorCode | 请求失败时返回的错误代码 |
message | 请求失败时返回的错误消息 |
Incident_info | 策略匹配的事件信息。若匹配策略,发现违规内容,系统还将返回策略匹配信息。参考返回示例获取详细信息。 |
返回示例
若匹配策略,发现违规内容,系统还将返回策略匹配信息。
以下示例及其备注信息详细介绍了返回结果中的各参数及其含义。
{ "cd2fd109-c4d4-489f-9b27-53752f7827d": { "localDetectedTime": "2019-07-29T16:17:43.079368+0800", //检测时间 "incident_info": //事件信息 { "matchedPolicies": [ //匹配策略 { "numberOfMatches": 1, //匹配策略的事件数量 "name": "abc\enduser1", //违规用户的域名和用户名 "actionSettingName": "阻断", //对违规事件执行的动作 "matchedRules": [ //匹配的策略规则 { "name": "company", //规则名称 "matchedConditions": [ //匹配的条件 { "type": 5, //条件匹配类型, 包括: 1:正则, 2:字典, 3:外部脚本, 4:文件类型组, 5:关键字, 6:脚本, 7:文件指纹, 8:机器学习, 9:终端位置, 10:文件名称, 11:附件数量, 12:数据库指纹, 13:文件大小, 14:二进制, 15:压缩文件深度, 16:加密文件, 17:格式不匹配文件, 18:内置模板 "matchedElements": [ //匹配的元素 { "matchedContents": [ //匹配的内容 { "detectedValues": [ //检测到的内容 { "text": "company" //关键字 } ], "isFileSuffixMatch": true, //文件后缀名是否一致 "isArchiveFile": false, //是否为压缩文件 "isEncryptFile": false, //是否为加密文件 "encodeType": "UnknownEncoding", //文件编码类型, 具体请参阅国际标准编码类型及其解释 "numberOfMatches": 1, //匹配数 "locationPath": "confidential.doc", //文件全路径 "id": "0-0", //文件ID "contentSize": 22 //内容大小 } ], "numberOfMatches": 1, "isTruncated": false } ], "isTraditionalMatching": false //是否开启繁体匹配 } ] } ], "priority": 31, //优先级 "groupName": "默认策略组", //策略组名称 "severity": 3 //敏感级别 1 - 高, 2 - 中, 3 - 低, 4 - 信息 } ] }, "result": 0, "actionCode": 2 }, "47992d42-04b7-4860-b186-b8c11f8b2253": { "localDetectedTime": "2019-07-29T07:52:26.423684", "incident_info": {}, "result": 0, "actionCode": 1 } }