安全限制
编辑安全限制
编辑插件
编辑Elasticsearch 的插件架构在可扩展性方面非常灵活。虽然它为 Elasticsearch 带来了各种各样的(通常是自定义的)附加功能,但在安全性方面,这种高度的可扩展性是有代价的。我们无法控制第三方插件的代码(开源或非开源),因此我们无法保证它们符合 Elastic Stack 的安全功能。因此,在启用了安全功能的集群上,不正式支持第三方插件。
通配符行为的更改
编辑启用了安全功能的 Elasticsearch 集群将 _all
和其他通配符应用于当前用户具有权限的数据流、索引和别名,而不是集群上的所有数据流、索引和别名。
多文档 API
编辑当尝试访问用户无权访问的不存在的索引时,多获取和多词向量 API 会抛出 IndexNotFoundException。这样做会泄露有关数据流或索引不存在的信息,而用户无权知道这些数据流或索引的任何信息。
已过滤的索引别名
编辑由于使用别名时可能会泄露索引和字段名称中描述的限制,包含过滤器的别名不是限制对单个文档的访问的安全方法。Elastic Stack 安全功能通过文档级安全性功能提供了限制对文档访问的安全方法。
字段和文档级别安全限制
编辑当用户的角色为数据流或索引启用文档或字段级安全性时
-
用户无法执行写入操作
- 不支持更新 API。
- 不支持批量请求中包含的更新请求。
-
用户无法执行有效使内容以另一个名称访问的操作,包括来自以下 API 的操作
-
如果以下任一情况为真,则搜索请求的请求缓存将被禁用
当用户的角色为数据流或索引启用文档级安全性时
- 文档级安全性不影响相关性评分使用的全局索引统计信息。这意味着计算分数时不考虑角色查询。不匹配角色查询的文档永远不会返回。
has_child
和has_parent
查询不支持作为角色定义中的查询参数。has_child
和has_parent
查询可以在启用文档级安全性的搜索 API 中使用。-
日期数学表达式不能在带有日期字段的范围查询中包含
now
-
不支持任何进行远程调用以获取查询数据的查询,包括以下查询
-
具有术语查找的
terms
查询 -
具有索引形状的
geo_shape
查询 -
percolate
查询
-
具有术语查找的
- 如果指定了建议器并启用了文档级安全性,则指定的建议器将被忽略。
- 如果启用了文档级安全性,则无法对搜索请求进行分析。
- 如果启用了文档级安全性,则术语枚举 API 不会返回术语。
multi_match
查询不支持使用通配符指定字段。
虽然文档级安全性阻止用户查看受限制的文档,但仍然可以编写返回有关整个索引的聚合信息的搜索请求。对索引中特定文档的访问受到限制的用户仍然可以了解仅在无法访问的文档中存在的字段名称和术语,并计算有多少无法访问的文档包含给定的术语。
使用别名时可能会泄露索引和字段名称
编辑在别名上调用某些 Elasticsearch API 可能会泄露有关用户无权访问的索引的信息。例如,当您使用 _mapping
API 获取别名的映射时,响应会包括别名应用到的每个索引的索引名称和映射。
在解决此限制之前,请避免使用包含机密或敏感信息的索引和字段名称。
LDAP 领域
编辑LDAP 领域当前不支持发现嵌套的 LDAP 组。例如,如果用户是 group_1
的成员,并且 group_1
是 group_2
的成员,则只会发现 group_1
。但是,Active Directory 领域支持传递组的成员资格。
用户和 API 密钥的资源共享检查
编辑异步搜索和滚动请求的结果可以由提交初始请求的同一用户或 API 密钥稍后检索。验证过程包括比较用户名、身份验证领域类型和(对于文件或本机以外的领域)领域名称。如果使用 API 密钥提交请求,则只有该密钥才能检索结果。此逻辑还有一些限制
- 两个不同的领域可以在不同的节点上具有相同的名称。这不是配置领域的推荐方法,因此资源共享检查不会尝试检测此不一致性。
- 可以重命名领域。当您提交异步搜索或滚动,然后重命名领域并尝试检索结果时,这可能会导致资源共享检查的不一致性。因此,应谨慎处理更改领域名称,因为它可能会导致不仅仅是资源共享检查的复杂情况。
- 对于某些外部身份验证提供程序支持的领域,用户名是动态计算的。例如,用户名可以从 LDAP 领域中 DN 的一部分派生出来。从理论上讲,来自外部系统的两个不同用户可能会映射到同一个用户名。我们的建议是首先避免这种情况。因此,资源共享检查不考虑这种潜在的差异。