敏感数据处理

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

背景

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

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

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

技术设计

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

1462956107181

一些细节:

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

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

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

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

    173 引用 • 813 回帖 • 222 关注
  • 架构

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

    135 引用 • 441 回帖 • 1 关注
  • 数据库

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

    330 引用 • 605 回帖 • 1 关注

相关帖子

27 回帖

欢迎来到这里!

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

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

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

  • Vanessa 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

    • 安全和方便应该是矛盾的
    • 这个方案的出发点是这些数据真的非常敏感,是一个公司最核心的资产
  • Hassan 1
    捐赠者 支持者 订阅者

    表太多了。直接加密挺好的

  • 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

    送给不知怎去保护环境的人(包括我)。

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

推荐标签 标签

  • Sillot

    Sillot (汐洛)孵化自思源笔记,致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点
    Github 地址:https://github.com/Hi-Windom/Sillot

    11 引用
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 575 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    18 引用 • 30 回帖 • 3 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 575 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 22 回帖 • 624 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 550 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    176 引用 • 436 回帖 • 2 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    66 引用 • 188 回帖 • 507 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 4 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖 • 1 关注
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    23 引用 • 206 回帖 • 168 关注
  • BND

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

    107 引用 • 1281 回帖 • 2 关注
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    51 引用 • 189 回帖 • 2 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    330 引用 • 309 回帖 • 243 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 52 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖 • 1 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 27 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 568 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    483 引用 • 1387 回帖 • 466 关注
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    10 引用 • 54 回帖 • 108 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    51 引用 • 37 回帖
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    5 引用 • 35 回帖 • 2 关注
  • 数据库

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

    330 引用 • 605 回帖 • 1 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    103 引用 • 126 回帖 • 496 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    10 引用 • 81 回帖 • 2 关注
  • 安全

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

    173 引用 • 813 回帖 • 222 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 640 关注