在这里插入图片描述

一、新建 ELK 相关用户组

由于后续要将 LDAP 的用户与 ELK 的角色进行映射,所以需先创建几个以 ELK 的角色命名的用户组。

步骤如下

  1. 创建 elk.ldif 文件并编辑内容:
vim elk.ldif

elk.ldif 文件中添加以下内容:

dn: ou=elk,ou=Group,dc=aex,dc=com
ou: elk
objectClass: organizationalUnit
objectClass: top

dn: cn=superuser,ou=elk,ou=Group,dc=aex,dc=com
objectClass: top
objectClass: groupOfUniqueNames
cn: superuser
uniqueMember: cn=lichunlin,ou=People,dc=aex,dc=com

dn: cn=kibana_system,ou=elk,ou=Group,dc=aex,dc=com
objectClass: top
objectClass: groupOfUniqueNames
cn: kibana_system
uniqueMember: cn=zengxiaoyan,ou=People,dc=aex,dc=com

dn: cn=logs_viewer,ou=elk,ou=Group,dc=aex,dc=com
objectClass: top
objectClass: groupOfUniqueNames
cn: logs_viewer
uniqueMember: cn=zhangsan,ou=People,dc=aex,dc=com
  1. elk.ldif 文件中的内容添加到 LDAP 中:
ldapadd -x -D "cn=root,dc=aex,dc=com" -W -f elk.ldif

二、配置 Elasticsearch

2.1 修改 elasticsearch.yml 配置

为增加 LDAP 验证,需在 elasticsearch.yml文件中新增以下内容:

vim /usr/local/elk/elastic/config/elasticsearch.yml

在文件中添加:

xpack:
  security:
    authc:
      realms:
        ldap:
          ldap1:
            order: 0
            url: "ldap://192.168.0.12:389"
            bind_dn: "cn=root, dc=aex, dc=com"
            user_search:
              base_dn: "dc=aex,dc=com"
              filter: "(cn={0})"
            group_search:
              base_dn: "dc=aex,dc=com"
            files:
              role_mapping: "/usr/local/elk/elastic/config/role_mapping.yml"
            unmapped_groups_as_roles: false

出于安全考虑,LDAP 的管理员账号不在 elasticsearch.yml 配置文件中配置,而是使用 elasticsearch-keystore 进行存储。

注意事项
使用 Elasticsearch 的运行用户执行 elasticsearch-keystore 命令,若使用 root 用户运行,会改变配置文件中 elasticsearch-keystore 的属主,导致 Elasticsearch 启动失败。

/usr/local/elk/elastic/bin/elasticsearch-keystore add xpack.security.authc.realms.ldap.ldap1.secure_bind_password

2.2 使用 API 接口建立角色和用户映射

示例 1:超级用户

  • 接口/_security/role_mapping/superuser
  • 请求头Content-Type: application/json
  • 请求体
{
  "roles": ["superuser"],
  "rules": { "field": {
    "groups": "cn=superuser,ou=elk,ou=Group,dc=aex,dc=com"
  } },
  "enabled": true
}

示例 2:普通用户

  • 接口/_security/role_mapping/logs_viewer
  • 请求头Content-Type: application/json
  • 请求体
{
  "roles": ["logs_viewer", "kibana_user"],
  "rules": { "field": {
    "groups": "cn=logs_viewer,ou=elk,ou=Group,dc=aex,dc=com"
  } },
  "enabled": true
}

可在 Kibana 上查看映射关系:
在这里插入图片描述

三、Kibana 验证用户登录

  • 超级用户登录示例
    在这里插入图片描述

  • 普通用户登录示例
    在这里插入图片描述

  • 登录验证界面示例
    在这里插入图片描述
    在这里插入图片描述

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