字段级安全

字段级安全允许您控制用户可以看到哪些文档字段。就像文档级安全一样,您在角色内按索引控制访问权限。

开始使用文档和字段级安全的最简单方法是打开 UDB-SX Dashboards 并选择 安全。然后选择 Ro角色les,创建一个新角色,并查看 索引权限 部分。 .

包含或排除字段

配置字段级安全时,您有两个选项:包含或排除字段。如果选择包含字段,用户在检索文档时只能看到这些字段。例如,如果您包含 actorstitleyear 字段,搜索结果可能如下所示:

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

  1. 选择一个角色并 Add index permission

  2. 选择一个索引模式。

  3. Field level security 下,使用下拉菜单选择您的首选选项。然后指定一个或多个字段并按 Enter 键。

roles.yml

someonerole:
  cluster: []
  indices:
    movies:
      '*':
      - "READ"
      _fls_:
      - "~actors"
      - "~title"
      - "~year"

REST API

请参阅创建角色

与多个角色的交互

如果您将用户映射到多个角色,我们建议这些角色对每个索引使用包含或排除语句。Security 插件使用 AND 运算符评估字段级安全设置,因此结合包含和排除语句可能导致两种行为都无法正常工作。

例如,在 movies 索引中,如果您在一个角色中包含 actorstitleyear,在另一个角色中排除 actorstitlegenres,然后将这两个角色映射到同一个用户,搜索结果可能如下所示:

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

与文档级安全的交互