Elasticsearch:Security API 介绍

news2024/11/17 16:02:43

在我之前的文章 “Elasticsearch:运用 API 创建 roles 及 users” ,我展示了如何使用 Security API 来创建用户及角色来控制访问 Elasticsearch 中的索引。在今天的文章中,我将展示一个使用 Security API 来创建一个用户及角色来访问一个索引中的特定字段。这个功能属于白金版的功能之一。

更多关于订阅的信息,请在地址 订阅 | Elastic Stack 产品和支持 | Elastic 进行查看。

在如下的展示中,我将使用 Elastic Stack 8.6.1 来进行展示。

准备

首先,我们来创建如下的两个索引:

PUT twitter1/_doc/1
{
  "user": "GB",
  "uid": 1,
  "city": "Beijing",
  "province": "Beijing",
  "country": "China"
}
PUT twitter2/_doc/1
{
  "user": "GB",
  "uid": 1,
  "city": "Beijing",
  "province": "Beijing",
  "country": "China"
}

当我们创建上面的两个索引 twitter1 及 twitter2 时,我们可以在超级用户 elastic 登录的情况下创建。在 Kibana 的界面中,会显示该账号:

好了,我们已经创建好上面的两个索引。

创建角色

此时我们将定义我们想要授予访问权限的索引,我们将添加读取权限并选择我们希望用户有权访问的字段。重要的是要说,在角色中,我们可以创建一个查询,该查询将仅返回我们希望用户也可以访问的文档。

POST _security/role/twitter2_read
{
  "indices": [
    {
      "names": ["twitter2"],
      "privileges": ["read"],
      "field_security": {
        "grant":["user", "city"]
      }
    }
  ]
}

如上所示,我们看到了一个错误的信息。它告诉我们当前的 license 的级别是不够的。我们需要购买白金版才可以。

在我们没有购买授权的情况下,我们可以在 Kibana 中启动试用功能。

  

 

启动白金版试用功能后,我们再次运行上面的命令:

 这次显然是成功的。它创建了一个叫做 twitter2_read 的 role。它针对 twitter2,具有 read 权限,并且只能访问它的 user,city 字段。

上述命令运行完后,我们可以在 Kibana 中的界面中进行查看:

创建用户

用户和角色的关系如下:

一个用户可以拥有一个或多个角色,而每个角色可以定义不同的访问权限。

让我们创建一个新用户并分配我们创建的角色。

POST _security/user/liuxg
{
  "full_name": "Xiaoguo, Liu",
  "password": "password",
  "roles": ["kibana_user", "twitter2_read"]
}

在上面,我们创建了一个叫做 liuxg 的用户。它的密码设置为 password,同时它具有 kibana_user 及 twitter2_read 的角色。

运行完上面的命令后,我们可以在 Kibana 中的界面中进行查看:

测试新创建的 role 

我们接下来登出之前的 elastic 超级用户,并以最新创建的账号 liuxg:password 来进行登录:

等成功登录之后,我们在 Dev Tools 中使用如下的命令来访问之前创建的 twitter1 索引:

GET twitter1/_search

上面的命令返回:

上面命令返回的结果表明 liuxg 这个用户不能访问 twitter1 这个索引,因为他没有相应的权限。

接下来,我们来尝试访问 twitter2 这个索引:

GET twitter2/_search

从上面的结果中可以看出来,我们只能看到两个字段 city 及 user,而其它的字段比如 uid,provice 和 country 都是不可见的。这个在实际的使用中非常用用。比如我们有同样的一个 employee 索引,可以供一个公司的几个不同的部门来使用。 人事部门可以看到员工的薪水,而一般员工是不可以看到员工的薪水这个字段。

接下来,让我们来尝试写入一个文档到 twitter2 里去:

POST twitter2/_doc
{
  "user": "GB",
  "uid": 1,
  "city": "Beijing",
  "province": "Beijing",
  "country": "China"
}

很显然,我们的操作是失败的,因为这个用户只有读取的权限,而没有写入的权限。 这个在实际的使用中非常有用,我们有时只希望一部分用户只有读的权限,而不需要他们来修改数据。

希望这篇文档能让你对 Secrurity API 的使用有更多更深的理解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/350110.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双指针【灵神基础精讲】

来源0x3f:https://space.bilibili.com/206214 文章目录同向双指针[209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/)[713. 乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/)[3. 无重复字符的最…

计算机相关专业毕业论文选题推荐

计算机科学以下是我推荐的20个计算机科学专业的本科论文选题:基于机器学习的推荐算法研究与实现基于区块链技术的数字身份认证方案设计与实现基于深度学习的图像识别技术研究与应用基于虚拟现实技术的教育培训平台设计与实现基于物联网技术的智能家居系统研究与开发…

Dubbo与Spring Cloud优缺点分析(文档学习个人理解)

文章目录核心部件1、总体框架1.1 Dubbo 核心部件如下1.2 Spring Cloud 总体架构2、微服务架构核心要素3、通讯协议3.1 Dubbo3.2 Spring Cloud3.3 性能比较4、服务依赖方式4.1 Dubbo4.2 Spring Cloud5、组件运行流程5.1 Dubbo5.2 Dubbo 运行组件5.3 Spring Cloud5.4 Spring Clou…

