0

我正在尝试更新(Sentry-secured)Solr 集合中的现有文档。Solr 接受了更新,但是当我查询时,该文档似乎已从集合中消失。

到底是怎么回事?

我正在使用 Cloudera (CDH) 5.8.3 和启用了文档级访问控制的 Sentry。

4

1 回答 1

0

当使用文档级访问控制时,Sentry 使用一个字段(其名称在 中定义solrconfig.secure.xml,但默认为sentry_auth)来确定哪些角色可以看到该文档。

如果您更新了一个文档,但忘记提供一个sentry_auth字段,那么更新后的文档不属于任何角色,所以没有人可以看到它——它实际上变得不可见!这很容易做到,因为该sentry_auth字段通常不是存储字段,因此不会被任何查询返回。

因此,您不能只检索文档、修改字段,然后更新文档——您需要知道该文档属于哪些角色,以便提供正确填充的sentry-auth字段。

您可以sentry_auth在 Solr 模式中将该字段设置为“必需”字段,这将防止您意外忽略它。

但是,这不会阻止您提供空白sentry-auth字段(或提供不正确的角色),其中任何一种都会使文档“消失”。

另请注意,您可以更新您没有文档级别访问权限的文档,前提是您对整个集合具有写访问权限,并且您拥有文档的 ID。这意味着用户可以(有意或无意地)覆盖或删除他们看不到的文档。这是一种设计选择,当用户没有文档级别的访问权限时,他们无法确定特定文档 ID 是否存在。

请参阅 Cloudera 文档:

于 2017-04-04T07:52:31.680 回答