我正在寻找有关为 MySQL 加密字段(和/或表,如果可能)的指导。我会接受一个体面的教程,但我真的很想要一些关于管理从未加密模式到使用加密字段的转换的具体技巧。谢谢!
5 回答
与字段的 AES_ENCRYPT 一起,如果您要存储敏感信息,最好也通过网络启用 SSL。还要考虑敏感数据库机器的网络分离 (vlan) 和其他标准安全实践。密钥存储很重要(共享的 aes 密钥挂在哪里,肯定不在网络服务器上!)并考虑对索引/查询的影响,因为搜索或连接表数据将不像以前那么简单。
实际上有(至少)两种方法。您可以加密存储在表中的数据(使用 EAS/DES 函数,例如http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html)
或者您可以使用加密的硬盘分区来存储您的数据文件夹(例如使用 TrueCrypt)
在字段级别加密数据库有什么价值?这是您真正想要的,还是在操作系统或 SAN 级别加密就足够了?您是否打算滚动密钥,或者只是永久保留相同的加密密钥?加密会破坏表索引、引用或字段类型吗?您将如何在数据库集群中共享加密密钥?
我只是提出这些观点,因为数据库加密通常是管理层想要的东西,但没有人能真正解释增值或如何实施......
想想你试图通过加密实现什么?不幸的是,没有简单的安全解决方案。
请记住,您用于加密的密钥可以从您的代码中获取。所以从黑客的角度来看,绕过加密是很容易的。您还需要考虑您的架构和基础设施。
首先,只有数据加密不是答案。
您应该知道并控制“谁可以访问和访问数据”。
尽管您自己加密数据,但攻击者可以获取加密数据。为了防止它,您应该控制访问权限或权限。此外,您应该知道谁访问了加密数据。因为在当今时代,数据不仅可以被外部用户窃取,还可以被内部用户窃取。
您应该加密数据、控制权限并审核访问者。
在那些日子里,这三(3)项技术已经以各种方式发展。大多数公司都购买了每种解决方案。
但是对于个人用户来说,很难购买它并自己构建这些环境。此外,MySQL 的 Encryption Function 不提供这些功能。
我想查看提供这三 (3) 个功能的此链接。
以我的经验,它可以提供一定的安全性。(我是 SME 的 CISO。)