Spring 安全框架
Spring Vault 通过与 Spring Security 集成,提供了 BytesKeyGenerator 和 BytesEncryptor 的实现。这两个实现都使用了 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 毕竟是一个网络服务,每个操作都会带来一定的延迟。那些大量使用加密或随机字节生成的组件可能会在吞吐量和性能上感受到差异。