在使用 ES 的过程中,如果 ES 集群中存放的是敏感数据,是不能够随便供人查看的。什么?在排查故障?那也不行,合规高于一切。

不知道大家有没有遇到过上面描述的情景,或者如果是你遇到了,你会怎么办呢?

我们常常讲,解决问题要抓住问题的本质。人类的本质是复读机,上述问题的本质是"敏感"。

既然问题的本质是数据敏感,那就把敏感数据变成普通数据。这样既符合了合规要求,也促进大家工作。

话不多说,我们 demo。

在下面的 demo 过程中,我们主要用到 easysearch,不为别的,因为它自带脱敏功能。

准备敏感数据

下面的数据中,字段 description 和 country 是敏感的。受限用户查看时,敏感数据显示脱敏后的内容。

POST movies/_doc/1
{
"year": 2023,
"title": "This is a movie",
"description":"我是敏感数据"
} POST movies/_doc/2
{
"year": 2023,
"title": "What r u looking at",
"description":"我是敏感数据",
"country":"我是敏感数据" }

建立 hash 脱敏角色并赋给用户

默认情况下,easysearch 安全模块使用 BLAKE2b 算法,但你可以使用 JVM 提供的任何哈希算法。此列表通常包括 MD5、SHA-1、SHA-384 和 SHA-512。

此次测试,我们就用默认的算法,建立一个 masked_movie 角色。该角色只能查看 movies 索引,且 description 和 country 字段会被脱敏查看,脱敏方式是默认的 BLAKE2b 算法。

PUT _security/role/masked_movie
{
"cluster": [],
"indices": [{
"names": ["movies"],
"field_mask": ["description","country"],
"privileges": ["read"]
}]
} PUT _security/user/movie-user
{
"password": "password",
"roles": ["masked_movie"]
}

Hash 脱敏效果

受限用户查看效果

高权用户查看效果

像这样切换用户的操作,在生产环境中其实也没这么简单。生产的密码不能随便告知他人,甚至不能通过口头、通讯软件来传递。针对这种情况,easysearch 有个身份模拟功能,可配置一个用户能模拟其他用户来访问 ES。

配置好后,我就能用 admin 直接模拟 movie-user 用户了(-H "security_run_as:movie-user")。

效果如下:

相关链接

https://www.infinilabs.com/docs/latest/easysearch/references/security/access-control/run-as/

正则脱敏

除了使用哈希,还可以使用一个或多个正则表达式来替换字符串从而达到字段脱敏的效果。语法是 :/:: 。如果使用多个正则表达式,则结果将从左向右传递,就像 shell 中的管道操作一样。

我们再建立一个正则脱敏的角色和用户,让敏感数据只显示第一个汉字。

PUT _security/role/masked_movie_re
{
"cluster": [],
"indices": [{
"names": ["movies"],
"field_mask": [
"description::/(.)(.*)/::$1******",
"country::/(.)(.*)/::$1******"
],
"privileges": ["read"]
}]
} PUT _security/user/movie-user-re
{
"password": "password",
"roles": ["masked_movie_re"]
}

正则脱敏效果

受限用户查看效果

流量分析与脱敏

大家知道我们还有个产品叫 Infini Gateway,它可做 ES 流量分析。在进行流量分析时,会抓取请求的内容和返回。由于"脱敏"是在 easysearch 里完成的,所以 Gateway 记录的数据,已经是脱敏后的了。

我们来看一下,把访问的 url 换成网关的端口。

curl -ku movie-user-re:password http://localhost:8000/movies/_search?pretty

查看 Gateway 记录的数据

嗯,香!

好了,这次 demo 到这里就结束了。大家有什么好的想法、需要解决的场景,欢迎交流。

