所以我正在探索一些有关数据库加密的选项。最好的选择是商业(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 用户是否可以访问密钥,因为他们可以从内存中读取加密密钥?