Elasticsearch 索引 blocks:深入探讨数据保护

Elasticsearch 作为搜索和分析数据的首选分布式引擎在技术领域脱颖而出,尤其是在处理日志、事件和综合文本搜索时。 它的与众不同之处在于它如何让你使用各种块选项调整对其索引的访问。 这对于那些负责技术项目的人(比如管理员和编码员)来说非常方便,他们需要保持数据可靠、管理资源或遵守严格的安全规则。

通常,我们必须停止对索引设置的任何调整。 诀窍是依靠 Elasticsearch 的块设置,更准确地说,依靠 blocks.metadata 设置。 将此设置翻转为 true 意味着没有人可以弄乱索引的元数据,无论是读取还是写入。

假设你正在处理一个多租户 SaaS 应用程序,每个租户都有自己的索引。 你已经整理了所有这些索引及其独特的设置和映射。 现在,你希望确保所有内容都按照 你在每个租户中设置的方式保持不变。 这就是 blocks.metadata 设置发挥作用的地方。 使用方法如下:

PUT my_data/_settings
{"blocks.metadata": true
}

一旦设定这个,比如我再也无法改变它的元数据。我们可以进行如下的尝试:

PUT twitter/_doc/1
{"content": "This is Xiaoguo from Elastic"
}

在上面,我们创建了一个叫做 twitter 的索引。我们可以看到它的设置:

GET twitter/_settings
{"twitter": {"settings": {"index": {"routing": {"allocation": {"include": {"_tier_preference": "data_content"}}},"number_of_shards": "1","provided_name": "twitter","creation_date": "1714352386891","number_of_replicas": "1","uuid": "azY4f_smTymShGLc8R6m1g","version": {"created": "8503000"}}}}
}

如上所示,我们可以看到 number_of_replicas 的值为 1。我们可以通过如下的方法来进行修改它的值为 0:

PUT twitter/_settings
{"number_of_replicas": 0
}

我们再次进行查看它的设置:

GET twitter/_settings
{"twitter": {"settings": {"index": {"routing": {"allocation": {"include": {"_tier_preference": "data_content"}}},"number_of_shards": "1","provided_name": "twitter","creation_date": "1714352386891","number_of_replicas": "0","uuid": "azY4f_smTymShGLc8R6m1g","version": {"created": "8503000"}}}}
}

很显然,number_of_replicas 的值现在变为 0。假如我们不想任何人对这个值进行改变,那么我们可以通过如下的命令来进行设置:

PUT twitter/_settings
{"blocks.metadata": true
}

那么它现在的设置为:

GET twitter/_settings
{"error": {"root_cause": [{"type": "cluster_block_exception","reason": "index [twitter] blocked by: [FORBIDDEN/9/index metadata (api)];"}],"type": "cluster_block_exception","reason": "index [twitter] blocked by: [FORBIDDEN/9/index metadata (api)];"},"status": 403
}

显然,我们现在读取不了它的任何的设置,并且我们来尝试对它进行修改:

PUT twitter/_settings
{"number_of_replicas": 1
}
{"error": {"root_cause": [{"type": "cluster_block_exception","reason": "index [twitter] blocked by: [FORBIDDEN/9/index metadata (api)];"}],"type": "cluster_block_exception","reason": "index [twitter] blocked by: [FORBIDDEN/9/index metadata (api)];"},"status": 403
}

我们也不能对它做任何的修改。除非我们再次把上面的 blocks.metadata 设置为 false:

PUT twitter/_settings
{"index.blocks.metadata": false
}

然后,我们再次修改 number_of_replicas 的值为 1:

PUT twitter/_settings
{"number_of_replicas": 1
}

我们再次通过如下的命令来进行确认:

GET twitter/_settings
{"twitter": {"settings": {"index": {"routing": {"allocation": {"include": {"_tier_preference": "data_content"}}},"number_of_shards": "1","blocks": {"metadata": "false"},"provided_name": "twitter","creation_date": "1714352386891","number_of_replicas": "1","uuid": "azY4f_smTymShGLc8R6m1g","version": {"created": "8503000"}}}}
}

为什么使用索引 blocks?

你可能想知道为什么有人会选择使用索引块。 以下是一些常见原因:

  • 维护和升级:当系统维护或升级时,管理员必须锁定数据以保持一切一致。
  • 数据完整性:在数据必须保持不变的情况下(例如存档日志或历史记录),write blocks 会派上用场。
  • 资源管理:有时,索引可能会占用太多资源。 在这种情况下,管理员可能会暂时停止读取或写入。
  • 安全性:对于特别敏感的数据,read blocks 是一个很好的工具,可以防止不应该访问的人进入。

现在,你可能会想,“使用 RBAC(基于角色的访问控制)怎么样?” 这是一个有效的观点。 确实,为什么不呢? 你可以在这里更深入地了解这一点:

