ES用户验证

ES用户验证

ES的五个内置用户

五个内置用户:

elastic super_user

kibana_system 用户Kibana用来连接Elasticsearch并与之通信

logstash_system Logstash用户在将监控信息存储在Elasticsearch中时使用

beats_system Beats在Elasticsearch中存储监视信息时使用的用户

**apm_system**APM服务器在Elasticsearch中存储监视信息时使用的用户

remote_monitoring_user Metricbeat用户在Elasticsearch中收集和存储监视信息时使用

基本用户验证机制

Realms

Elastic Stack 通过使用realms对用户进行身份验证。

realm用于基于身份验证标记解析和验证用户,在es中提供了以下内置realm:

  • native 支持集群本地用户名和密码形式的身份验证,在没有显示配置realm时默认可用
  • ldap 使用外部LDAP服务器进行身份验证,需要显示配置才能使用
  • active_directory 使用外部active_directory服务器进行身份验证,需要显示配置才能使用
  • pki 使用PKI进行身份验证,需要显示配置
  • file 使用集群本地文件的用户进行身份验证,始终可用
  • saml SAML 2.0 Web SSO
  • kerberos Kerberos
  • oidc 使用 OpenID 连接实现身份验证的realm,它使 Elasticsearch 成为 OpenID 连接依赖方(RP) ,并在 Kibana 提供单点登录(SSO)支持

内部realm(支持基于本地集群上的身份验证):nativefile
外部realm(可使用外部服务器进行身份验证):ldap,active_directory,pki,saml,kerberos,oidc

Realm Chain

Realm chain本质上是已配置的realm的优先级列表,多个realm上可能存在多个相同的用户,配置realm chain可以确保用户验证按照优先级验证

xpack.security.authc.realms:
  file.file1:
      order: 0

  native.native1:
      order: 1

  ldap.ldap1:
      order: 2
      enabled: false
      url: 'url_to_ldap1'
      ...

  ldap.ldap2:
      order: 3
      url: 'url_to_ldap2'
      ...

  active_directory.ad1:
      order: 4
      url: 'url_to_ad'

不同realm的详细配置参数可以参照官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.10/security-settings.html#ref-realm-settings

file realm

文件目录

es集群在启动会时读取ES_PATH_CONF下的users和users_roles文件,且会每五秒检查这些文件是否更改。

ES_PATH_CONF/users

rdeniro:$2a$10$BBJ/ILiyJ1eBTYoRKxkqbuDEdYECplvxnqQ47uiowE7yGqvCEgj9W
alpacino:$2a$10$cNwHnElYiMYZ/T3K4PvzGeJ1KbpXZp2PfoQD.gfaVdImnHOwIuBKS
jacknich:{PBKDF2}50000$z1CLJt0MEFjkIK5iEfgvfnA6xq7lF25uasspsTKSo5Q=$XxCVLbaKDimOdyWgLCLJiyoiWpA/XDMe/xtVgn1r5Sg=

用户文件存储所有用户及其密码。文件中的每一行代表一个单独的用户条目,其中包含用户名和经过散列和加盐处理的密码。

ES_PATH_HOME/users_roles

admin:rdeniro
power_user:alpacino,jacknich
user:jacknich

每一行都将一个角色映射到一个以逗号分隔的列表,该列表包含与该角色关联的所有用户。

用户操作

通常使用**ES_HOME/bin/elasticsearch-users**进行 单个节点下 用户的添加、删除等操作,在进行用户添加后,需要确保所有集群节点进行相同的更改。

bin/elasticsearch-users
([useradd <username>] [-p <password>] [-r <roles>]) | #用户添加
([list] <username>) | #查看文件用户
([passwd <username>] [-p <password>]) | #重置用户密码
([roles <username>] [-a <roles>] [-r <roles>]) | #定义用户角色
([userdel <username>]) #用户删除

native realm

native realm是管理和验证用户最简单的方法,可以使用RESET API和Kibana进行用户操作

配置native realm

在没用显示配置realm和realmchain时,默认情况下native realm是可用的,如果在elasticsearch.yml中显示配置了其他realm,则必须将native realm添加到realm chain中

xpack.security.authc.realms:
  native.native1:
      order: 0
ES USERS API

  • 用户创建
POST /_security/user/<username>
PUT/_ security/user/< username >

Example:

POST /_security/user/jacknich
{
  "password" : "j@rV1s",
  "roles" : [ "admin", "other_role1" ],
  "full_name" : "Jack Nicholson",
  "email" : "jacknich@example.com"
}

------返回值
{
  "created": true //更新已存在的user时,返回false
}
  • 更改密码
POST /_security/user/_password
POST /_security/user/<username>/_password
------
返回值
{}
  • 删除用户
DELETE /_security/user/<username>

------返回值
{
  "found" : true
}
  • enable\disable用户
PUT /_security/user/<username>/_enable[_diable]
  • GET
GET /_security/user
GET /_security/user/<username>

ex:
GET /_security/user/jacknich

{
  "jacknich": {
    "username": "jacknich",
    "roles": [
      "admin", "other_role1"
    ],
    "full_name": "Jack Nicholson",
    "email": "jacknich@example.com",
    "metadata": { "intelligence" : 7 },
    "enabled": true
  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值