ES 数据太敏感不让看,怎么办?
在使用 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 数据太敏感不让看,怎么办?的更多相关文章
- 深度剖析HashMap的数据存储实现原理(看完必懂篇)
深度剖析HashMap的数据存储实现原理(看完必懂篇) 具体的原理分析可以参考一下两篇文章,有透彻的分析! 参考资料: 1. https://www.jianshu.com/p/17177c12f84 ...
- 关于chart.js 设置canvas的宽度为父级元素的宽度的百分百 以及 X轴上面刻度数据太多如何处理
今天在做一个数据统计的界面的时候,需要做折线统计图,在网上找了一圈发现数据统计的插件还是不少的,本着轻量级的的原则选择了Chart.js,后来在做的过程中便遇到两个问题,以此记录下来,和刚刚接触前端的 ...
- 解决持久化数据太大,单个节点的硬盘无法存储的问题;解决运算量太大,单个节点的内存、CPU无法处理的问题
需要学习的技术很多,要自学新知识也不是一件容易的事,选择一个自己比较感兴趣的会是一个比较好的开端,于是,打算学一学分布式系统. 带着问题,有目的的学习,先了解整体架构,在深入感兴趣的细节,这是我的计划 ...
- hdu 4940 数据太水...
http://acm.hdu.edu.cn/showproblem.php?pid=4940 给出一个有向强连通图,每条边有两个值分别是破坏该边的代价和把该边建成无向边的代价(建立无向边的前提是删除该 ...
- hdoj 4272 LianLianKan 数据太水
LianLianKan Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- ireport报表制作, 当一个字段显示的数据太多时(数据过长),则需要自动换行
1.当一个字段显示的数据太长,一个表格放不下,则需要自动换行,选中要更改的表格(要显示动态内容的字段),设置属性Stretch with overflow 为钩选状态. 未勾选之前: 勾选之后: 2. ...
- 有些有IP的项目,公司不至于测试不行砍项目,但是会砍项目组,把IP收回交给别的团队做(因为一旦一测数据太差,公司(投资人)会判断在二测的时候数据能提升到什么样。说白了就是历史信用问题)
作者:匿名用户链接:https://www.zhihu.com/question/309778033/answer/579761064来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
- es 数据 导出 到 MySQL
暂时没有找到直接 导出到 mysql 数据库的工具 或者项目 目前实现思路: 使用 elasticdump 工具 实现 从 es 数据 导出到 json 文件 ,然后 使用 脚本程序 操作 改 js ...
- es数据增删改查
设置最大查询条数 curl -XPUT 'http://10.121.8.5:9200/zdl_mx_shzt_ztdf/_settings' -d'{"index":{" ...
- ES数据架构与关系数据库Mysql
ES数据架构的主要概念(与关系数据库Mysql对比) MySQL ElasticSearch Database Index Table Type Row Document Column Field S ...
随机推荐
- vue-manage-system 版本更新,让开发更加简单
vue-manage-system 近期进行了一次版本升级,主要是支持了更多功能.升级依赖版本和优化样式,并且上线了官方文档网站,大部分功能都有文档或者使用示例,更加适合新手上手开发,只需要根据实际业 ...
- 力扣184(MySQL)-部门工资最高的员工(中等)
题目: 表: Employee 表: Department 编写SQL查询以查找每个部门中薪资最高的员工.按 任意顺序 返回结果表.查询结果格式如下例所示. 解题思路: 方法一:窗口函数和多表联结 ...
- 力扣150(java)-逆波兰表达式求值(中等)
题目: 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 注意 两个整数之间的除法只保留整数部分. 可以保证给定的逆波兰表达式 ...
- 龙蜥利器:系统运维工具 SysAK的云上应用性能诊断 | 龙蜥技术
简介:本文从大量的性能诊断实践出发,来介绍 SysAK 在性能诊断上的方法论及相关工具. 文/张毅:系统运维SIG核心成员.SysAK 项目负责人:毛文安:系统运维 SIG 负责人. 系统运维既 ...
- 凭证管理揭秘:Cookie-Session 与 JWT 方案的对决
概述 在上一篇文章我们聊完了授权的过程,在服务器对客户端完成授权之后,服务器会给客户端颁发对应的凭证,客户端持有该凭证访问服务端,服务器便能知道你是谁,你有什么权限等信息.这一章我们具体聊聊常见的凭证 ...
- WPF 修复 ContextMenu 在开启 PerMonitorV2 后所用 DPI 错误
本文告诉大家如何修复 WPF 的 ContextMenu 在开启 PerMonitorV2 之后,在双屏不同的 DPI 的设备上,在副屏弹出的 ContextMenu 使用了主屏的 DPI 导致缩放错 ...
- QT 连接 MySQL 版本问题
问题现象 SSL connection error: unknown error number QMYSQL: Unable to connect 问题原因 出现这样的现象是因为我QT使用的是5.7的 ...
- docker、docker-compose 常用命令
1.docker 常用命令 创建容器:docker create 启动容器:docker start [id] 停止容器:docker stop [id] 停止全部运行的容器:docker stop ...
- Jmeter-线程组下篇
线程组 线程组作为JMeter测试计划的核心组件之一,对于模拟并发用户的行为至关重要.线程组元件是整个测试计划的入口,所有的取样器和控制器必须放置在线程组下. 可以将线程组视为一个虚拟用户池,其中每个 ...
- minicube安装
minicube安装 一.安装手册: https://minikube.sigs.k8s.io/docs/start/ 二.安装 打开官网,选择和自己对应的系统和要下载的版本.点击下面的release ...