敏感数据处理

本贴最后更新于 2709 天前,其中的信息可能已经时移俗易

背景

大多数应用或多或少都会涉及到敏感数据处理,比如用户的手机号、身份证号,甚至银行卡账号。作为应用的开发者,如何 安全地 维护这些敏感数据呢?

这里讨论的安全不是指服务器如何保护,而是在数据库层面做敏感数据的分离:

  • 业务库中不保存敏感数据,只保存混淆过的数据,比如电话字段保存的是 133****9961,在数据层面就进行脱敏
  • 敏感数据统一保存在另一个库中,有应用调用一个服务来建立原值和混淆值的映射关系
  • 业务库中因为保存的是脱敏过的数据,通过只读复制镜像可以很方便地提供给其他服务使用,比如 OLAP
  • 除了技术开发上方便,运维上也方便了很多,降低了敏感数据被暴露到外部的可能性

技术设计

提供服务接口给应用存取敏感数据,本质上是一个 KV 存取服务。

1462956107181

一些细节:

  • 表 protyle 的 domain 字段用于标识该记录的作用域,在一个作用域上相同的值要保证唯一
  • 表 protyle 的 hash 字段值是 SHA-512(domain/value) 的结果,用于唯一性校验

大家有相关经验么?欢迎讨论~

  • 敏感数据
    1 引用 • 27 回帖
  • 安全

    安全永远都不是一个小问题。

    189 引用 • 813 回帖 • 1 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    140 引用 • 441 回帖
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    331 引用 • 614 回帖

相关帖子

27 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • yangyujiao 1

    我们就是明目张胆的保存了电话号码···

  • @yangyujiao 这个是业主电话,泄露出去,公司就垮掉了

  • wgh

    我们是直接全加密保存

  • sweat89 1

    弄个算法,加密存 DB,业务层解密进行业务处理。有啥问题

  • 88250

    @sweat89 @wgh

    • 把鸡蛋都放一个篮子里
    • 业务来解决这个问题的话不方便复用
  • pianopaper

    @88250 加解密复用也仅仅是加解密 function 而已呀?遵循使用规则就是拿出 function 解密一下,放进去 function 加密一下呀

  • zonghua 1

    @Vanessa 哈,那么邮箱也是不能明文了吧

  • wgh

    我感觉文章里说的那种方式更麻烦

  • pianopaper

    @wgh 咱觉得也是挺麻烦的

  • 714593351 1

    我们直接存手机号明文。。。

  • wgh

    个人觉得加密解密这种方式最方便也最简单

  • 88250

    @wgh @pianopaper

    • 安全和方便应该是矛盾的
    • 这个方案的出发点是这些数据真的非常敏感,是一个公司最核心的资产
  • 表太多了。直接加密挺好的

  • wgh 1

    @88250 我感觉是一样的,只要别人解不了密就算获取到数据也没用!

  • pianopaper 1

    @88250 其实个人认为安全没有绝对的,只是在被获取的难度是否增加到一定级别,也就是被泄露的可能性是如何的,如若因为这些数据非常敏感,那放内网里进行处理是一个不错的办法(金士达的做法),所有的处理都要通过一个中间层(单独写进程来处理),所有数据均和其进行通讯

  • 88250

    @pianopaper 嗯,该方案就是这个思路

  • someone1764

    其实..在数据泄露的时候已经..

  • pianopaper 1

    @88250 这确实会增加运维难度,如果这是一个产品,中间层组件的写作需要遵循某种规则,举个例子,交易系统里的业务逻辑全部都是用存储过程来做的,UI 就仅仅做信号传递,比如,UI 点查询按钮,那么就传递一个 532232 到中间件,中间件会根据这个信号,来做到 db 的连接,同时传递 p532232 到 db 去做存储过程的处理,为什么要做 532232 到 p532232 的转换呢?因为存储过程里的命名也是有规则的,比如 db 有一个存储过程叫做 p532232 用来做查询操作的,处理得到的结果通过某种数据结构,经过中间层,再回传到 UI,同时,db,中间层,UI 都留下操作日志

  • pianopaper 1

    @88250 运维的难度就在,产品中间组件增多,会有升级,那么,升级要遵循什么规则?部署呢?多机情况呢?

  • 88250

    @pianopaper 为了安全,值得去做,或者说不得不做....

  • pianopaper 1

    @88250 这些要有人来控开发成本和风险咯,就完全不是一个人的事情咯

  • 88250

    @pianopaper 嗯,当然,而且运维上面也要非常细致和小心

  • pianopaper 1

    @88250 这里有几点个人体会分享一下,原公司站点为 windows server 2008,所用容器为 tomcat,改版的时候,考虑了一下到底是不是要换成 linux 下的 nginx 还是用张宴写的集成式的简单容器做部署,考虑来考虑去,全部人对 linux 这块也就只会敲 cd mv 等等命令,就不用说 find 文件等稍微复杂的操作了,公司的培训体系是,文档写完,图文并茂,不管会不会 linux,只要按照图文讲的进行操作,即使不知道这一步做的意思是什么,也能正常完成整个操作(所谓的常规运维,也就是点点鼠标),所以最终决定还是用张宴的集成式容器来做了部署,写个 VB 的 UI 把所有备份恢复的操作一并处理完,虽然个人觉得不是很对劲,但是这能满足在现状上大部分人的操作,一些东西如果是不得不做的话,需要有人来牵头做(谁做谁负责,做好咱 follow),成本,代价,现状等等,不是一个人能考虑得了的

  • zjhch123 1

    我是直接 DES 加密存的…每个用户都有独一无二的密文,然后根据这个密文加密

  • 88250

    @zjhch123 那密文你存哪?

  • bozong

    @88250 有手机端吗?

  • someone

    回帖已被屏蔽,内容不再显示。

    该回帖因违反社区行为准则或内容协议已被封禁
请输入回帖内容 ...

推荐标签 标签

  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 14 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    27 引用 • 66 回帖
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 45 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 184 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖 • 1 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    14 引用 • 7 回帖
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 197 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 5 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    138 引用 • 268 回帖 • 179 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 27 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖 • 1 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    324 引用 • 1395 回帖 • 1 关注
  • 电影

    这是一个不能说的秘密。

    120 引用 • 597 回帖
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    215 引用 • 463 回帖
  • OnlyOffice
    4 引用 • 20 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 31 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    106 引用 • 152 回帖 • 1 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    89 引用 • 113 回帖
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    76 引用 • 37 回帖
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 137 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    129 引用 • 793 回帖
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 644 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    76 引用 • 390 回帖
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 363 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    140 引用 • 441 回帖
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 50 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 43 关注