S3(Swift, COS, OSS)内容审查
介绍如何调用接口在WebService应用通道、异步模式下进行S3内容的审查。此步骤同样适用于Swift、COS、OSS等云端内容服务。查看具体支持的云服务商,参阅章节异步模式下审查云服务存储内容的objectinfo参数。
批量审查
介绍调用WebService应用通道,通过POST发送一个json文本对内容进行批量审查。需要将HTTP header中的 Content-type 设置为 "application/json"。本文以批量审查S3内容为例。请求方式
POST
请求地址
/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
}
}