ElasticSearch - 包含"not modificable"文档的可审计解决方案?



从这里开始:https://discuss.elastic.co/t/write-only-cluster-index-auditing-porpouse/49494

我正在寻找一种方法来保证写入ES集群的文档不会被更改(或者至少有原始内容的备份)-审计要求。

目前,我可以保护一个快照,即使我也无法修改/删除它。但从上一个快照到现在的时间呢?

你知道保护ES快照的方法吗,这样它就会是"只写"集群:)?


可能的解决方案?:禁止URI:XDELETE,*/_update,但版本号更改的"整个文档更新"怎么办?

实现这一点的一种方法是使用官方的Shield产品,并对要冻结的索引定义只读权限。下面,角色readonly只能读取所有索引,而full具有完全访问权限:

readonly:
  indices:
    - names: '*'
      privileges:
        - read
writer:
  indices:
    - names: '*'
      privileges:
        - read
        - write

UPDATE:write权限允许用户创建、更新和删除文档。有一种更细粒度的特权称为create,它只允许创建/索引新文档,但既不更新也不删除它们。

另一种方法是使用@scarduzio的优秀只读REST插件,配置如下:

readonly:
    enable: true
    response_if_req_forbidden: Sorry, your request is forbidden.
    access_control_rules:
    - name: Read-only audit indices
      type: allow
      actions: [cluster:*, indices:data/read/*]
      indices: ["*"]
writer:
    enable: true
    response_if_req_forbidden: Sorry, your request is forbidden.
    access_control_rules:
    - name: Indexer process
      type: allow
      actions: [cluster:*, indices:data/write/*]
      indices: ["*"]

这种方法的主要优点是,您仍然可以定义另一个能够贡献/索引新文档的角色(例如writer),同时仍然允许其他角色(例如,readonly)是只读的。

来自文档:

cluster.blocks.read_only使整个集群只读(索引不接受写操作),不允许修改元数据(创建或删除索引)。

对于

不要依赖此设置来阻止对群集的更改。任何有权访问cluster-update-settings API的用户都可以使集群再次读写。

您只能禁止对PUT localhost:9200/_cluster/settings的任何呼叫。

最新更新