数据库管理系统 DBMS

DBMS 是用于创建和维护数据库的程序套件,为用户和应用提供统一的数据库访问接口。

体系结构

DDL 处理器

Data Definition Language Processor

DDL 数据定义语言用于定义数据库的结构,包括创建、修改和删除数据库中的表、索引和其他对象。DDL 处理器负责解释和执行 DDL 语句,并将这些定义存储在数据描述表中。

DML 和查询语言处理器

Data Manipulation Language and Query Language

DML 用于访问和操纵数据库中的数据,包括插入、更新、删除和查询数据。查询语言(SQL)通常是 DML 的一个子集,专门从数据库中检索数据。DML 和查询语言处理器负责解释和执行这些语句,并将用户的请求转换为 DBMS 能够理解的操作。

事务管理器 Transaction Manager

事务指作为单个逻辑工作单元执行的一系列操作。事务管理器负责确保数据事务的 ACID 属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

文件管理器

负责在屋里存储设备上存储和组织数据库文件。

授权表

存储用户对数据库的访问权限信息。DBMS 使用授权表来控制用户对数据库对象的访问,例如表、师傅和存储过程。

关系数据库

关系数据库的基本组成是数据表:由行(记录)和列(字段)构成

  • 主键:表中用来唯一标识每一行数据的一个或多个列的组合。必须唯一,不能为空。
  • 外键:用于建立两个表之间的联系。它是一个表中的列,指向另一个表的主键。外键可以帮助维护数据的一致性。
  • 视图:视图是一个虚拟表,它是从一个或多个表中导出的,其内容是根据查询定义的。视图可以简化复杂的查询,如果经常需要查询学生的姓名、年龄和学院,可以创建一个包含这些信息的视图,而不用每次都编写复杂的 SQL 查询。通过视图,可以允许用户访问表的特定部分,而隐藏其他敏感数据。

SQL 注入攻击

注入攻击的途径

  • 用户输入(登录表单、搜索框)
  • 服务器变量(HTTP 请求头、cookie)
  • 二阶注入:先把恶意数据存入数据库,然后等待某个功能去调用这些数据,从而触发注入

注入攻击的类型

带内攻击

攻击者通过相同的通信通道发送注入代码和获取结果

  • 重言式注入:构造永远为真的条件绕过验证
  • 行尾注释:使用注释符号 -- 来终止原始查询,执行恶意代码
  • 捎带查询:在原始查询后面附加额外的查询

推理攻击

攻击者不获取数据,而是通过观察服务器的响应来推断信息

盲 SQL 注入 即使服务器不返回错误信息,攻击者也能够通过构造不同的条件,观察页面是否发生变化来判断数据库中的信息

外带攻击

使用不同的通信通道来获取数据

在正常的 SQL 注入攻击(即“带内攻击”)中,攻击者通过同一个通道发送恶意 SQL 代码,并期望服务器在同一个通道中返回查询结果。但有时候,Web 应用程序或数据库服务器的安全设置可能会限制这种直接的数据返回。例如:

  • Web 服务器可能不会显示详细的错误信息,这使得攻击者难以直接从页面上看到查询结果。
  • 防火墙或其他网络安全设备可能会阻止某些类型的出站连接,从而阻止数据库服务器将数据直接返回给攻击者。

在这些情况下,攻击者可能会选择使用带外攻击,以绕过这些限制。常见的方式包括:

  • DNS (域名系统) 查询: 攻击者可以构造 SQL 查询,使数据库服务器尝试解析一个由攻击者控制的域名。通过监视 DNS 查询,攻击者可以获取少量的数据。例如,他们可以将数据编码到域名中。
  • HTTP 请求: 某些数据库系统支持发出 HTTP 请求。攻击者可以利用这一点,让数据库服务器将数据发送到攻击者控制的 Web 服务器。
  • 电子邮件: 数据库服务器可能会被指示发送包含敏感数据的电子邮件。
  • 文件共享: 在某些情况下,攻击者可能会尝试让数据库服务器将数据写入到网络共享位置。

