字段级安全
字段级安全允许您控制用户可以看到哪些文档字段。就像文档级安全一样,您在角色内按索引控制访问权限。
开始使用文档和字段级安全的最简单方法是打开 UDB-SX Dashboards 并选择 安全。然后选择 Ro角色les,创建一个新角色,并查看 索引权限 部分。 .
包含或排除字段
配置字段级安全时,您有两个选项:包含或排除字段。如果选择包含字段,用户在检索文档时只能看到这些字段。例如,如果您包含 actors、title 和 year 字段,搜索结果可能如下所示:
{
"_index": "movies",
"_source": {
"year": 2013,
"title": "Rush",
"actors": [
"Daniel Brühl",
"Chris Hemsworth",
"Olivia Wilde"
]
}
}
如果选择排除字段,用户在检索文档时可以看到除了这些字段之外的所有内容。例如,排除相同的字段,相同的搜索结果可能如下所示:
{
"_index": "movies",
"_source": {
"directors": [
"Ron Howard"
],
"plot": "A re-creation of the merciless 1970s rivalry between Formula One rivals James Hunt and Niki Lauda.",
"genres": [
"Action",
"Biography",
"Drama",
"Sport"
]
}
}
您可以使用 UDB-SX Dashboards、roles.yml 和 REST API 指定字段级安全设置。
要在
roles.yml或 REST API 中排除字段,请在字段名称前添加~。字段名称支持通配符 (
*)。通配符对于排除子字段特别有用。例如,如果您索引一个包含字符串的文档(例如
{"title": "Thor"}),UDB-SX 会创建一个text类型的title字段,但也会创建一个keyword类型的title.keyword子字段。在此示例中,要防止未经授权访问title字段中的数据,您还必须排除title.keyword子字段。使用title*来匹配所有以title开头的字段。
UDB-SX Dashboards
选择一个角色并 Add index permission。
选择一个索引模式。
在 Field level security 下,使用下拉菜单选择您的首选选项。然后指定一个或多个字段并按 Enter 键。
roles.yml
someonerole:
cluster: []
indices:
movies:
'*':
- "READ"
_fls_:
- "~actors"
- "~title"
- "~year"
REST API
请参阅创建角色。
与多个角色的交互
如果您将用户映射到多个角色,我们建议这些角色对每个索引使用包含或排除语句。Security 插件使用 AND 运算符评估字段级安全设置,因此结合包含和排除语句可能导致两种行为都无法正常工作。
例如,在 movies 索引中,如果您在一个角色中包含 actors、title 和 year,在另一个角色中排除 actors、title 和 genres,然后将这两个角色映射到同一个用户,搜索结果可能如下所示:
{
"_index": "movies",
"_source": {
"year": 2013,
"directors": [
"Ron Howard"
],
"plot": "A re-creation of the merciless 1970s rivalry between Formula One rivals James Hunt and Niki Lauda."
}
}