Elasticsearch 用户管理

这篇具有很好参考价值的文章主要介绍了Elasticsearch 用户管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

常见内置用户

  • elastic:一个内置的超级用户。密码在我们安装的时候就生成了。
  • kibana_system:Kibana 用来与 Elasticsearch 连接和通信的用户。
  • logstash_system:Logstash 在 Elasticsearch 中存储监控信息时使用的用户。
  • beats_system:Beats 在 Elasticsearch 中存储监控信息时使用的用户。
  • apm_system:APM 服务器在 Elasticsearch 中存储监控信息时使用的用户。
  • remote_monitoring_user:Metricbeat 在 Elasticsearch 中收集和存储监控信息时使用的用户。它具有remote_monitoring_agent和 remote_monitoring_collector内置角色。

这些内置用户存储在一个特殊的.security索引中,该索引由 Elasticsearch 管理。如果内置用户被禁用或其密码发生更改,更改会自动反映在集群中的每个节点上。但是,如果你的.security索引被删除或从快照恢复,你应用的任何更改都将丢失。

常用内置角色

  • editor 授予对 Kibana 中所有功能(包括解决方案)的完全访问权限和对数据索引的只读访问权限。
  • kibana_admin 授予对 Kibana 中所有功能的访问权限。
  • superuser 授予对集群管理和数据索引的完全访问权限。
  • viewer 授予对 Kibana 中所有功能(包括解决方案)和数据索引的只读访问权限。

内置角色请查看官网 内置角色

权限列表

集群权限

  • monitor 所有集群只读操作,如集群运行状况和状态、热线程、节点信息、节点和集群统计信息以及挂起的集群任务。
  • manage基于monitor并添加更改集群中值的集群操作。这包括快照、更新设置和重新路由。它还包括获取快照和恢复状态。此特权不包括管理安全性的能力。
  • all 所有集群管理操作,如快照、节点关闭/重启、设置更新、重新路由或管理用户和角色。

索引权限

  • all 对索引或数据流的任何操作
  • manage 所有monitor权限加上索引和数据流管理(别名、分析、清除缓存、关闭、删除、存在、刷新、映射、打开、字段功能、强制合并、刷新、设置、搜索分片、验证查询)。

Elastic权限列表请查看官网 权限列表

修改账号密码

使用命令行修改密码

忘记 elastic 账号的密码,可通过 elasticsearch-reset-password 命令行工具进行修改

bin/elasticsearch-reset-password
[-a, --auto] [-b, --batch] [-E <KeyValuePair]
[-f, --force] [-h, --help] [-i, --interactive]
[-s, --silent] [-u, --username] [--url] [-v, --verbose]

-a, --auto
将指定用户的密码重置为自动生成的强密码。(默认)
-b, --batch
运行重置密码过程而不提示用户进行验证。
-E <KeyValuePair>
配置标准 Elasticsearch 或 X-Pack 设置。
-f, --force
强制命令针对不健康的集群运行。
-h, --help
返回所有命令参数。
-i, --interactive
提示指定用户的密码。使用此选项可以明确设置密码。(交互式输入)
-s --silent
在控制台中显示最少的输出。
-u, --username
本机领域用户或内置用户的用户名。
--url
指定工具用于向 Elasticsearch 提交 API 请求的基本 URL(主机名和本地节点的端口)。默认值由文件中的设置确定 elasticsearch.yml。如果xpack.security.http.ssl.enabled设置为true,则必须指定 HTTPS URL。
-v --verbose
在控制台中显示详细输出。

比如修改 elastic 账号密码

./elasticsearch-reset-password -u elastic

此操作会为elastic账号自动生成强密码,如果需要自定义,可以添加 -i 参数

使用 REST API 修改密码

POST /_security/user/_password

POST /_security/user/<username>/_password

路径参数编辑
username
(可选,字符串)您要更改其密码的用户。如果不指定此参数,则更改当前用户的密码。

