前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >以数据为中心的数据安全基础能力建设探索

以数据为中心的数据安全基础能力建设探索

作者头像
FB客服
发布2023-03-30 19:27:54
8380
发布2023-03-30 19:27:54
举报
文章被收录于专栏:FreeBuf

企业数据安全治理,除了熟悉法律法规条文,信息采集最小化,服务入口明确隐私协议外,更多的是需要建设内部基础能力,如数据识别、分类分级、数据加密、权限管控等数据安全的基础能力。

本文数据为中心的理念,围绕数据识别、分类分级、基础防护几个方面,结合开源软件做一次梳理和功能演示,希望能帮助有需要的人员对数据安全有个直观的了解。

在数据识别基础上,建立数据资产大盘,实现数据资产风险识别、监测、运营的资产全生命周期管理;

在数据分类分级的基础上,对不同数据资产进行分类、分级,将优势资源投入到关键资产的安全防护上;

在数据安全基础防护方面,除了应具有基础设施和架构的安全稳固外,基于数据识别和分类分级,对存储、传输的敏感数据进行加密防护、账号权限管控、数据脱敏和分发管控,结合内外部风险变化,最终走向数据安全风控之路。

1. 数据识别、分类

在大数据时代的今天,如何做好数据识别、分类,在这个基础上建立数据资产全生命周期管理是很多企业面临的挑战。比如企业内部有多少数据库表明文存储手机号字段、有多少接口对外暴露且有手机号字段,这些数据库表、接口等资产又面临哪些风险,如何做到全生命周期的风险管控。针对结构化数据,如数据库表中字段识别、半结构化数据,如日志中的数据识别、非结构化如图片、音视频文件的数据识别,在识别能力的覆盖范围、识别准确率、对性能的影响等方面,这对很多企业还是有不小的挑战。

1.1. 内容识别示例

数据识别可以通过关键字、正则、算法等实现,网上文章很多,以及一些大厂也有成熟的识别技术和方案,从落地实现上主要还是基于业务场景,从数据类型上看主要分为结构化、半结构化、非结构化的数据识别。

结构化:关系型数据库

半结构化:日志数据、JSON数据、XML文档等

非结构化:HTML网页、办公文档、图片、音视频文件等

1.2. 分类分级管理展示

2. 利用ShardingSphere-Proxy实现敏感数据加密

ShardingSphere是apache顶级开源项目,旨在构建异构数据库上层的标准和生态。它关 注如何充分合理地利用数据库的计算和存储能力,而并非实现一个全新的数据库。ShardingSphere 站在 数据库的上层视角,关注他们之间的协作多于数据库自身。

连接、增量和可插拔是 Apache ShardingSphere 的核心概念。

连接:通过对数据库协议、SQL方言以及数据库存储的灵活适配,快速的连接应用与多模式的异构数据库;

增量:获取数据库的访问流量,并提供流量重定向(数据分片、读写分离、影子库)、流量变形(数据加密、数据脱敏)、流量鉴权(安全、审计、权限)、流量治理(熔断、限流)以及流量分析(服 务质量分析、可观察性)等透明化增量功能;

可插拔:项目采用微内核+三层可插拔模型,使内核、功能组件以及生态对接完全能够灵活的方式 进行插拔式扩展,开发者能够像使用积木一样定制属于自己的独特系统。

ShardingSphere-Proxy定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支 持。目前提供 MySQL 和 PostgreSQL。

安装

下载ShardingSphere‐Proxy 的最新发行版。解压缩后修改conf/server.yaml和以config-前缀开头的文件,如:conf/config-encrypt.yaml 文件,进行字段加密配置,其他配置如分片规则、读写分离规则配置暂不讨论。Linux 操作系统运行 bin/start.sh,可以指定proxy端口,bin/start.sh 3308.

敏感字段配置

