字段掩码

如果您不想使用字段级安全从文档中移除字段,可以对其值进行掩码。目前,字段掩码仅适用于基于字符串的字段,并用加密哈希替换字段的值。

字段掩码与字段级安全在相同的每个角色、每个索引的基础上协同工作。您可以允许某些角色以明文查看敏感字段,而对其他角色进行掩码。带有掩码字段的搜索结果可能如下所示:

{
  "_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

  1. 选择一个角色。

  2. 选择一个索引权限。

  3. 对于 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

对审计日志的影响

“读取历史”功能可以帮你记录谁查看了文档里的敏感字段,比如客户记录中的邮箱。被脱敏(掩码)的字段不会留下读取记录,因为用户看到的只是哈希值,并非原文。