当前位置: 首页 > news >正文

ElasticSearch新角色的创建及新用户的创建

ES新角色&新用户

  • 问题分析
  • 创建新角色
  • 创建新用户
  • 补充其他操作
    • 删除角色:
    • 删除用户
    • 角色和用户的绑定关系
    • 怎么查看角色拥有的权限


问题分析

我们存在使用elastic用户操作ES的情况,但是随着安全、合规的要求,企业逐步的规范客户端不能使用elastic的用户,我们就面临着创建角色和用户的需求。

本文就角色新建、用户新建来展开为开发者提供帮助,涉及到角色的新建及角色权限的设置,用户和角色的绑定。
步骤一:创建新角色并赋予权限
首先创建一个新角色,例如我们称之为 index_manager,并赋予它管理索引和文档所需的权限。

创建新角色

角色为 ‘index_manager’,授予对特定索引模式的增删改查权限

PUT /_security/role/index_manager{"cluster": ["manage_index_templates", "monitor"], # 授予管理索引模板和监控集群的权限"indices": [{"names": ["*"], # 允许操作所有索引。出于安全考虑,在生产环境中建议替换为具体的索引模式,例如 "myapp-*""privileges": ["all"], # 授予所有索引操作权限。可根据需要细化为 "create_index", "delete_index", "write", "read" 等"field_security": { # 字段级安全性(可选配置):限制对文档特定字段的访问"grant": ["*"] # 允许访问所有字段。可以设置为 ["field1", "field2"] 来只允许访问特定字段}}],"applications": [{"application": "kibana-.kibana","privileges": ["all"],"resources": ["*"]}]}

参数解释 :

cluster: 定义集群级别的操作权限,如管理索引模板、监控集群状态等。

indices: 定义索引级别的权限,这是核心配置。

names: 指定此角色可操作的索引名称,支持通配符,如 logstash-*。

privileges: 指定对此索引的操作权限,如 create_index(创建索引)、delete_index(删除索引)、write(写入文档)、read(搜索和读取文档)、manage(索引管理)等。all 表示所有权限。

field_security (可选): 进行字段级权限控制,可以限制用户只能访问或禁止访问文档中的某些字段。

applications: 配置访问 Kibana 等应用的权限。

🔔 注意:为安全起见,应遵循最小权限原则。如果新用户不需要管理所有索引,应将 names 中的 * 替换为更具体的索引模式(如 app1-*),并根据实际需要细化 privileges 列表,避免直接使用 all。

步骤二:创建新用户并分配角色
创建完角色后,就可以创建新用户(例如 new_admin_user)并将其与刚才创建的角色关联。

创建新用户

新用户为 ‘new_admin_user’,为其分配角色

PUT /_security/user/new_admin_user
{"password": "your_strong_password_here", # 请务必设置一个强密码"roles": ["index_manager"], # 分配之前创建的角色。可以同时分配多个角色,如 ["role1", "role2"]"full_name": "New Administrator","email": "newadmin@example.com"
}

创建成功后,你就可以使用 new_admin_user 和其密码进行认证,并执行索引和文档的增删改查操作了。

补充其他操作

在操作过程中,有可能我们创建的角色权限有变化了,这个时候需要我们删除角色重新建角色

删除角色:

DELETE /_security/role/index_manager
  • 删除前提:确保没有用户正在使用这个角色。如果还有用户绑定着这个角色,虽然角色本身可以被删除,但这会导致相应用户失去权限,可能无法正常访问 Elasticsearch。

删除用户

要删除之前创建的 new_admin_user 用户,使用以下命令:

DELETE /_security/user/new_admin_user

删除影响:删除用户后,该用户将立即无法登录 Elasticsearch 或执行任何操作。

角色和用户的绑定关系

既然删除角色钱要确定有哪些用户使用了该角色,我们就需要通过命令查询。
在 Elasticsearch 中,查看一个特定角色(例如你之前创建的 index_manager 角色)被分配给了哪些用户,并没有一个直接的 API 可以一键查询“某个角色关联了所有哪些用户”。不过,你可以通过 先获取所有用户信息,再逐个筛选其角色列表 的方式来实现。

你可以通过以下流程来理解和操作角色与用户的绑定关系查询:
在这里插入图片描述
下面是具体的操作命令和步骤。

📌 操作命令与步骤
获取所有用户的详细信息:
使用 GET /_security/user API 可以获取集群中所有用户的详细信息,包括每个用户被分配的角色列表。

GET /_security/user?pretty

这个命令会返回一个包含所有用户对象的 JSON。每个用户对象中都包含一个 roles 字段,这是一个数组,列出了该用户被授予的所有角色。

在返回结果中查找目标角色:
你需要手动或通过脚本解析上述命令返回的 JSON 结果,检查每个用户的 roles 数组。如果某个用户的 roles 数组中包含你关心的角色名(例如 index_manager),那么这个用户就被绑定了该角色。

💡 操作示例
假设你执行了 GET /_security/user?pretty,可能会得到类似下面这样的结果(这里是一个简化的示例):

{"new_admin_user" : {"username" : "new_admin_user","roles" : ["index_manager",  // 这个用户拥有 index_manager 角色"another_role"],...},"elastic" : {"username" : "elastic","roles" : ["superuser"  // 这个用户没有 index_manager 角色],...},"a_test_user" : {"username" : "a_test_user","roles" : ["index_manager"  // 这个用户也拥有 index_manager 角色],...}
}

从上面的示例可以看出,用户 new_admin_user 和 a_test_user 的 roles 数组中都包含 “index_manager”,因此这两个用户都被绑定了 index_manager 角色。

⚠️ 注意事项
权限要求:执行 GET /_security/user 查询用户信息需要当前操作者拥有较高的权限,通常是 manage_security 集群权限。超级用户 elastic 默认拥有此权限。

结果筛选:如果用户数量很多,手动筛选会比较繁琐。你可以考虑使用 jq 等 JSON 处理工具在命令行中自动过滤,或者编写脚本(如 Python 脚本)来解析返回的 JSON,并直接输出绑定特定角色的用户名列表。

Kibana 界面查看(可选):如果你安装了 Kibana,并且有权限访问,也可以通过 Kibana 的图形化界面查看。路径通常是 Management -> Security -> Users。在用户列表中,你可以看到每个用户分配的角色,然后进行筛选。

怎么查看角色拥有的权限

我们可以通过以下方法来查看角色拥有的权限。

📋 使用 Elasticsearch API 查询角色权限
Elasticsearch 提供了专门的 API 来获取角色信息。

查看所有角色:使用 GET /_security/role 命令可以获取集群中所有角色的详细信息,包括每个角色的权限配置。

查看特定角色:使用 GET /_security/role/<role_name> 命令可以获取特定角色的权限配置。将 <role_name> 替换为你要查询的角色名称(例如 GET /_security/role/index_manager)。

这些命令会返回类似以下结构的 JSON 信息,清晰地展示了角色的权限:

{"index_manager" : {"cluster" : ["manage_index_templates", "monitor"],"indices" : [{"names" : ["*"],"privileges" : ["all"],"field_security" : {"grant" : ["*"]}}],"applications" : [{"application" : "kibana-.kibana","privileges" : ["all"],"resources" : ["*"]}],"run_as" : [],"metadata" : {},"transient_metadata" : {"enabled" : true}}
}

返回结果关键字段说明:

cluster: 字符串数组,列出了该角色拥有的集群级别权限,如
manage_index_templates(管理索引模板)、monitor(监控集群)等。

indices: 对象数组,定义了该角色对一个或多个索引模式的权限。

names: 字符串数组,指定此权限适用的索引名称,支持通配符,如 “logstash-*”。

privileges: 字符串数组,指定对上述索引的操作权限,如
all(所有权限)、create_index(创建索引)、delete_index(删除索引)、write(写入文档)、read(读取文档)等。

field_security: (可选)对象,用于字段级权限控制,可以限制用户只能访问或禁止访问文档中的某些字段(grant
表示允许访问的字段,except 表示排除的字段)。

query: (可选)字符串,用于文档级权限控制,可以限制用户只能访问索引中满足特定查询条件的文档。

applications: 对象数组,配置了该角色对 Kibana 等应用程序的访问权限。

run_as: 字符串数组,允许该角色以其他用户的身份提交请求(模拟用户)。

metadata: 对象,存储与该角色相关的任意元信息。

在这里插入图片描述

如果有帮助到你,请点赞收藏


文章转载自:

http://wHk4XzYl.mprtj.cn
http://7MSlojRA.mprtj.cn
http://YnAeZuRu.mprtj.cn
http://Vxz7XF5M.mprtj.cn
http://DMnIXZTN.mprtj.cn
http://4fOqZZFT.mprtj.cn
http://hkHCo3g5.mprtj.cn
http://xch4kb2n.mprtj.cn
http://O2bG9taA.mprtj.cn
http://R5CtSZWG.mprtj.cn
http://k7kXfZtD.mprtj.cn
http://QqRzbRwz.mprtj.cn
http://IMNZpqO1.mprtj.cn
http://NEDwqVjT.mprtj.cn
http://93JB00Lk.mprtj.cn
http://ctSuDvVx.mprtj.cn
http://uvwk40xX.mprtj.cn
http://aYtS4e2N.mprtj.cn
http://jprzNvhl.mprtj.cn
http://KDdbUhDQ.mprtj.cn
http://s6rCa47p.mprtj.cn
http://R2xiySDB.mprtj.cn
http://KQ1eWDFQ.mprtj.cn
http://whRjCNxZ.mprtj.cn
http://8OyXbSHO.mprtj.cn
http://xX2MrjE7.mprtj.cn
http://3qO7PQId.mprtj.cn
http://02LkbsLY.mprtj.cn
http://NqGCm2Sh.mprtj.cn
http://uhzu4sUK.mprtj.cn
http://www.dtcms.com/a/368978.html

相关文章:

  • 【运维】Linux inotify watches 限制问题解决方案
  • ES模块(ESM)、CommonJS(CJS)和UMD三种格式
  • centos下gdb调试python的core文件
  • 计算机网络2 第二章 物理层——用什么方式传输邮件
  • 使用深度Q网络(DQN)算法实现游戏AI
  • 深度学习优化框架(DeepSpeed)
  • Java 8 终于要被淘汰了!带你速通 Java 8~24 新特性 | 又能跟面试官吹牛皮了
  • 操作系统重点
  • 安全运维-云计算系统安全
  • HTML 各种标签的使用说明书
  • BYOFF (Bring Your Own Formatting Function)解析(80)
  • MySQL源码部署(rhel7)
  • HashMap多线程下的循环链表问题
  • 企业微信AI怎么用?食品集团靠它砍掉50%低效操作,答案就是选对企业微信服务商
  • 企业微信AI怎么用才高效?3大功能+5个实操场景,实测效率提升50%
  • Arduino Nano33 BLESense Rev2【室内空气质量检测语音识别蓝牙调光台灯】
  • 无人机小目标检测新SOTA:MASF-YOLO重磅开源,多模块协同助力精度飞跃
  • 本地 Docker 环境 Solr 配置 SSL 证书
  • SQL中TRUNCATE vs. DELETE 命令对比
  • RequestContextFilter介绍
  • [密码学实战](GBT 15843.3)基于SM2数字签名的实体鉴别实现完整源码(四十九)
  • 【UE】 实现指向性菲涅尔 常用于圆柱体的特殊菲涅尔
  • 标签系统的架构设计与实现
  • 卫星在轨光压计算详解
  • 摄像头模块的种类:按结构分类
  • 第8篇:决策树与随机森林:从零实现到调参实战
  • 迁移学习-ResNet
  • CentOS安装或升级protoc
  • 【QT 5.12.12 下载 Windows 版本】
  • 多语言Qt Linguist