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 ...
随机推荐
- Spring Boot 微服务性能下降九成!使用 Arthas 定位根因
简介: 接收到公司业务部门的开发反馈,应用在升级公司内部框架后,UAT(预生产)环境接口性能压测不达标. 背景 接收到公司业务部门的开发反馈,应用在升级公司内部框架后,UAT(预生产)环境接口性能压测 ...
- PolarDB-X 2.0:使用一个透明的分布式数据库是一种什么体验
简介: 透明分布式,是PolarDB-X即将发布的能力,它能让应用在使用PolarDB-X的过程中,犹如使用单机数据库一般的体验.与传统的中间件类型的"分布式数据库"相比,有了透明 ...
- TSDB时序数据库时序数据压缩解压技术浅析
简介: 目前,物联网.工业互联网.车联网等智能互联技术在各个行业场景下快速普及应用,导致联网传感器.智能设备数量急剧增加,随之而来的海量时序监控数据存储.处理问题,也为时序数据库高效压缩.存储数据能 ...
- [Roblox] 从障碍跑入门构建基础平台游戏_罗布乐思
对于障碍跑来说,底板部分是可以不需要的 这样掉下障碍物就结束游戏,Baseplate 可以在右侧资源管理器 选中后Delete. SpawnLocation 标记玩家在游戏开始时或重新开始后在世界 ...
- [FAQ] uni-app 不支持 v-cloak 情况下如何处理 v-if 页面闪烁问题
在 Vue 中存在使用 v-if 决定元素显示隐藏的时候,会出现页面闪烁,那么当然 uni-app 中也存在了. 如果编译完后,需要满足 js 的某个条件才隐藏,页面元素必然会有闪烁的情况. 所以解决 ...
- 2018-2-13-win10-uwp-修改CalendarDatePicker图标颜色
title author date CreateTime categories win10 uwp 修改CalendarDatePicker图标颜色 lindexi 2018-2-13 17:23:3 ...
- 简说Python之面向对象
目录 Python对象 对象的内置方法 __init__方法 __str__方法 对象的多态 对象的封装 对象的继承 之前介绍了函数.对象代表了什么.可以称为"一篮子"计划,把数据 ...
- vue03 01.vite创建项目
目录 01.创建项目 打包工具 vite介绍 安装命令 安装项目依赖 启动项目 浏览效果 代码目录 打包 预览运行 插件使用 编辑器 01.创建项目 打包工具 vite官网 vite创建项目 vite ...
- go-admin migrate 数据表迁移
目录 视频教程 应用场景 目录说明 数据迁移 迁移步骤 配置数据库 常用命令示例 新建模型实例 3.1 方式一:不编译运行(推荐) 3.2 方式二:编译并运行迁移 3.3 方式三:golangIDE ...
- gin返回json假数据
package main import ( "github.com/gin-gonic/gin" "encoding/json" "fmt" ...