代码语言:javascript
复制
(base) gengdeMacBook-Pro:conf js2thon$ mysql -h127.0.0.1 -uroot -P3308Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 13Server version: 8.0.20-Sharding-Proxy 4.1.0Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show tables;+----------------------+------------+| Tables_in_encrypt_db | Table_type |+----------------------+------------+| t_encrypt            | BASE TABLE |+----------------------+------------+1 row in set (0.03 sec)mysql> select * from t_encrypt;+----------+---------+-------------+| order_id | user_id | phone       |+----------+---------+-------------+|       10 |       0 | 18516014911 ||       11 |       1 | 18516014922 ||       12 |       2 | 18516014933 ||       13 |       3 | 18516014944 ||       14 |       4 | 18516014955 |+----------+---------+-------------+5 rows in set (0.09 sec)mysql> select * from t_encrypt;+----------+---------+--------------------------+-------------+| order_id | user_id | phone_cipher             | phone       |+----------+---------+--------------------------+-------------+|       10 |       0 | uFZ1RGQfxsUM+GUJqI5rlQ== | 18516014911 ||       11 |       1 | SGxnMaUHY/HR50hJcYp6Vg== | 18516014922 ||       12 |       2 | Z5NBefdS9WN3Bl6p45R1Dw== | 18516014933 ||       13 |       3 | SKqYOUF4dxloUH5M9t/wEg== | NULL        ||       14 |       4 | 4q+dOa+bxUTFSzX6AOjvUg== | NULL        |
+----------+---------+--------------------------+-------------+(向右滑动,查看更多)

3、利用Vault实现数据库动态凭证和数据加解密的接口调用

Hashicorp Vault解决了管理敏感信息的问题,如数据库凭证和API密钥就是需要以安全的方式存储和提供给应用程序的敏感数据,Vault支持许多secret引擎,部分如下:

Key-Value:简单的静态键值对 动态生成的凭据:由Vault根据客户端请求生成 加密密钥:用于使用客户端数据执行加密功能

3.1.数据库动态凭证

Vault安装配置较为简单,这里主要列下相关配置信息:

数据库链接配置

角色配置

获取数据库凭证

使用动态凭证登录验证

代码语言:javascript
复制
(base) js2thondeMacBook-Pro:Downloads js2thon$ mysql -u v-my-r-owFmZ3LFu -pM8DdaYZXYRU-rNIm2CbQmysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 1379Server version: 5.6.41-log MySQL Community Server (GPL)Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>(向右滑动,查看更多)

上面在Vault配置了用户只有SELECT权限,验证可以正常查询

代码语言:javascript
复制
mysql> use mysql_test;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables;+----------------------+| Tables_in_mysql_test |+----------------------+| account              |+----------------------+mysql> select * from account;+------+------+| id   | name |+------+------+|  100 | abc  |+------+------+1 row in set (0.00 sec)

执行数据插入操作,因为没有权限Vault报错。

代码语言:javascript
复制
mysql> insert into account values(101,'def');ERROR 1142 (42000): INSERT command denied to user 'v-my-r-owFmZ3LFu'@'localhost' for table 'account'

‍(向右滑动,查看更多)

3.2.数据加解密接口调用

Vault作为kms提供加解密接口,通过调用接口实现数据加解密,Vault数据密钥的创建可参考官网文档,此处忽略。

Vault管理后台密钥创建

加解密接口调用Python实现

4. 问题和思考

本文从数据识别、分类分级、配置管理、存储字段加密这个流程梳理下来,其实需要横向和纵向扩展的还非常多,统一密钥管理、账号权限、资产大盘、风险监测和运营管理,这些组成了数据安全的基础能力。上面也只是罗列了一些开源工具的能力,只是做了单点的简单功能演示,没有详细进一步去了解实现机制和优劣势,后续有精力再做深一步的研究,也希望有落地实现的同行交流实际经验,如在架构方案设计、异构适配、性能稳定性等方面的多维度实践探索。

精彩推荐

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 数据识别、分类
    • 1.1. 内容识别示例
      • 1.2. 分类分级管理展示
      • 2. 利用ShardingSphere-Proxy实现敏感数据加密
      • 3、利用Vault实现数据库动态凭证和数据加解密的接口调用
        • 3.1.数据库动态凭证
          • ‍(向右滑动,查看更多)
            • 3.2.数据加解密接口调用
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档