请求正文编辑
password
(字符串)新密码值。密码长度必须至少为 6 个字符。
password_hash
(字符串)新密码值的哈希值。这必须使用与为密码存储配置(xpack.security.authc.password_hashing.algorithm)的相同的散列算法来生成。
password和password_hash必须二选一

本文推荐使用命令行的方式来修改密码

获取访问令牌

通过令牌访问,是 elastic 的一项付费功能…,本人也是研究了半天,接口、配置、请求参数都是正确的,可就是报没有提供认证信息(missing authentication credentials for REST request [/_security/oauth2/token])或者当前的许可证不符合(current license is non-compliant for [security tokens]),所以此接口咱就不纠结了…

点击查看开源与付费支持的功能对比

获取访问令牌是REST API操作,用于获取 Elastic 的访问令牌(access_token),此接口还会返回一个刷新令牌(refresh_token),access_token 默认有效期为20分钟,refresh_token 有效期为 24 小时,refresh_token 可以用于刷新access_token。

通过xpack.security.authc.token.enabled 设置是否可以生成访问令牌,当我们启动 ssl时,此设置是默认启用的。

可以通过 xpack.security.authc.token.timeout 设置 access_token有效期,最长为1小时,默认为 20m

REST API 获取令牌

POST /_security/oauth2/token

{
	"grant_type":"password",
	"username":"用户名",
	"password":"密码"
}
  • grant_type 表示授权类型,可选值为:client_credentials(该授权类型实现了 OAuth2 的客户端凭证授权)、_kerberos(此授权类型在内部受支持并实现基于 SPNEGO 的 Kerberos 支持)、password(用户名密码方式授权)、refresh_token(使用刷新令牌获取新的令牌)
  • username:用户名
  • password:密码
  • kerberos_ticket:如果类型为_kerberos,则必须。base64 编码的 kerberos 票证
  • scope:可选参数,表示令牌的范围

如果类型为:password,则username 和 password 则为必须

返回信息包括,access_token、refresh_token、以及失效时间等

使用Postman或Apifox等http请求工具认证

使用 Postman 等http请求工具验证 REST API 时,请使用请求头设置添加账号密码来通过认证

设置Auth参数

设置时请选择 Basic Auth
elasticsearch角色管理,人在江湖之Elasticsearch,elasticsearch,用户管理,elastic,修改密码,权限角色
elasticsearch角色管理,人在江湖之Elasticsearch,elasticsearch,用户管理,elastic,修改密码,权限角色

角色管理

获取角色

GET /_security/role

GET /_security/role/<name>

name:表示角色名称,不传,将返回所有角色的列表。比如我们的 elastic 账号的角色为 superuser,我们查询superuser角色的信息如下

请求参数

  • applications
    (列表)应用程序权限条目的列表。
    • application
      (必需的)(字符串)此条目适用的应用程序的名称
    • privileges
      (列表)字符串列表,其中每个元素都是应用程序权限或操作的名称。
    • resources
      (列表)应用权限的列表资源。
  • cluster
    (列表)集群权限列表。这些权限定义了具有此角色的用户能够执行的集群级别操作。
  • global
    (对象)定义全局权限的对象。全局权限是一种可感知请求的集群权限形式。对全局权限的支持目前仅限于应用程序权限的管理。该字段是可选的。
  • indices
    (列表)索引权限条目列表。
    • field_security
      (对象)角色所有者具有读取权限的文档字段。用于设置字段和文档级别的权限。
    • names(必需的)
      (列表)此条目中的权限适用的索引(或索引名称模式)列表。
    • privileges(必需的)
      (列表)角色所有者对指定索引的索引级别特权。
    • query
      定义角色所有者具有读取访问权限的文档的搜索查询。指定索引中的文档必须匹配此查询,以便角色所有者可以访问它。
  • metadata
    (对象)可选的元数据。在该metadata对象中,以 开头的键_保留供系统使用。
  • run_as
    (列表)此角色的所有者可以模拟的用户列表。有关详细信息,请参阅 代表其他用户提交请求。

返回结果如下