User authorization | Elasticsearch Guide [8.13] | Elastic。你也可以深入阅读文章 “Elasticsearch:用户安全设置” 及 “Elasticsearch:将文档级安全性 (DLS) 添加到你的内部知识搜索”。

让我们分解不同类型的块

Elasticsearch 附带了一系列块设置,每个块设置都有特定的用途:

  • block.read_only:这就像主开关。 它停止对索引数据及其元数据的任何读取。 当您需要确保索引中的任何内容(无论是数据还是元数据)都不会被读取时,这是首选选项。
  • block.read:名副其实; 此设置停止所有读取操作。
  • blocks.write:这个是关于停止写操作的。 如果索引中的数据应保持原样,那么此设置是您的朋友。
  • blocks.metadata:这会阻止索引元数据的读取和写入。 元数据包括设置、映射和其他配置。 通过阻止元数据操作,可以确保索引配置保持不变。

设置和拆除 blocks

将块放置到位非常简单 - 使用 PUT 请求,如我们在前面的示例中看到的那样。 当提升该块时,你只需调整索引设置,将块值切换为 false。 例如,如果您想摆脱 write block:

PUT sample-01/_settings
{"index.blocks.write": false
}

以上面的例子为例,我们首先运行如下的命令:

PUT twitter/_settings
{"index.blocks.write": true
}

我们尝试写如下一个数据:

PUT twitter/_doc/2
{"content": "This is a test"
}
{"error": {"root_cause": [{"type": "cluster_block_exception","reason": "index [twitter] blocked by: [FORBIDDEN/8/index write (api)];"}],"type": "cluster_block_exception","reason": "index [twitter] blocked by: [FORBIDDEN/8/index write (api)];"},"status": 403
}

很显然,我们这次不能写入数据了。这个是因为 twitter 索引的设置 "index.blocks.write": true。我们可以通过如下的命令来对它进行解锁:

PUT twitter/_settings
{"index.blocks.write": false
}

我们再次对她进行写入:

PUT twitter/_doc/2
{"content": "This is a test"
}
{"_index": "twitter","_id": "2","_version": 1,"result": "created","_shards": {"total": 2,"successful": 1,"failed": 0},"_seq_no": 1,"_primary_term": 1
}

很显然,这次的操作是成功的。

根据 Elastic 官方文档,我们也可以通过如下格式的命令来对它进行操作:

PUT /my-index-000001/_block/write

比如:

PUT /twitter/_block/write

运行完上面的命令后,它讲阻止我们向 twitter 写入:

PUT twitter/_doc/3
{"content": "This is a another test"
}

上述命令将会失败。

结论

Elasticsearch 提供了一组可靠的关键索引块设置来管理对索引的访问。 接触这些设置至关重要,尤其是当您的目标包括保持数据完整性、有效处理资源或提高安全性时。 与任何强大的工具一样,明智地使用这些设置并清楚地了解它们的含义至关重要。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LTE的EARFCN和band之间的对应关系

一、通过EARFCN查询对应band 工作中经常遇到只知道EARFCN而需要计算band的情况,因此查了相关协议,找到了他们之间的对应关系,可以直接查表,非常方便。 具体见: 3GPP TS 36.101 5.7.3 Carrier frequency and EAR…

Leetcode—1235. 规划兼职工作【困难】(upper_bound、自定义排序规则)

2024每日刷题&#xff08;125&#xff09; Leetcode—1235. 规划兼职工作 算法思想 实现代码 class Solution { public:int jobScheduling(vector<int>& startTime, vector<int>& endTime, vector<int>& profit) {int n startTime.size();vec…

doris经典bug

在部署完登录web页面查看的时候会发现只有一个节点可以读取信息剩余的节点什么也没读取到 在发现问题后&#xff0c;我们去对应的节点去看log日志&#xff0c;发现它自己绑定到前端的地址上了 现在我们已经发现问题了&#xff0c;以下就开始解决问题 重置doris 首先对be进行操…

代码审计提升系统安全,为企业数字化繁荣保驾护航

近年来&#xff0c;软件安全事件频发&#xff0c;凸显出严峻的信息系统安全形势&#xff0c;传统的安全防护机制已经无法帮助企业实现安全保障。忽视软件代码自身的安全性&#xff0c;仅依靠外围防护、事后修补&#xff0c;无法深层次发现和解决软件迭代开发过程中存在的潜在安…

一键实现在VS Code中绘制流程图

VS Code是一款常用的IDE&#xff0c;受到许多用户的欢迎和喜爱。而其较为出众的一点&#xff0c;就是较好的可拓展性&#xff0c;即丰富的插件应用&#xff0c;这些应用可以极大地提高生产效率&#xff0c;并优化日常使用。 流程图是一种直观的图示方法&#xff0c;可以用简明…

Fastadmin 日常项目常见用法整理

ps&#xff1a;自己使用笔记备用&#xff0c;不间断更新&#xff0c;常见功能点 一&#xff0c;数据库后缀 结尾字符示例类型要求字段说明timerefreshtimebigint/datetime识别为日期时间型数据&#xff0c;自动创建选择时间的组件imagesmallimagevarchar识别为图片文件&#…