防范方法

  • 防御性编码:避免将用户输入直接拼接到 SQL 查询语句中。使用参数化查询、预编译语句,把用户输入当做数据而不是命令来执行从而防止注入
  • 检测:在运行时检测 SQL 查询是否符合预期模式,基于签名、SQL DOM、异常、代码分析等手段分析 SQL 的查询语法结构等特征判断是否存在注入攻击

数据库访问控制

数据库访问控制用于确定用户是否具有访问数据库的权限以及拥有哪些访问权限。

基于 SQL 的访问定义和基于角色的访问控制

  • GTANT 用于给用户或角色授予特定的数据库操作权限
  • REVOKE 撤销之前授予用户的权限

基于角色的访问控制 RBAC

RBAC 中的用户分类

在数据库系统中,用户通常可以分为以下几类:

  • 应用程序属主: 拥有数据库对象,并将其作为应用程序一部分的终端用户.
  • 应用程序最终用户: 不拥有任何数据库对象,但可以通过应用程序操作数据库对象的终端用户.
  • 管理员: 对数据库的整体或部分负有管理职责的用户.

推理

推理指通过合法的查询从非敏感数据中推导出敏感数据的过程

数据库加密

优缺点

最后一道防线了,防止未授权访问。

但是密钥的管理是个问题。性能可能会损失,灵活性降低。

加密方案的设计

  • 加密粒度选择
  • 加密算法
  • 密钥管理

数据中心安全

数据中心安全模型

数据中心安全是一个多层次、综合性的概念,它不仅仅关注技术层面的安全,还包括物理安全、管理安全等多个方面。一个典型的数据中心安全模型通常包括以下几个层次:  

  • 数据安全: 这是核心,包括加密、口令策略、数据脱敏、数据备份和恢复等,旨在保护数据本身的机密性、完整性和可用性.
  • 网络安全: 保护数据中心网络基础设施的安全,包括防火墙、入侵检测/防御系统、认证机制等,防止未经授权的访问和网络攻击.
  • 物理安全: 保护数据中心物理场所的安全,包括监控系统、门禁系统、生物识别、安全区域划分等,防止物理入侵和破坏.
  • 场地安全: 这是最外层,关注数据中心选址、周边环境安全,例如设置障碍物、冗余设施、缓冲区域等,降低自然灾害和人为攻击的风险.

TIA-942 标准

TIA-942 是电信工业协会发布的一个数据中心电信基础设施标准,它为数据中心的设计、建设和运营提供了详细的指导. 这个标准涵盖了数据中心的各个方面,包括:  

  • 网络架构: 如何设计数据中心内部的网络拓扑结构,以实现高可用性和高性能.
  • 电气设计: 电力供应系统的设计,包括冗余电源、UPS、发电机等,确保数据中心电力供应的可靠性.
  • 文件存储、备份及归档: 数据存储系统的设计,以及数据备份和归档策略.
  • 系统冗余: 如何设计冗余系统,以提高数据中心的容错能力,减少故障带来的影响.
  • 网络访问控制和安全: 数据中心网络的安全策略和访问控制机制.
  • 数据库管理: 数据库系统的管理和安全.
  • 虚拟主机和应用托管: 虚拟化技术和应用托管环境的安全.
  • 内容分发: 内容分发网络(CDN)的安全.
  • 环境控制: 数据中心的环境控制系统,如温度、湿度控制,以保证设备正常运行.
  • 防止物理灾害: 预防火灾、洪水、风暴等自然灾害的措施.
  • 电源管理: 数据中心的电源使用效率管理.

TIA-942 中定义的数据中心等级

TIA-942 标准将数据中心分为四个等级,每个等级代表不同的可用性和可靠性水平:  

  • 等级 1: 基本的数据中心,容易受到各种干扰,没有冗余.
  • 等级 2: 在等级 1 的基础上增加了一些冗余组件,提高了一定的可用性.
  • 等级 3: 具有多条电力和制冷路径,包含冗余组件,能够在计划内维护期间保持运行.
  • 等级 4: 最高等级,设计目标是能够承受最严重的计划外事件,同时保持关键业务运行.