1.概述
对数据库类元数据设置脱敏或加密后,可以使用系统提供的脱敏接口和加密接口对数据进行脱敏或加密。系统提供的数据安全接口有:
根据《接口总体说明》,内部请求异常时,数据安全在接口的响应结果中的data字段内部携带了code字段(参考《睿治请求内部错误编码》),和message字段配合用于具体说明响应结果信息,详细说明如下。
请求响应正常的返回格式:
{ "status":200, "data":{ ...... } } |
请求响应内部异常的返回格式:
{ "status":500, "message":"参数不合法", "error":"xxx", "errCode":"...." } |
2.获取表的脱敏设置
获取安全数据源下某个表/视图的脱敏字段设置
- 请求地址
/edatasecurity/api/gettablemaskoption
- 请求方法
GET
- 请求参数
参数名 | 参数类型 | 必填项 | 默认值 | 说明 |
secsystemid | 字符串 | 是 | 无 | 安全数据源的地方配置的安全数据源唯一标识 |
datasetid | 字符串 | 是 | 无 | 表的id,是表/视图在secsystemid中的唯一名称。这个值在设置脱敏字段的时候由具体的安全数据源实现的获取表/视图的接口,譬如对元数据来说,就是Schema.表名 |
- 返回结果
请求地址示例,
GET http://localhost:8080/edatasecurity/api/gettablemaskoption?secsystemid=z_tag&datasetid=ZZ.ABI11_BOOK_TYPE
返回结果,
{ "status":200, "data":[ { "fieldname":"CID_", // 字段名 "maskoption":{ "rulename":"SYSALG_000", // 脱敏规则英文 "rulecaption":"全部替换为*", // 规则中文描述 "filter":"ADMIN", // 脱敏条件 "filtertype":"role"// 脱敏条件类型 } },{ "fieldname":"TID_", "maskoption":{ "rulename":"SYSALG_006", "rulecaption":"中间4位替换为*", "filter":"ADMIN", "filtertype":"role" } },{ "fieldname":"TNAME_", "maskoption":{ "rulename":"SYSALG_001", "rulecaption":"仅保留第一个字", "filter":"ALLUSER", "filtertype":"role" } } ] } |
3.获取字段的脱敏设置
获取安全数据源下表的某个字段的脱敏设置
- 请求地址
/edatasecurity/api/getfieldmaskoption
- 请求方法
GET
- 请求参数
参数名 | 参数类型 | 必填项 | 默认值 | 说明 |
secsystemid | 字符串 | 是 | 无 | 安全数据源的地方配置的安全数据源唯一标识 |
datasetid | 字符串 | 是 | 无 | 表的id,是表/视图在secsystemid中的唯一名称。 |
field | 字符串 | 是 | 无 | 字段名 |
- 返回结果
请求地址示例,
GET http://localhost:8080/edatasecurity/api/getfieldmaskoption?secsystemid=z_tag&datasetid=ZZ.ABI11_BOOK_TYPE&field=CID_
返回结果,
{ "status":200, "data":{ "fieldname":"CID_", // 字段名 "maskoption":{ "rulename":"SYSALG_000", // 脱敏规则英文 "rulecaption":"全部替换为*", // 规则中文描述 "filter":"ADMIN", // 脱敏条件 "filtertype":"role"// 脱敏条件类型 } } } |
4.获取表的加密设置
获取安全数据源下某个表/视图的加密字段设置
- 请求地址
/edatasecurity/api/gettableencryptoption
- 请求方法
GET
- 请求参数
参数名 | 参数类型 | 必填项 | 默认值 | 说明 |
secsystemid | 字符串 | 是 | 无 | 安全数据源的地方配置的安全数据源唯一标识 |
datasetid | 字符串 | 是 | 无 | 表的id,是表/视图在secsystemid中的唯一名称。 |
- 返回结果
请求地址示例,
GET http://localhost:8080/edatasecurity/api/gettableencryptoption?secsystemid=z_tag&datasetid=ZZ.ABI11_BOOK_TYPE
返回结果,
{ "status":200, "data":[ { "fieldname":"CID_", // 字段名 "encryptoption":{ "method":"SM4", // 加密算法 "filter":"ADMIN", // 加密条件 "filtertype":"role"// 加密条件类型 } },{ "fieldname":"TID_", "encryptoption":{ "method":"AES-256", "filter":"ALLUSER", "filtertype":"role" } },{ "fieldname":"TNAME_", "encryptoption":{ "method":"RC5", "filter":"$OTHER_ROLE", "filtertype":"role" } } ] } |
5.获取字段的加密设置
获取安全数据源下表的某个字段的加密设置
- 请求地址
/edatasecurity/api/getfieldencryptoption
- 请求方法
GET
- 请求参数
参数名 | 参数类型 | 必填项 | 默认值 | 说明 |
secsystemid | 字符串 | 是 | 无 | 安全数据源的地方配置的安全数据源唯一标识 |
datasetid | 字符串 | 是 | 无 | 表的id,是表/视图在secsystemid中的唯一名称。 |
field | 字符串 | 是 | 无 | 字段名 |
- 返回结果
请求地址示例,
GET http://localhost:8080/edatasecurity/api/getfieldencryptoption?secsystemid=z_tag&datasetid=ZZ.ABI11_BOOK_TYPE&field=TID_
返回结果,
{ "status":200, "data":{ "fieldname":"TID_", // 字段名 "encryptoption":{ "method":"AES-256", // 加密算法 "filter":"ALLUSER", // 加密条件 "filtertype":"role"// 加密条件类型 } } } |
6.获取表的混合设置接口
获取安全数据源下某个表/视图的加密和脱敏设置
- 请求地址
/edatasecurity/api/gettablemixoption
- 请求方法
GET
- 请求参数
参数名 | 参数类型 | 必填项 | 默认值 | 说明 |
secsystemid | 字符串 | 是 | 无 | 安全数据源的地方配置的安全数据源唯一标识 |
datasetid | 字符串 | 是 | 无 | 表的id,是表/视图在secsystemid中的唯一名称。 |
- 返回结果
请求地址示例,
GET http://localhost:8080/edatasecurity/api/gettablemixoption?secsystemid=zz_tag&datasetid=ZZ.ABI11_BOOK_CATEGORY
返回结果,
{ "status":200, "data":[ { "fieldname":"CID_", // 字段名 "maskoption":{ // 脱敏设置 "rulename":"SYSALG_000", // 脱敏规则英文 "rulecaption":"全部替换为*", // 规则中文描述 "filter":"ADMIN", // 脱敏条件 "filtertype":"role"// 脱敏条件类型 } },{ "fieldname":"CID_", // 字段名 "encryptoption":{ // 加密设置 "method":"SM4", // 加密算法 "filter":"ADMIN", // 加密条件 "filtertype":"role"// 加密条件类型 } } ] } |
7.获取字段的混合设置接口
获取安全数据源下表的某个字段的加密和脱敏设置
- 请求地址
/edatasecurity/api/getfieldmixoption
- 请求方法
GET
- 请求参数
参数名 | 参数类型 | 必填项 | 默认值 | 说明 |
secsystemid | 字符串 | 是 | 无 | 安全数据源的地方配置的安全数据源唯一标识 |
datasetid | 字符串 | 是 | 无 | 表的id,是表/视图在secsystemid中的唯一名称。 |
field | 字符串 | 是 | 无 | 字段名 |
- 返回结果
请求地址示例,
GET http://localhost:8080/edatasecurity/api/getfieldmixoption?secsystemid=z_tag&datasetid=ZZ.ABI11_BOOK_TYPE&field=TID_
返回结果,
{ "status":200, "data":[ { "fieldname":"TID_", // 字段名 "encryptoption":{ // 加密设置 "method":"AES-256", // 加密算法 "filter":"ALLUSER", // 加密条件 "filtertype":"role"// 加密条件类型 } },{ "fieldname":"TID_", // 字段名 "maskoption":{ // 脱敏设置 "rulename":"SYSALG_006", // 脱敏规则英文 "rulecaption":"中间4位替换为*", // 规则中文描述 "filter":"ADMIN", // 脱敏条件 "filtertype":"role"// 脱敏条件类型 } } ] } |
8.数据加密接口
数据加密
- 请求地址
/edatasecurity/api/encryptdata
- 请求方法
POST
- 请求体
请求体采用JSON格式。格式说明如下,
{ "secsystemid":{secsystemid}, // 安全数据源唯一标识 "datasetid":{datasetid}, // 表的id,是表/视图在secsystemid中的唯一名称 "data":'[{{field}:{content}}]'//待加密的数组字符串 } |
- 返回结果
请求地址示例,
POST http://localhost:8080/edatasecurity/api/encryptdata
请求体示例,
EUI.ajax({ url: EUI.getContextPath() + "edatasecurity/encryptdata.do", type: "post", data: { "loginid": "admin", "secsystemid": "yangshi_data", "datasetid": "YANGGW_YANSHI.TABLE2", "data": '[{"EMAIL_": "11111111@qq.com","CHINESENAME_": "张明"}]' } }) |
返回结果,
{ "status": 200, "msg": "接口调用正常!", "data": { "loginid": "admin", "secsystemid": "yangshi_data", "datasetid": "YANGGW_YANSHI.TABLE2", "resultid": "2c2914bacea54a698663288db9839f7a", "timestamp": 1650273748763, "costtime": 13, "data": [ { "EMAIL_": "aa5868c453b18c0041db9f76476e35af", "CHINESENAME_": "张明" } ] } } |
9.数据解密接口
数据解密
- 请求地址
/edatasecurity/api/decryptdata
- 请求方法
POST
- 请求体
请求体采用JSON格式。格式说明如下,
{ "secsystemid":{secsystemid}, // 安全数据源唯一标识 "datasetid":{datasetid}, // 表的id,是表/视图在secsystemid中的唯一名称 "resultid":{resultid}, // 对这条数进行加密时返回的resultid "data":'[{"field":"content"}]'//加密的数据 } |
返回结果
请求地址示例,
POST http://localhost:8080/edatasecurity/api/decryptdata
请求体示例,
{ "secsystemid":"z_tag", // 安全数据源唯一标识 "datasetid":"ZZ.ABI11_BOOK_TYPE", // 表的id,是表/视图在secsystemid中的唯一名称 "resultid":"5d9e5eb090be4bf58181d297645ef5e4", // 对这条数进行加密时返回的resultid "data":'[{"CID_":"235c6116c4813756ba15856ec2063996","TNAME_":"70539620e234f724afa51501d0e5d821"}]'//加密的数据 } |
返回结果,
{ "status":200, "data":{ "loginid":"admin", // 传入的loginid "secsystemid":"z_tag", // 传入的安全数据源唯一标识 "datasetid":"ZZ.ABI11_BOOK_TYPE", // 传入的datasetid "timestamp":1631694045423, // 执行解密时的时间戳 "costtime":65, // 执行解密耗费的时间 "data":[{ // 解密以后的数据 "CID_":"008", "TNAME_":"测试数据" }] } } |
10.数据脱敏接口
数据脱敏
- 请求地址
/edatasecurity/api/maskdata
- 请求方法
POST
- 请求体
请求体采用JSON格式。格式说明如下,
{ "loginid":{loginid}, // 当前调用数据脱敏接口的人,根据其身份判断是否满足脱敏条件决定是否需要脱敏 "secsystemid":{secsystemid}, // 安全数据源唯一标识 "datasetid":{datasetid}, // 表的id,是表/视图在secsystemid中的唯一名称 "data":'[{"field":"content"}]'// 待脱敏数据数组 } |
- 返回结果
请求地址示例,
POST http://localhost:8080/edatasecurity/api/maskdata
请求体示例,
{ "loginid":"admin", // 当前调用数据加密接口的人,用于记录日志 "secsystemid":"z_tag", // 安全数据源唯一标识 "datasetid":"ZZ.ABI11_BOOK_TYPE", // 表的id,是表/视图在secsystemid中的唯一名称 "data":'[{"CID_":"008","TNAME_":"新类书籍"}]'//待脱敏的数据 } |
返回结果,
{ "status":200, "data":{ "loginid":"admin", // 传入的loginid "secsystemid":"z_tag", // 传入的安全数据源唯一标识 "datasetid":"ZZ.ABI11_BOOK_TYPE", // 传入的datasetid "timestamp":1631695032106, // 执行加密时的时间戳 "costtime":12, // 执行加密耗费的时间 "data":[{ // 数据脱敏以后的数据 "CID_":"***", "TNAME_":"新***" }] } } |
请先登录