我正在索引Elastic搜索中的一些数据以加快搜索速度。在当前系统(Oracle)中,对特定列的访问由以下表控制:
Data Table (this would become Elastic document) :
Group ADDRESS FIRSTNAME LASTNAME STATE
ABC 123 Road Champ Kemp AZ
ABC 213 Road Lamp Kent TX
XYZ 456 Road Jamp Keen AZ
DEF 128 Road Mamp Keith CA
Access Contorl Table :
User Group ADDRESS FIRSTNAME LASTNAME STATE
A ABC Y Y N Y
A XYZ Y Y N Y
B ABC N Y N Y
B XYZ Y N N Y
这意味着用户A将有权访问属于ABC组的项目的ADDRESS字段,但用户B不会。所以基本上对于用户A,字段ADDRESS可以在具有组ABC的文档中搜索,但不能用于用户B.
通过使用连接很容易在Oracle中控制它,但是当我必须处理Elastic Search文档时,如何实现相同的功能呢?
您可以使用X-Pack(商业许可证)中提供的field and document level access control。这是一篇关于这个主题的文章:https://www.elastic.co/blog/securing-fields-and-documents-with-shield
还有一个名为SearchGuard的插件提供了类似的功能。这是另一篇关于这个主题的文章:https://floragunn.com/document-field-level-security-search-guard/
更新(2019年3月11日):
从今天开始,亚马逊发布了一个带有安全(和警报)插件的完全开源的Elasticsearch版本。更多信息:https://opendistro.github.io/for-elasticsearch/
更新(2019年5月20日):
从版本6.8.0和7.1.0开始,XPack Security的一些功能现在是included into the BASIC license,因此是免费的。