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