字段掩码
如果您不想使用字段级安全性从文档中删除字段,您可以遮蔽其值。目前,字段遮蔽仅适用于基于字符串的字段,并将其值替换为加密哈希。
字段遮蔽与字段级安全性协同工作,基于相同的每个角色、每个索引的原则。您可以允许某些角色以明文形式查看敏感字段,并对其他角色遮蔽它们。带有遮蔽字段的搜索结果可能如下所示
{
"_index": "movies",
"_source": {
"year": 2013,
"directors": [
"Ron Howard"
],
"title": "ca998e768dd2e6cdd84c77015feb29975f9f498a472743f159bec6f1f1db109e"
}
}
设置盐值
您可以在 opensearch.yml
中使用可选的 plugins.security.compliance.salt
设置来配置盐值(用于哈希您的数据的随机字符串)。盐值必须满足以下要求
- 必须至少包含 16 个字符。
- 仅使用 ASCII 字符。
以下示例显示了一个盐值
plugins.security.compliance.salt: abcdefghijklmnop
尽管设置盐值是可选的,但强烈建议这样做。
配置字段遮蔽
您可以使用 OpenSearch Dashboards、roles.yml
或 REST API 配置字段遮蔽。
OpenSearch Dashboards
- 选择一个角色。
- 选择一个索引权限。
- 对于匿名化,指定一个或多个字段,然后按 Enter 键。
roles.yml
someonerole:
index_permissions:
- index_patterns:
- 'movies'
allowed_actions:
- read
masked_fields:
- "title"
- "genres"
REST API
参见创建角色。
(高级)使用替代哈希算法
默认情况下,安全插件使用 BLAKE2b 算法,但您可以使用 JVM 提供的任何哈希算法。此列表通常包括 MD5、SHA-1、SHA-384 和 SHA-512。
您可以在 opensearch.yml
中使用可选的默认遮蔽算法设置 plugins.security.masked_fields.algorithm.default
来覆盖默认算法,如以下示例所示
plugins.security.masked_fields.algorithm.default: SHA-256
OpenSearch 3.x 包含一个错误修复,以正确应用默认的 BLAKE2b 算法。您可以在 OpenSearch 3.x 中覆盖默认算法,以继续在 opensearch.yml
中使用可选的默认遮蔽算法设置 plugins.security.masked_fields.algorithm.default
来生成与 OpenSearch 1.x 和 2.x 相同的遮蔽值,如以下示例所示
plugins.security.masked_fields.algorithm.default: BLAKE2B_LEGACY_DEFAULT
要指定不同的算法,请在 roles.yml
中遮蔽字段后添加它,如下所示
someonerole:
index_permissions:
- index_patterns:
- 'movies'
allowed_actions:
- read
masked_fields:
- "title::SHA-512"
- "genres"
(高级)基于模式的字段遮蔽
除了创建哈希值,您还可以使用一个或多个正则表达式和替换字符串来遮蔽字段。语法为 <field>::/<regular-expression>/::<replacement-string>
。如果您使用多个正则表达式,结果将从左到右传递,就像在 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
。
对审计日志的影响
读取历史功能允许您追踪对文档中敏感字段的读取访问。例如,您可能追踪对客户记录中电子邮件字段的访问。对遮蔽字段的访问将从读取历史中排除,因为用户只看到了字段的哈希值,而不是明文值。