Pivotal已經公布了Spring Vault 1.0的通用版本。這是一個Java類庫,它提供了Hashicorp Vault(一款安全管理工具)的客戶端抽象。依照Spring的慣例,它會使Vault更易于集成到Spring或Java應用中。一些熟悉的模式包括模版、屬性來源等等。
Hashicorp Vault是一個工具,它為開發(fā)人員提供了以安全的方式進行安全的存取,比如API 令牌、SSL 證書和口令。它還處理用戶的訪問控制,具有撤銷令牌的能力。除此之外,它還有審計功能,可以用它來跟蹤用戶。
想要采用Vault 的Java開發(fā)人員通常會面對CLI或API的選擇。因此,當從JVM調用Vault時,很可能開發(fā)人員會選擇API并實現(xiàn)它們自己的客戶端類庫。Spring Vault讓開發(fā)人員不必再自己做這件事了,它為此提供了一個開源項目。它還以商業(yè)企業(yè)Pivotal作為后盾。
盡管它本身不依賴于Spring,但高層設計原則和抽象是類似的,目的是減少為開發(fā)人員提供的樣板代碼。這意味著該框架不僅可被普通Java開發(fā)人員采用,更特別適用于Spring開發(fā)人員。
為了與Vault交互, Spring Vault利用了中心類VaultTemplate。為了與Vault CLI和 API保持語義一致,它提供了"write”、”read”、”delete" 和 "revoke"等常見操作。
Secret toWrite = new Secret("foo");vaultTemplate.write("mysecret/myapp", toWrite);VaultResponseSupport toRead = vaultTemplate.read("mysecret/myapp", Secret.class);vaultTemplate.delete("mysecret/myapp");通過使用@VaultPropertySource 注解,可以使Spring Vault 隱含映射到Java對象,這是一種給定的宣言機制。
@VaultPropertySource(value = "foo/creds", propertyNamePrefix = "foo")public class SomeConfig { // ...}public class MyProperties { @Value("${foo.username}") private String awsAccessKey; @Value("${foo.password}") private String awsSecretKey; // ...}該類庫還支持多個認證機制:AppId、 AppRole、AWS EC2、TLS Certificates和 Cubbyhole。通過實現(xiàn)ClientAuthentication類即可指定它們,這表示為Java開發(fā)人員提供了一個更易于設置初始登錄的腳手架。
還可以通過SessionManager類交給框架來進行會話管理。這意味著令牌更新、吊銷等任務都是自動化處理的,不需要特別由應用代碼來完成,這又一次消減了一些額外的開發(fā)成本。
在官方文檔中可找到其他詳細內容,該類庫可以在 Maven Central中下載,源碼可以在GitHub中下載。
查看英文原文:Spring Vault GA 1.0 Released