小强哥博客

小强哥,小强哥博客,技术大咖

在ElasticSearch6中配置Search Guard6(二)

在http://xiaoqiangge.com/aritcle/1536058241842.html一文中介绍了如何配置Search Guard6,这文章来介绍如何配置Search Guard6权限。

Search Guard6提供了两种权限管理方式,第一种是restful API方式;第二种方式是sgadmin方式。

在es安装目录下/usr/share/elasticsearch/plugins/search-guard-6/sgconfig存在了所有关于权限的管理文件,如:

-rw-r--r-- 1 root root 9499 Aug 23 08:38 elasticsearch.yml.example
-rw-r--r-- 1 root root 2367 Aug 23 08:38 sg_action_groups.yml
-rw-r--r-- 1 root root 9629 Aug 23 08:38 sg_config.yml
-rw-r--r-- 1 root root  489 Aug 30 02:36 sg_internal_users.yml
-rw-r--r-- 1 root root 2535 Aug 29 10:05 sg_roles.yml
-rw-r--r-- 1 root root  268 Aug 29 10:06 sg_roles_mapping.yml

sg_internal_users.yml存放用户数据,如:

#password is: admin
admin:
  readonly: true
  hash: $2a$12$VcCDgh2NDk07JGN0rjGbM.Ad41qVR/YFJcgHp0UGns5JDymv..TOG
  roles:
    - admin
  attributes:
    #no dots allowed in attribute names
    attribute1: value1
    attribute2: value2
    attribute3: value3

#password is: logstash
logstash:
  hash: $2a$12$u1ShR4l4uBS3Uv59Pa2y5.1uQuZBrZtmNfqB3iM/.jL0XoV9sghS2
  roles:
    - logstash
  • admin * :用户名。
  • readonly:是否可以通过restapi进行管理,如果设置为true则在restapi上不能操作该数据。
  • hash * :加密后的密码,通过/usr/share/elasticsearch/plugins/search-guard-6/tools/hash.sh生成密码。
  • roles:为sg_roles_mapping中backendroles的名字,可以将roles设置为一个集合。

标*为必须,其它字段可以不用设置。

sg_roles_mapping.yml存放角色和用户关系数据,如:

sg_all_access:
  readonly: true
  backendroles:
    - admin

sg_logstash:
  backendroles:
    - logstash

sg_kibana_server:
  readonly: true
  users:
    - kibanaserver

sg_all_access * :角色名字。 readonly:同上。 backendroles:我理解为角色的别名,和sg_internal_users中roles节点数据对应。 users:要绑定的用户。

注:1、backendroles和users必须二选一,否则权不起作用;2、角色名就是sg_all_access或者sg_logstash,它必须和sg_roles.yml文件中的角色名一致,否则权限不起做用。

sg_roles.yml存放角色权限数据,如:

sg_all_access:
  readonly: true
  cluster:
    - UNLIMITED
  indices:
    '*':
      '*':
        - UNLIMITED
  tenants:
    admin_tenant: RW

# Read all, but no write permissions
sg_readall:
  readonly: true
  cluster:
    - CLUSTER_COMPOSITE_OPS_RO
  indices:
    '*':
      '*':
        - READ
  • sg_all_access:为角色名。
  • readonly:同上。
  • cluster:集群操作权限。
  • indices:索引操作权限。
  • indices中第一级:索引名字。
  • indices中第二级:索引中Type名字。
  • indices中第三级:索引的操作权限。

更多权限设置可以参考https://docs.search-guard.com/latest/action-groups

sg_action_groups.yml存放权限组数据,如:

UNLIMITED:
  readonly: true
  permissions:
    - "*"

###### INDEX LEVEL ######

INDICES_ALL:
  readonly: true
  permissions:
    - "indices:*"

# for backward compatibility
ALL:
  readonly: true
  permissions:
    - INDICES_ALL

这文件基本上不会动,所以就不多说了。

restapi操作权限可以参考https://docs.search-guard.com/latest/rest-api官方文档说明的很详细,就不一一列举了。

sgadmin设置权限可以参考https://docs.search-guard.com/latest/sgadmin说的也比较详细,也就不一一列举了。