如何在 Elasticsearch 中进行权限管理和认证?

Sherwin.Wei Lv8

如何在 Elasticsearch 中进行权限管理和认证?

回答重点

在 Elasticsearch 中进行权限管理和认证,通常通过设置和配置 X-Pack 进行。X-Pack 是 Elastic 提供的一套增强功能,其中包含了安全性模块,能够提供认证、授权、加密和审计等多种安全功能。具体步骤如下:

1)安装与启用 X-Pack:Elasticsearch 从 7.1 版本开始,已经默认包含 X-Pack,因此无需单独安装,只需启用配置即可。
2)用户和角色的管理:通过内置的用户管理和角色管理 API,可以创建和管理用户与其角色。角色定义了访问权限,并将角色分配给用户。
3)定义权限策略:配置角色所拥有的权限,设定其可以访问的索引、文档和字段级别的权限。
4)配置认证方式:支持多种认证方式,如用户名密码、LDAP、Kerberos、SAML 等,可以选择合适的认证方式并进行配置。
5)使用 Kibana 管理:通过 Kibana 的 Management 页面,可以方便地进行用户和角色的管理操作。

扩展知识

1)安装与启用 X-Pack

  • Elasticsearch 默认内置 X-Pack,只需在 elasticsearch.yml 中配置以下内容启用:
    1
    xpack.security.enabled: true

2)用户和角色的管理

  • 创建用户示例:
    1
    2
    3
    4
    5
    6
    7
    POST /_security/user/john
    {
    "password" : "password123",
    "roles" : [ "admin" ],
    "full_name" : "John Doe",
    "email" : "john.doe@example.com"
    }
  • 创建角色示例:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    POST /_security/role/limited_user
    {
    "cluster" : [ "monitor" ],
    "indices" : [
    {
    "names" : [ "index1", "index2" ],
    "privileges" : [ "read" ],
    "field_security" : {
    "grant" : [ "title", "content" ]
    }
    }
    ]
    }

3)定义权限策略

  • 权限可以包括集群级别的权限(如 monitor)、索引级别的权限(如 readwrite),甚至可以细化到字段级别。
  • 可以基于 API 配置这些权限,确保用户只能访问他们被允许访问的资源。

4)配置认证方式

  • 多种认证方式可以在 elasticsearch.yml 中配置:
    1
    2
    3
    4
    5
    6
    7
    8
    xpack.security.authc.realms:
    native.native1:
    order: 0
    ldap.ldap1:
    order: 1
    url: "ldap://ldap.example.com:389"
    bind_dn: "cn=admin,dc=example,dc=com"
    user_search.base_dn: "ou=users,dc=example,dc=com"
  • 对于 SAML 等复杂认证方式,可以参考官方文档,进行详细配置。

5)使用 Kibana 管理

  • Kibana 提供的 Management 界面非常直观,允许管理员在图形界面中管理用户和角色,避免通过 API 操作的不便。
  • 通过 Kibana 的 Role Management 界面,管理员可以创建和修改角色,并分配权限,非常适合没有使用 API 习惯的用户。
Comments
On this page
如何在 Elasticsearch 中进行权限管理和认证?