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 畢竟是一個網路服務,每次操作都會產生延遲。大量使用加密或隨機位元組生成的元件可能會在吞吐量和效能方面出現差異。