Spring Security
Spring Vault 通过提供BytesKeyGenerator
和BytesEncryptor
的实现来与 Spring Security 集成。这两种实现都使用 Vault 的后端。transit
示例 1. 例
VaultBytesKeyGenerator
VaultOperations operations = …;
VaultBytesKeyGenerator generator = new VaultBytesKeyGenerator(operations);
byte[] key = generator.generateKey();
示例 2. 例
VaultBytesEncryptor
VaultTransitOperations transit = …;
VaultBytesEncryptor encryptor = new VaultBytesEncryptor(transit, "my-key-name");
byte[] ciphertext = encryptor.encrypt(plaintext);
byte[] result = encryptor.decrypt(ciphertext);
Vault 封装了一个熵源,该熵源与 JVM 以及服务器端密钥管理一起解耦。这减轻了应用程序开发人员进行适当加密/解密的负担,并将负担推给了 Vault 的操作员。Vault 的运营商通常包括组织的安全团队,这意味着他们可以确保数据得到正确加密/解密。此外,由于加密/解密操作必须进入审核日志,因此会记录任何解密事件。
后端还支持密钥轮换,这允许生成命名密钥的新版本。使用密钥加密的所有数据都将使用最新版本的密钥;以前加密的数据可以使用旧版本的密钥进行解密。管理员可以控制哪些以前版本的密钥可用于解密,以防止攻击者获得旧的密文副本以成功解密它。
毕竟,Vault 是一种联网服务,每次操作都会产生延迟。大量使用加密或随机字节生成的组件可能会遇到吞吐量和性能差异。