Spring Security

Spring Vault 整合 Spring Security,提供 BytesKeyGeneratorBytesEncryptor 的實作。這兩種實作都使用 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 是一個網路服務,每次操作都會產生延遲。大量使用加密或隨機位元組產生的組件可能會在吞吐量和效能方面遇到差異。