字段掩码
如果您不想使用字段级安全从文档中移除字段,可以对其值进行掩码。目前,字段掩码仅适用于基于字符串的字段,并用加密哈希替换字段的值。
字段掩码与字段级安全在相同的每个角色、每个索引的基础上协同工作。您可以允许某些角色以明文查看敏感字段,而对其他角色进行掩码。带有掩码字段的搜索结果可能如下所示:
{
"_index": "movies",
"_source": {
"year": 2013,
"directors": [
"Ron Howard"
],
"title": "ca998e768dd2e6cdd84c77015feb29975f9f498a472743f159bec6f1f1db109e"
}
}
设置 salt 值
您可以使用可选的 plugins.security.compliance.salt 设置在 udbsx.yml 中设置 salt 值(用于哈希数据的随机字符串)。 salt 值必须满足以下要求:
必须至少 16 个字符。
仅使用 ASCII 字符。
以下示例显示了一个 salt 值:
plugins.security.compliance.salt: abcdefghijklmnop
虽然设置 salt 值是可选的,但强烈推荐这样做。
配置字段掩码
您可以使用 UDB-SX Dashboards、roles.yml 或 REST API 配置字段掩码。
UDB-SX Dashboards
选择一个角色。
选择一个索引权限。
对于 Anonymization,指定一个或多个字段并按 Enter 键。
roles.yml
someonerole:
index_permissions:
- index_patterns:
- 'movies'
allowed_actions:
- read
masked_fields:
- "title"
- "genres"
REST API
请参阅创建角色。
(高级)使用替代哈希算法
默认情况下,Security 插件使用 BLAKE2b 算法,但您可以使用 JVM 提供的任何哈希算法。此列表通常包括 MD5、SHA-1、SHA-384 和 SHA-512。
您可以在 udbsx.yml 中使用默认掩码算法设置 plugins.security.masked_fields.algorithm.default 覆盖默认算法,如下例所示:
plugins.security.masked_fields.algorithm.default: SHA-256
要指定不同的算法,请在 roles.yml 中的掩码字段后添加它,如下所示:
someonerole:
index_permissions:
- index_patterns:
- 'movies'
allowed_actions:
- read
masked_fields:
- "title::SHA-512"
- "genres"
(高级)基于模式的字段掩码
您可以使用一个或多个正则表达式和替换字符串来掩码字段,而不是创建哈希。语法是 <field>::/<正则表达式>/::<替换字符串>。如果您使用多个正则表达式,结果会从左到右传递,就像 shell 中的管道一样,如下例所示:
hr_employee:
index_permissions:
- index_patterns:
- 'humanresources'
allowed_actions:
- read
masked_fields:
- 'lastname::/.*/::*'
- '*ip_source::/[0-9]{1,3}$/::XXX::/^[0-9]{1,3}/::***'
someonerole:
index_permissions:
- index_patterns:
- 'movies'
allowed_actions:
- read
masked_fields:
- "title::/./::*"
- "genres::/^[a-zA-Z]{1,3}/::XXX::/[a-zA-Z]{1,3}$/::YYY"
title 语句将字段中的每个字符更改为 *,因此您仍然可以辨别掩码字符串的长度。genres 语句将字符串的前三个字符更改为 XXX,最后三个字符更改为 YYY。
对审计日志的影响
“读取历史”功能可以帮你记录谁查看了文档里的敏感字段,比如客户记录中的邮箱。被脱敏(掩码)的字段不会留下读取记录,因为用户看到的只是哈希值,并非原文。