[数据治理-02]一个例子搞懂元数据、参考数据、主数据、交易数据...的关系

杜威说过“所有知识都是分类”!很好理解,分类是认知经济,任何有效分类,都可以极大地节省我们的认知精力。谈到数据就必须做个分类,谈到数据分类可以从多个维度出发,比如按业务维度、这是财务数据、那是人力…

C++ ——多态 下 (图解多态原理、虚函数的再认知)

目录 一、抽象类 1)抽象类定义 2)抽象类的继承 3)抽象类实现多态 4)抽象类的好处 二、多态的实现原理 1)虚函数的存储方式 2)子类中虚函数的存储方式 ① 子类将基类中的虚表原封不动的拷贝到自己的…

【原创】java+swing+mysql教师管理系统设计与实现

教师管理系统主要是方便学校对教师进行管理,本文主要介绍如何使用java的swing窗体控件和mysql数据库去设计一个简单的教师管理系统。 功能分析: 本系统为javaswingmysql的教师管理系统,管理员、教师 功能如下: 管理员&#xff…

Quartz入门教程

本文参考文章编写 Quartz 官网 Quartz 是 OpenSymphony 开源组织在 Job Scheduling 领域又一个开源项目,是完全由 Java 开发的一个开源任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时&#xff…

2022——寒假总结

文章目录背景报名摸索结果总结背景 大一上学期,刚上大学没有尽快适应,什么都没有学到。 因为疫情,所以平时的测试以及期末都是线上进行的,就没怎么认真学,网课直接划水。 我的生活与学习很不平衡,还热衷于参…

搭建hadoop高可用集群(二)

搭建hadoop高可用集群(一)配置hadoophadoop-env.shworkerscore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml/etc/profile拷贝集群首次启动1、先启动zk集群(自动化脚本)2、在hadoop151,hadoop152,hadoop153启动JournalNode…

【Kubernetes】【八】Namespace和Pod

第四章 实战入门 本章节将介绍如何在kubernetes集群中部署一个nginx服务,并且能够对其进行访问。 Namespace ​ Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 ​ 默认情况下&…

java ssm自习室选座预约系统开发springmvc

人工管理显然已无法应对时代的变化,而自习室选座预约系统开发能很好地解决这一问题,既能提高人力物力,又能提高预约选座的知名度,取代人工管理是必然趋势。 本自习室选座预约系统开发以SSM作为框架,JSP技术&#xff0c…

昇腾CANN算子开发揭秘

开发者在利用昇腾硬件进行神经网络模型训练或者推理的过程中,可能会遇到以下场景:1、训练场景下,将第三方框架(例如TensorFlow、PyTorch等)的网络训练脚本迁移到昇腾AI处理器时遇到了不支持的算子。2、推理场景下&…

buu [WUSTCTF2020]大数计算 1

题目描述: 题目分析: part1:直接用 阶乘计算器,得出答案38609695part2:python代码,得出答案:67358675 print(520**13142333**666)part3:直接搜索宇宙终极问题,得到以下知识: 题目就是要我们给…

德赛西威NAV75*-SV731*导航升级(凯立德J30)实战

一、前言:升级导航德赛西威(2015年买的)地图几年没升级过了(之前自己折腾了一个)之前的启动是DSA2013(电子G已经无法升级数据文件了,本次只升级地图J30图资-凯立德)主程序版本&#…

超实用的小红书内容营销策略分享!纯干货

抓住小红书内容流量密码就是掌握了财富,越来越多的品牌方和商家都在小红书上收获了相当可观的用户流量,如果你的小红书营销没有什么起色,那绝对是没有走对方向。 小红书是一个内容为王的平台,如果你还不懂下面这些小红书内容营销…

VSCode设置eslint自动缩进和自动格式化代码

文章目录VSCode设置eslint自动缩进和自动格式化代码1、找到VS Code的settings.json文件2、修改settings.json文件内容为如下内容3、打开项目根文件夹下的 .eslintrc.js文件4、在rules 下配置“缩进几个空格”5、配置完保存,结束配置。VSCode设置eslint自动缩进和自动…

Linux——操作系统安装

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。个人爱好: 编程,打篮球,计算机知识个人名言:海不辞水,故能成其大;山不辞石…

初识自动化测试工具——katalon

一、什么是Katalon Katalon Studio 是一款免费的自动化测试工具,可以安装在windows、macOS、linux操作系统上,基于selenium 和 Appium 测试框架,并集成了这些框架的优点。工具使用简单方便,对于编码经验少,能力弱的测…

mysql调优-内存缓冲池

因本地查询和服务器查询相比服务器慢了很多,同样的数据,同样的sql查询,考虑了是不是链接太多了,自行查询了下,我使用的c3p0的链接池,配置一个小时超时,正常情况下是20多个链接,而mys…

linux下监测串口数据

在编写上下位机通信代码时,需要分阶段测试,确保下位机,线路,上位机都OK. 一.检查设备数据传出 1.确定下位机的串口参数 如果波特率有问题,可能会…