Vault
vault-1.3.1版本為例,運用于SpringCloudConfig
介紹
By HashiCrop,Vault是一種密鑰存儲的服務(wù)工具軟件,如大量的賬戶名、密碼、Key加密Key等,它有靈活的權(quán)限控制、詳細的操作記錄、歷史版本等。目前是有商用版和開源版提供,即支持命令行操作又支持UI管理界面,十分成熟且有好些年頭了,支持命令行操作和Web管理。
官網(wǎng):hashicorp-vault, 代碼庫:vault-github
安裝使用
Vault是HashiCrop公司推出,他們公司還有個產(chǎn)品叫:Consul,相信這個肯定知道的。
對于敢在官網(wǎng)直接放Github社區(qū)源代碼鏈接的公司,天然有好感。官網(wǎng)菜單有個“learn”選項里面有非常詳細的安裝、啟動、使用文檔(都是英文),按著一步步很輕松就能掌握Vault。在國內(nèi)訪問網(wǎng)站經(jīng)常會連不上,他們還沒有提供PDF下載,對于新手來說會有掉鏈子的感覺。
安裝的是1.3.1版本(目前最新了),配置分享給大家看看。實施的具體步驟就不說了,官網(wǎng)已經(jīng)在傻瓜式介紹了,再啰嗦沒有意義。它的配置采用他們自定義的HCL語法,代碼也是采用Go編寫同時開源了。
disable_mlock = true
ui = true
storage "MySQL" {
address = "127.0.0.1:3306"
username = "mysql"
password = "mysql"
database = "vault"
ha_enabled = "true"
}
listener "tcp" {
address = "127.0.0.1:8200"
tls_disable = 1
tls_disable_client_certs = 1
}
cluster_name = "cluter_vault"
disable_cache = true
log_level = "Debug"
api_addr = "http://127.0.0.1:8200"
吐槽一下官網(wǎng)文檔中關(guān)于API這塊就是坑,文檔對于URL的PATH描述和示例都是錯誤的,如下:
$ curl
-H "X-Vault-Token: f3b09679-3001-009d-2b80-9c306ab81aa6"
-X GET
http://127.0.0.1:8200/v1/secret/foo
在path中是有關(guān)鍵字段的,如“data”,看下圖:
官網(wǎng)在API請求路徑描述上是錯誤的(應(yīng)該是沒及時更新),實在是害人不淺,但有個help接口是正確的可以幫助理解path的格式規(guī)范,如:http://localhost:8200/v1/secret/?help=1。作為SpringCloudConfig選項后臺,目前到data層面的保存使用已經(jīng)跑通也基本夠使用,其他的后續(xù)再慢慢摸索。
支持多種存儲
下面列出常規(guī)的選擇,其他等詳細可以去官網(wǎng)看:>>> 點擊跳轉(zhuǎn) <<<
- Consul
- Etcd
- Zookeeper
- MySQLMSSQL
- Filesystem
前三種1、2、3是比較靠譜方式,穩(wěn)定性自不用說,很多公司用來做服務(wù)的注冊與發(fā)現(xiàn)集群(可能它們還有存儲的功能),根據(jù)自己情況定。
4是傳統(tǒng)數(shù)據(jù)庫代表,一般選用mysql,因為會使用的人遠遠不只是工程師和DBA,普用性高且穩(wěn)定可靠。5是最簡單的存儲選型了,相當于本地化了,與服務(wù)器綁定,遷移備份需要自己思考做方案。
推薦MySQL、其次1、2、3方案。cloud-parent/cloud-service-config-vault項目中采用的是mysql方案。
Mysql方案會涉及兩張表:vaultvault_lock。vault是核心表,數(shù)據(jù)存儲格式一律是“BLOB”,安全穩(wěn)定誰也別想改。遷移也簡單了,直接Copy。
總結(jié)
思考定位:使用簡單、穩(wěn)定可靠、HA、數(shù)據(jù)備份。
在SpringCloudConfig后臺選型中比較看好GitLab和Vault,相對來說個人更喜歡Vault,但集成難度和學習成本比不了GitLab輕松簡單。作為企業(yè)DevOps一體化方案的一部分還是以GitLab為中心選型好些,畢竟CICD放在那且大多數(shù)工程師都會Git。