摘要:介绍常见数据库安全机制的原理:
1.身份认证
2.安全传输
3.安全审计
4.访问控制
5.数据发现
6.数据防篡改
7.加密函数
8.透明加密
9.数据脱敏
10.全密态加密
11.机密计算

1 数据库安全概述

1.1 数据库基本功能

本文讨论数据库安全,为方便理解,将大部分软件架构简化为2个主体:应用端与数据库端。

  • 应用:实现业务逻辑,收集业务数据,将数据发送至数据库,由数据库提供数据存储功能,并且,要求数据库提供数据查询功能
  • 数据库:存储业务数据,向应用提供SQL接口,接收应用发送的SQL语句,并处理SQL语句。同时,解决高并发、高性能、高可靠的问题

大部分场景中,应用与数据库部署于不同主机上,以下是一个应用使用数据库实现数据存储与查询的示例流程:

  1. 建立连接:应用与数据库建立网络连接

  2. 定义数据:应用向数据库发送以下SQL语句,创建1个表

    CREATE TABLE t1 (c1 INT, c2 TEXT);
    
  3. 存储数据:应用向数据库发送以下SQL语句,向表中存储数据

    INSERT INTO t1 VALUES (1, 'abc');
    
  4. 查询数据:应用向数据库发送以下SQL语句,从表中查询数据

    SELECT * FROM t1;
    

1.2 数据库基本架构

数据库架构较复杂,此处先将数据库架构简单划分为以下3个部分:

  • 数据库驱动:集成到应用内部,向应用提供编程接口,常见接口有:连接数据库、执行SQL语句等
  • 计算模块:解析SQL语句,并按合理地执行流程处理SQL语句中的请求,调用存储模块接口实现数据存储与读取
  • 存储模块:合理组织数据,调用IO接口,实现磁盘读写操作。向计算模块提供接口

1.3 数据库安全威胁

在应用使用数据库的过程中,攻击者可能对整个系统造成恶意攻击,攻击的最终目标是:

  • 破坏业务数据:窃取、伪造、篡改、损坏等
  • 破坏业务系统:拒绝服务等

攻击者针对多个系统薄弱点进行功能:

  • 数据库网络:协议等
  • 数据库应用:身份认证机制等
  • 数据库主机:操作系统、软件(除数据库外的其他软件)、硬件等

假设应用与数据库部署在不同主机,分为是下图中的主机c和主机z,常见安全威胁的架构图如下:

risk

1.4 数据安全架构

针对各类威胁,数据库提供多种安全机制,保护数据与数据库安全,常见的安全机制如下:

  1. 身份认证:阻止非法用户与数据库建立网络连接
  2. 安全传输:阻止非法用户窃取、篡改、伪造、..传输数据
  3. 安全审计:记录非法/合法用户对数据库的操作
  4. 访问控制:缩小非法用户对数据库的访问范围
  5. 数据发现:协助合法用户识别敏感数据
  6. 数据防篡改:识别非法用户篡改、伪造、..存储数据
  7. 加密函数:协助合法用户加密存储数据
  8. 透明加密:阻止非法用户窃取、篡改、伪造、..存储数据
  9. 数据脱敏:缩小非法用户对数据内容的访问范围
  10. 全密态加密:阻止非法用户窃取、篡改、伪造、..传输、计算、存储数据
  11. 机密计算:阻止非法用户窃取、篡改、伪造计算数据

按对数据处理的顺序,各安全机制的架构如下图所示:

struct

2 数据库安全特性

2.1 身份认证

2.2 安全传输

2.3 安全审计

2.4 访问控制

2.5 数据发现

2.6 数据防篡改

2.7 加密函数

2.8 透明加密

2.9 数据脱敏

2.10 全密态加密

2.11 机密计算