ES 数据太敏感不让看,怎么办?的更多相关文章

  1. 深度剖析HashMap的数据存储实现原理(看完必懂篇)

    深度剖析HashMap的数据存储实现原理(看完必懂篇) 具体的原理分析可以参考一下两篇文章,有透彻的分析! 参考资料: 1. https://www.jianshu.com/p/17177c12f84 ...

  2. 关于chart.js 设置canvas的宽度为父级元素的宽度的百分百 以及 X轴上面刻度数据太多如何处理

    今天在做一个数据统计的界面的时候,需要做折线统计图,在网上找了一圈发现数据统计的插件还是不少的,本着轻量级的的原则选择了Chart.js,后来在做的过程中便遇到两个问题,以此记录下来,和刚刚接触前端的 ...

  3. 解决持久化数据太大,单个节点的硬盘无法存储的问题;解决运算量太大,单个节点的内存、CPU无法处理的问题

    需要学习的技术很多,要自学新知识也不是一件容易的事,选择一个自己比较感兴趣的会是一个比较好的开端,于是,打算学一学分布式系统. 带着问题,有目的的学习,先了解整体架构,在深入感兴趣的细节,这是我的计划 ...

  4. hdu 4940 数据太水...

    http://acm.hdu.edu.cn/showproblem.php?pid=4940 给出一个有向强连通图,每条边有两个值分别是破坏该边的代价和把该边建成无向边的代价(建立无向边的前提是删除该 ...

  5. hdoj 4272 LianLianKan 数据太水

    LianLianKan Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  6. ireport报表制作, 当一个字段显示的数据太多时(数据过长),则需要自动换行

    1.当一个字段显示的数据太长,一个表格放不下,则需要自动换行,选中要更改的表格(要显示动态内容的字段),设置属性Stretch with overflow 为钩选状态. 未勾选之前: 勾选之后: 2. ...

  7. 有些有IP的项目,公司不至于测试不行砍项目,但是会砍项目组,把IP收回交给别的团队做(因为一旦一测数据太差,公司(投资人)会判断在二测的时候数据能提升到什么样。说白了就是历史信用问题)

    作者:匿名用户链接:https://www.zhihu.com/question/309778033/answer/579761064来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  8. es 数据 导出 到 MySQL

    暂时没有找到直接 导出到 mysql 数据库的工具 或者项目 目前实现思路: 使用 elasticdump  工具 实现 从 es 数据 导出到 json 文件 ,然后 使用 脚本程序 操作 改 js ...

  9. es数据增删改查

    设置最大查询条数 curl -XPUT 'http://10.121.8.5:9200/zdl_mx_shzt_ztdf/_settings' -d'{"index":{" ...

  10. ES数据架构与关系数据库Mysql

    ES数据架构的主要概念(与关系数据库Mysql对比) MySQL ElasticSearch Database Index Table Type Row Document Column Field S ...

随机推荐

  1. 力扣119(java)-杨辉三角Ⅱ(简单)

    题目: 给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行. 在「杨辉三角」中,每个数是它左上方和右上方的数的和. 示例 1: 输入: rowIndex = 3输出: [1 ...

  2. Apache Flink 误用之痛

    摘要:本文根据 Flink Forward 全球在线会议 · 中文精华版整理而成,围绕着项目的开始.需求分析.开发,以及测试.上线.运维整个生命周期展开,介绍了 Apache Flink 实践中的一些 ...

  3. IPv6时代,中小企业该如何布局?

    ​简介:IPv6要为全世界的每一粒沙子都分配一个IP,你的企业跟上了吗? 11月中旬,中央网信办等部门联合印发了<关于开展IPv6技术创新和融合应用试点工作的通知>,联合组织开展IPv6技 ...

  4. 基于Delta lake、Hudi格式的湖仓一体方案

    ​简介: Delta Lake 和 Hudi 是流行的开放格式的存储层,为数据湖同时提供流式和批处理的操作,这允许我们在数据湖上直接运行 BI 等应用,让数据分析师可以即时查询新的实时数据,从而对您的 ...

  5. 如何基于Dataphin实现敏感数据保护

    ​简介: 在企业的发展过程中,如果不重视敏感数据的保护,和数据安全体系的建设,那么一旦发生了敏感数据泄漏事件,轻则企业口碑受损,业务受影响:重则会直接触法律,受到主管部门的处罚和制裁.本文将以一个最常 ...

  6. [Mobi] frida Hook 略知一二: frida-CLI, frida-server

    Frida 是一款基于 python + javascript 的 hook 框架,主流平台都支持,由于是基于脚本的交互,因此相比 xposed 和 substrace cydia 更加便捷. 使用时 ...

  7. [FAQ] chrome.runtime.onMessage 问题, Unchecked runtime.lastError: The message port closed before a response was received

    // quasar background-hook.js chrome.runtime.onMessage.addListener(function (request, sender, sendRes ...

  8. van-tab吸顶后头部透明色渐变响应

    方法一:监听滚动事件 $('.scrollContent').bind('touchmove', function(e){             var  winHeight = $(window) ...

  9. 如何对一个新的 VSCode 配置 LaTeX

    texlive 的安装件参考资料 [1]. 往 VSCode 里面装 LaTeX Workshop 插件,也可以直接搜 James-Yu.latex-workshop. Ctrl+Shift+P 打开 ...

  10. C#开发的CPU使用率小应用 - 开源研究系列文章 - 个人小作品

    这次用C#编写一个CPU使用率的小应用.想了一下,大概需要两个内容:一个是获取CPU使用率:一个是托盘图标的动画效果.这两个内容在上次的博文中有介绍了,此博文为具体的应用的例子. 对于要实现的应用,首 ...