我一直在努力制定一个有效的数据库备份encryptionscheme。
我有一个Postgres 9.4服务器,我认为大部分备份scheme都充实了。 备份将存储在一个标准的.sql文件中,通过gzip压缩,然后通过使用OpenSSL的AES-CBC运行。
我唯一遇到的麻烦是钥匙。 我不想使用一个主密钥,我想要某种密钥轮换或生成。 所有备份(或者至less大部分)都有不同的密钥,还有我可以很容易地find/生成和使用的密钥。 我曾在Google上看过,但找不到任何明确的解决scheme。
我也愿意评估完全不同的encryption解决scheme,我没有与AES-CBC / OpenSSL绑定。
任何解决scheme将不胜感激。
谢谢。
使用gpg( GnuPG )。
您将能够生成多个密钥,并使用选定列表中的任意密钥对文件进行encryption以解密。 此外,GPG密钥不对称 – 您的服务器只需要公钥进行encryption。 用于解密的私钥可以安全地存储在别的地方。
例如,您可以打印一个私钥作为您的导演的QR码,另一个用于存储在物理保险箱中。
至less在我知道的一个商用DBMS中实现的scheme使用两个密钥,我们称它们为主密钥和数据库密钥。
主密钥用于encryption数据库密钥。 数据库密钥可能更高,用于encryption和解密备份映像。
主密钥可以安全地旋转,因为它只需要您解密并重新encryption数据库密钥。
由于数据库密钥本身保持不变,无论多大年纪,都可以使用它来解密和恢复备份。
如果您要旋转数据库密钥,则需要解密并重新encryption所保留的所有备份,在许多情况下这将是不切实际的。
您可以应用@Tometzkybuild议的方法来encryption数据库密钥(虽然看起来更像是密钥添加,而不是密钥旋转 )。