Elasticsearch 限制 delete 操作
in Note with 0 comment
Elasticsearch 限制 delete 操作
in Note with 0 comment

因为现在 es 只有访问权限限制,是没有做操作权限验证,做操作权限验证需要花钱买 X-pack 的许可证,所以导致了 es 这边数据操作是随意的,很容易出现问题。

做一点限制操作是很有必要的。主要限制有:
1、从管理角度出发,限制只有部分人才有资格可以直接操作 es,包括 kibana 等等;
2、从配置角度出发,限制一些操作,主要是 delete 操作。**

这篇文章的主要重点是限制 delete 操作。

1530590747013-edd5240e-2b4b-4ee8-a97b-8b686d2c8637-image.png

上图是微博大V的一次误删,连大V都会手抖和头脑发热,更何况是我们这些小卒。

所以做限制 delete 操作是刻不容缓的。


disable allowing to delete indices via wildcards or _all

禁止通过prefix*, *_all 来删除 index,这部分的配置有两种方法可以实现

方法1:

编辑 elasticsearch.yml,找到下面内容,去掉注释即可

#action.destructive_requires_name: true
// 去掉注释
action.destructive_requires_name: true

方法2:

通过 cluster update settings api 去更新集群配置

PUT _cluster/settings
{
  "persistent": {
    "action.destructive_requires_name": true
  }
}

测试如下:

DELETE bi-capture-event-2018.03.3*

{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "Wildcard expressions or all indices are not allowed"
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "Wildcard expressions or all indices are not allowed"
  },
  "status": 400
}

测试通过。

禁止删除 index 通过prefix*, *_all 是可以避免很多误操作的,例如上面的微博大V如果有配置这个的话,就不会出现这种问题。

现在线上生产集群已经配置这个了。

参考资料

Responses