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