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。
注: 如果是其他云内容,则改为其他的云端内容类型。目前支持以下云内容类型:
  • s3
  • swift
  • oss
  • cos
s3Region String(必选) 使用s3时的region name,如果运行在EC2上并使用AWS IAM role,则以下三项可省略.
注: 此条参数,以及下面的accessKeysecretKeyendpointUrls3Buckets3Key均为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
  }
}