开源且廉价的“静态数据”加密解决方案

par*_*l81 5 mysql mariadb encryption transparent-data-encryption hsm

所以我正在探索一些有关数据库加密的选项。最好的选择是商业(TDE)。我正在寻找一个开源实现。MySQL 和 MariaDB 的最新版本具有静态数据功能:

MariaDB
https://mariadb.com/kb/en/mariadb/why-encrypt-mariadb-data/

MySQL 5.7.11 附带 InnoDB 表空间加密
https://dev.mysql.com/doc/refman/5.7/en/innodb-tablespace-encryption.html

对于公司而言,此实施中重要的是:这些是否符合 PCI-DSS / HIPAA 等?

来自 MariaDB:

MariaDB file_key_management 插件允许在文件中配置密钥。密钥文件在系统启动时读取,运行时不需要额外访问。加密的安全性取决于对密钥文件的访问限制。密钥文件本身可以加密,提供额外的保护层。

从我的角度来看,这意味着在启动(和操作系统重新启动)期间提供密钥解密?那么每当我们(重新)启动系统时,这是否意味着我们需要手动提供此密钥?使该密钥在服务器本身上可读将首先阻止静态数据加密的使用。

在 MySQL 5.7.11+ 中

MySQL 非企业版中的 InnoDB 表空间加密功能使用 keyring_file 插件进行加密密钥管理,这并不是一个合规解决方案。PCI、FIPS 等安全标准要求使用密钥管理系统来保护、管理和保护密钥库或硬件安全模块 (HSM) 中的加密密钥。

MySQL 企业版提供 keyring_okv 插件,其中包括一个 KMIP 客户端 (KMIP v1.2),可与 Oracle Key Vault (OKV) 配合提供加密密钥管理。OKV 等安全可靠的加密密钥管理解决方案对于安全性和遵守各种安全标准至关重要。除其他好处外,使用密钥保管库可确保密钥安全存储、永不丢失,并且只有授权密钥管理员知道。密钥保管库还维护加密密钥历史记录。

现在我想知道,这可以符合安全标准吗?使用此静态数据时,root 或 mysql 用户是否可以访问密钥,因为他们可以从内存中读取加密密钥?

小智 -1

那么您想要为您的业务关键应用程序和数据提供免费的解决方案吗?MySQL提供了免费的解决方案,但密钥文件存储在数据所在的同一位置。PostgreSQL还提供了免费的解决方案并对整个分区/磁盘进行加密,但是当服务器受到攻击时,它不提供安全的解决方案,因为用户可以读取已安装的磁盘及其数据。这是有风险的,因此您应该将加密密钥存储在安全的地方。我想问题是这个安全的地方在哪里,谁来保护它而不需要钱。我的意见是,你找不到这样的解决方案。