谷歌推广和seo收录是一回事吗?

那自然不是一回事&#xff0c;谷歌推广一般指的是谷歌的广告服务&#xff0c;通过购买广告位&#xff0c;以便用户在谷歌搜索特定关键词时显示您的广告&#xff0c;这种方式通常基于点击收费&#xff0c;意味着您只有在有人点击您的广告时才需要支付费用。谷歌推广可以让您的网…

加密技术在保护企业数据中的应用

加密技术是企业数据保护的核心&#xff0c;对于维护信息安全至关重要。透明加密技术使文件加密后不改变用户对文件的使用习惯&#xff0c;内部文件打开自动解密&#xff0c;存储自动加密&#xff0c;一旦离开使用环境&#xff0c;加密文件将无法正常读取&#xff0c;从而保护文…

【Java】第二讲:字符串相关类

个人主页&#xff1a;深情秋刀鱼-CSDN博客 Java专栏&#xff1a;Java程序设计 目录 一、String 1.Java中的数据类型 2.字符串概述 3.字符串构造方法 4.字符串构造内存原理 5.字符串比较 6.字符串常见方法 二、StringBuilder 1.定义 2.常用方法 3.StringBuilder内存分…

04-xss获取cookie实验

二、开发XSS服务器端 1、确认实验环境 攻击者服务器&#xff1a;192.168.74.134&#xff0c;将获取到cookie数据保存到该服务器的数据库中&#xff0c;运行PHP代码暴露一个接收Cookie的URL地址。 正常Web服务器&#xff1a;192.168.74.133&#xff0c;用于正常的用户访问的目…

【介绍下大数据组件之Storm】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

《我的医养信息化之路》之三十四:家庭健康管理员

在2019年的健康中国行动中&#xff0c;国家出台《关于实施健康中国行动的意见》、《健康中国行动&#xff08;2019—2030&#xff09;》、《中国公民健康素养66条》、《关于全面开展健康家庭建设的通知》等多份文件&#xff0c;提出每个人都是自己健康的第一责任人&#xff0c;…

Linux磁盘IO、网络IO、零拷贝详解

一、什么是I/O&#xff1f; 在计算机操作系统中&#xff0c;所谓的I/O就是输入&#xff08;input&#xff09;和输出&#xff08;output&#xff09;,也可以理解为读&#xff08;read&#xff09;和写&#xff08;write&#xff09;,针对不同的对象&#xff0c;I/O模式可以划分…

【代码随想录——哈希表】

1.哈希表理论基础 首先什么是 哈希表&#xff0c;哈希表&#xff08;英文名字为Hash table&#xff0c;国内也有一些算法书籍翻译为散列表&#xff0c;大家看到这两个名称知道都是指hash table就可以了&#xff09;。 那么哈希表能解决什么问题呢&#xff0c;一般哈希表都是用…

windows安装ElasticSearch以及踩坑

1.下载 elasticsearch地址&#xff1a;Past Releases of Elastic Stack Software | Elastichttps://www.elastic.co/cn/downloads/past-releases#elasticsearch IK分析器地址&#xff1a;infinilabs/analysis-ik: &#x1f68c; The IK Analysis plugin integrates Lucene IK…

【网站项目】戒烟网站

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【Unity Shader入门精要 第4章】数学基础(二)

1. Unity中的坐标空间 1.1 五个坐标空间 模型空间 模型自身的3D坐标系空间&#xff0c;左手坐标系是一个相对空间&#xff0c;坐标轴指向随模型旋转变化当物体有父节点时&#xff0c;Transform组件中各属性的值表示的即为该物体在其父物体的模型空间中的值当模型顶点传入顶点…

ICDE2024 |VDTuner:向量数据库自动调优技术

在CodeFuse接入实际业务的过程中&#xff0c;大模型的推理成本以及生成内容的准确性是产品规模落地的两个核心考量因素。为了降低推理成本&#xff0c;我们研发了CodeFuse-ModelCache语义缓存加速功能&#xff0c;通过引入Cache机制&#xff0c;缓存已经计算的结果&#xff0c;…

OpenCV 入门(五) —— 人脸识别模型训练与 Windows 下的人脸识别

OpenCV 入门系列&#xff1a; OpenCV 入门&#xff08;一&#xff09;—— OpenCV 基础 OpenCV 入门&#xff08;二&#xff09;—— 车牌定位 OpenCV 入门&#xff08;三&#xff09;—— 车牌筛选 OpenCV 入门&#xff08;四&#xff09;—— 车牌号识别 OpenCV 入门&#xf…

antdVue 自定义table列配置

最近做项目的时候需要对页面的table进行列配置的需求 子组件 <div><a-modaltitle"列配置" :visible"visible" :closable"false" :footer"null"width"800px" height"448px"><div><a-row>…