{
    "superuser": {
        "cluster": [
            "all" // 表示拥有所有集群的权限
        ],
        "indices": [
            {
                "names": [
                    "*" // * 表示针对所有的索引
                ],
                "privileges": [
                    "all" // 表示可以针对上面定义的索引列表中的索引,拥有所有权限
                ],
                "allow_restricted_indices": false // 自定义的角色,请将此设置为false。
            },
            {
                "names": [
                    "*"
                ],
                "privileges": [
                    "monitor",
                    "read",
                    "view_index_metadata",
                    "read_cross_cluster"
                ],
                "allow_restricted_indices": true
            }
        ],
        "applications": [
            {
                "application": "*", // 可管理的应用程序名称 * 表示所有
                "privileges": [
                    "*" // 赋予的管理权限
                ],
                "resources": [
                    "*" // 
                ]
            }
        ],
        "run_as": [
            "*" // 当前用于可以模拟的用户列表,自定义的时候建议不要设置
        ],
        "metadata": {
            "_reserved": true
        },
        "transient_metadata": {}
    }
}

allow_restricted_indices:受限索引是一种特殊类别的索引,在内部用于存储配置数据,不应直接访问。通常只有内部系统角色才能授予对受限索引的特权。所以此处强烈建议使用 false。

新增或修改角色

POST /_security/role/<name>

PUT /_security/role/<name>

示例

{
  "cluster": ["monitor"],
  "indices": [
    {
      "names": [ "*" ],
      "privileges": ["all"],
      "allow_restricted_indices": false
    }
  ],
  "applications": [
    {
      "application": "*",
      "privileges": [ "*" ],
      "resources": [ "*" ]
    }
  ],
  "metadata" : { 
    "version" : 1
  }
}

此角色权限也挺高了,拥有集群的monitor权限、索引的所有权限

返回结果

{
    "role": {
        "created": true
    }
}

删除角色

DELETE /_security/role/<name>

这个非常简单,就不做详细说明了

用户管理

创建或更新用户

POST /_security/user/<username>

PUT /_security/user/<username>

参数说明

  • enabled
    (布尔值)指定用户是否已启用。默认值为true。
  • email
    (字符串)用户的电子邮件。
  • full_name
    (字符串)用户的全名。
  • metadata
    (对象)您想要与用户关联的任意元数据。
  • password
    (必需*,字符串)用户的密码。密码长度必须至少为 6 个字符。添加用户时,password 和 password_hash 必须二选一。
  • password_hash
    password和password_hash参数不能在同一个请求中同时使用。
  • roles
    (必需,列表)用户拥有的一组角色。角色决定了用户的访问权限。要创建没有任何角色的用户,请指定一个空列表: []。

示例

{
  "password" : "test@111%jKL",
  "roles" : [ "myrole" ],
  "full_name" : "全名",
  "email" : "test@example.com.cn",
  "metadata" : {
    "desc" : "测试账号"
  }
}

返回结果

{
    "created": true
}

如果created 为 false,表示当前用户已存在,更新用户

删除用户

DELETE /_security/user/<username>
{
  "found" : true // 成功删除返回true,否则返回false
}

禁用用户

PUT /_security/user/<username>/_disable

启用用户

PUT /_security/user/<username>/_enable

获取用户信息

GET /_security/user

GET /_security/user/<username>

/_security/user/myuser 响应

{
    "myuser": {
        "username": "myuser",
        "roles": [
            "myrole"
        ],
        "full_name": "全名",
        "email": "test@example.com.cn",
        "metadata": {
            "desc": "测试账号"
        },
        "enabled": true
    }
}

修改密码API

POST /_security/user/_password

POST /_security/user/<username>/_password

username
(可选,字符串)您要更改其密码的用户。如果不指定此参数,则更改当前用户的密码。

参数

  • password
    (字符串)新密码值。密码长度必须至少为 6 个字符。
  • password_hash
    (字符串)新密码值的哈希值。这必须使用与为密码存储配置的相同的散列算法来生成。

以上是基于REST API 来管理用户文章来源地址https://www.toymoban.com/news/detail-617783.html

