数据库安全:我在分析2024年文章时学到的

发布: (2026年2月12日 GMT+8 08:18)
5 分钟阅读
原文: Dev.to

Source: Dev.to

访问控制:为什么 GRANT 不够?

DAC(自主访问控制)

前提很简单:如果我是表 usuarios 的拥有者,我可以执行 GRANT SELECT 命令,让你查看数据。听起来很公平,对吧?

MAC(强制访问控制)

这里由系统而不是用户来决定。文章引用了 Bell‑LaPadula 模型,这是由军方提出的,使用安全“标签”(机密、秘密、最高机密)并遵循两条铁律:

  • No Read Up(简单属性) – 具有“机密”级别的用户永远不能读取“最高机密”文件。
  • No Write Down(星属性) – 具有“最高机密”级别的用户不能把文件保存到“机密”文件夹,以防止信息意外或故意泄露到低级别。

RBAC(基于角色的访问控制)

我们不是给“Vinicius”单独授权,而是给“DevOps Junior”角色授权。如果 Vinicius 调岗,权限会随角色变化,从而简化管理。

统计数据库中的“推断”魔法

场景: 你想知道 Jane Smith 是否患有某种特定疾病,或她的工资是多少。已知 Jane 是唯一一位居住在 X 区、拥有物理学博士学位的女性。

  1. 执行查询:

    SELECT AVG(salario) FROM usuarios
    WHERE genero = 'F' AND titulo = 'Doutora' AND area = 'Física' AND bairro = 'X';
  2. 数据库将此查询识别为统计查询并返回结果。由于该组的 COUNT 为 1,返回的“平均值”实际上就是 Jane 的精确工资。

在没有任何黑客手段的情况下,机密性已被破坏。为降低此风险,Google、Apple 等巨头采用 差分隐私,在结果中加入数学“噪声”(例如:100 可能返回为 102 或 98),在保持统计可用性的同时保护个人。

隐蔽通道:不触碰数据的攻击

隐蔽通道(Covert Channels)由 CAPEC (MITRE) 描述为使用非通信目的的手段传递信息,从而违反安全策略。

时间通道(Timing Channels)

  • 如果秘密位为 1,进程会执行一个约 100 ms 的密集循环。
  • 如果秘密位为 0,进程会快速休眠(约 10 ms)。
  • 没有权限的外部进程测量 CPU 使用情况。CPU 占用 → 记录为 “1”;CPU 空闲 → 记录为 “0”。信息被泄露。

存储通道(Storage Channels)

(对利用共享存储资源传递信息位的技术进行的简要描述。)

文章的“失误”(我的批评)

  • DES(数据加密标准) – 文章仍然花篇幅讨论 DES,而它已经过时。
  • AES(高级加密标准) – 更加安全且被广泛采用。在近期的学术工作中讨论 DES,就像在讲汽车机械时只谈蒸汽发动机:历史有趣,但若直接用于实践则危险。

结论

数据库安全首先是 架构:Bell‑LaPadula 等模型以及对推断的防护仍然是关键且永恒的。然而,保持怀疑的态度同样重要。技术发展迅速;仅掌握 1990 年代的数据流理论并不能保证 2024 年云数据库的安全,尤其在仍使用已废弃算法的情况下。

关键在于将扎实的数学基础与现代 DevSecOps 工具相结合。安全不是你买来的产品,而是一个过程(而且显然,需要大量数学)。

0 浏览
Back to Blog

相关文章

阅读更多 »