到了这里,关于Elasticsearch 用户管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch:节点角色 - node roles

    你可能已经知道 Elasticsearch 集群由一个或多个节点组成。 每个节点将数据存储在分片上,每个分片存储在一个节点上。 到目前为止,你看到的每个节点都至少存储了一个分片,但值得注意的是,节点并不总是必须存储分片。 这是因为每个节点可能具有一个或多个角色,这些

    2024年02月16日
    浏览(31)
  • Elasticsearch 索引模板、生命周期策略、节点角色

    索引模板可以帮助简化创建和二次配置索引的过程,让我们更高效地管理索引的配置和映射。 索引生命周期策略是一项有意义的功能。它通常用于管理索引和分片的热(hot)、温(warm)和冷(cold)数据,以及定期删除过期的数据,以确保Elasticsearch的健康运行。 Elasticsearch集

    2024年04月16日
    浏览(36)
  • 干货 | Elasticsearch 8.X 节点角色划分深入详解

    如果你的 Elasticsearch 集群是 7.9 之前的版本,在配置节点的时候,只会涉及节点类型的概念。我相信大家会对下面的概念比较熟悉: 主节点 数据节点 协调节点 Ingest 节点 冷热集群架构 ...... Elasticsearch 7.9 版本引入了节点角色的概念。最近社群小伙伴关于节点角色提了不少问题

    2023年04月21日
    浏览(68)
  • PostgreSQL用户和角色的创建和管理

    在 PostgreSQL 中,用户和角色是用于对数据库进行权限管理的重要概念。用户是数据库系统中的实体,可以登录数据库并执行操作,而角色是一组权限的集合,可以被授予给多个用户。本章将详细介绍如何创建和管理 PostgreSQL 用户和角色。 在 PostgreSQL 中,可以使用 CREATE USER 语

    2024年02月04日
    浏览(41)
  • 【ORACLE】 事务 | 锁 | 约束 | 权限、角色与用户管理

    🕺作者: 主页 我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇 码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢支持!!! (一)什么是事务 事务: 事务是指作为单个逻辑工作单元执

    2024年01月22日
    浏览(37)
  • 【MySQL】MySQL里的用户账户和角色是什么?如何管理?

    在MySQL中,用户是数据库访问的主要实体。每个用户都有自己的用户名和密码,用于验证和授权。通过合理的用户管理,可以控制谁能够访问数据库以及访问数据库的权限。 在连接到MySQL 服务器并执行查询时,会根据登录的用户来进行身份验证和活动授权。 验证 。这一步是

    2024年02月11日
    浏览(62)
  • Elasticsearch 索引模板、生命周期策略、节点角色(1),8年大数据开发开发教你如何写简历

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新大数据全套学习资料》,

    2024年04月26日
    浏览(41)
  • springboot整合security,mybatisPlus,thymeleaf实现登录认证及用户,菜单,角色权限管理

    本系统为springboot整合security,mybatisPlus,thymeleaf实现登录认证及用户,菜单,角色权限管理。页面为极简模式,没有任何渲染。 源码:https://gitee.com/qfp17393120407/spring-boot_thymeleaf 架构截图 此处以用户表为例,其他表数据可在源码获取。 用户表 共用属性 共用属性自动填充配置

    2024年02月07日
    浏览(53)
  • Elasticsearch开启用户验证

    版本:elasticsearch 7.3.1 步骤: 准备ssl证书 在bin目录下使用如下命令,生成相应证书文件。 命令: elasticsearch-certutil ca 获取elastic-stack-ca.p12文件 命令: elasticsearch-certutil cert --ca elastic-stack-ca.p12 获取elastic-certificates.p12 注意: (1)将文件放入config文件夹,或者其他指定文件夹

    2024年02月16日
    浏览(27)
  • Elasticsearch内置用户详解

    在Elasticsearch的基本许可证中,可以使用内置用户来设置和管理安全性。这些内置用户具有特定的权限和角色,以便于在不同情况下进行管理和操作。以下是一些内置用户及其权限: elastic :这是超级用户,拥有所有权限。可以使用此用户进行任何操作,包括管理和配置集群、

    2024年02月22日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包