vault是乙個密碼/證書集中式管理工具,通過http-api對外提供統一的密碼訪問入口,並且提供許可權控制以及詳細的日誌審計功能。
乙個系統可能需要訪問多個帶密碼的後端:例如資料庫、通過api keys對外部系統進行呼叫,面向服務的架構通訊等等。要將眾多系統中的使用者和許可權對應起來已經非常困難,加上提供金鑰滾動功能、安全的儲存後端還要有詳細的審計日誌,自定**決方案幾乎不太可能。這也就是vault存在的意義。
(1)安全的儲存後端:任意的鍵值對密碼都能儲存在vault。vault在把資料寫入儲存後端之前會先將資料加密,所以即使你直接讀取儲存後端資料也無法拿到真正的資料。vault的儲存後端可以是檔案、consul、etcd等等
(2)動態密碼生成:vault能夠按需生成某些後端的密碼,例如:aws、sql資料庫等等。例如當乙個應用需要訪問aws的s3 bucket,應用向vault請求訪問s3 bucket的證書,vault能按需生成乙個指定許可權的aws金鑰,並且能夠根據租期自動銷毀這個金鑰。
(3)資料加密:vault可以在不對資料儲存的情況下,對資料進行加密和解密。安全團隊只需定義好加密方法,開發將加密後的資料儲存在例如sql之類的後端即可,而無需設計自己的加密方式。
(4)租期和續租:在vualt裡面,全部的密碼都可以跟租期聯絡起來。在租期結束時,vault會自動銷毀對應的密碼。客戶端能夠通過renew-api進行續租。
(5) 銷毀:vault本身支援對密碼進行銷毀,不僅支援銷毀單個密碼,還支援銷毀與之關聯的密碼。比如指定某個使用者讀取的全部密碼,或者特定型別的密碼。銷毀功能能夠在密碼被洩露的時候輔助鎖定系統。
(1) 作為集中儲存各個伺服器賬號密碼的伺服器。目前我們有伺服器需要訪問到有密碼的後端的時候,有幾種方案:
第一種方案帶來的問題是使用麻煩,後兩種方案帶來的問題是維護和變更麻煩。比如db密碼洩露,需要修改密碼,首先dba修改密碼,然後通知到應用,應用再做**上的變更。如果使用vault的話,dba只要在vault上面修改好密碼之後通知應用重新從vault拉取最新密碼就行了。
(2)為每乙個操作單位動態分配賬號
比如過去我們想要對某些敏感操作進行審計,但是由於生成賬號比較麻煩,所以存在公用賬號的情況。vault支援為某些後端動態生成賬號的功能,比如sql,當某個應用向vault請求賬號密碼的時候,vault能夠為每次請求生成乙個獨一無二的sql賬號密碼。
(3) 作為證書伺服器
(4)作為oauth伺服器
vault支援多種認證後端,比如github、kubernetes、賬號密碼等等。vault能夠將這些賬號關聯成乙個使用者,在使用者認證之後返回乙個token供使用者使用。
以linux-64bit系統為例
wget
unzip vault_0.9.1_linux_amd64.zip
# 啟動dev模式,此模式下任何改動都在記憶體中進行,資料不會儲存
./vault server -dev
# 啟動資訊
# ==> vault server configuration:
# ...
# unseal key: 0gg1yc/qy2w3f82dnxcztejdvmuxpjov5nznnvrmy4u=
# root token: eb45cfe5-9cca-3b23-5416-49f2febeb59c
# ...
# 我們能看到vault自動監聽在了127.0.0.1:8200,並自動為我們生成了unseal-key以及root-token
# 啟封 vault,在使用vault之前首先要對vault進行啟封,才能對vault進行後續操作。使用上面生成的uneal-key,其實dev模式下預設是已經啟封狀態
vault unseal 0gg1yc/qy2w3f82dnxcztejdvmuxpjov5nznnvrmy4u=
# 認證,使用上面的root token
vault auth eb45cfe5-9cca-3b23-5416-49f2febeb59c
# 將vault位址寫入環境變數
export vault_addr=''
# 使用vault-cli操作vault,實際上後台是呼叫通過http-api來操作vault
# 寫入密碼,在此你可以寫入任意的鍵值對
vault write secret/vault host=127.0.0.1 password=123456
# 讀取剛剛寫入的密碼
當然vault能做的遠遠不止上面的鍵值對儲存和讀取,這裡主要對vault的使用做乙個大概的介紹,以及簡單使用,後面會深入講解vault的各個元件以及高階用法。
伺服器證書
目前網際網路常用的http協議是非常不安全的明文傳輸協議。而ssl協議及其繼任者tls協議,是一種實現網路通訊加密的安全協議,可在客戶端 瀏覽器 和伺服器端 之間建立一條加密通道,保證資料在傳輸過程中不被竊取或篡改。ssl證書,也稱為伺服器證書,是遵守ssl協議的一種數字證書,由全球信任的證書頒發機...
為什麼找不到伺服器 Vault
有個朋友說他的客戶裝了vault collabration for aec之後,用web client能登陸vault,但是用vault 瀏覽器卻總得到乙個找不到伺服器 server can not be found 的錯誤提示並且沒法登陸。這事很奇怪阿。我去了一下現場,察看了客戶的伺服器和客戶端機...
多伺服器管理工具fablinker
fablinker是本人自主開發的乙個多伺服器專案部署和管理的工具。基於python 2.7 用到fabric第三方庫,在一台伺服器上可管理控制多個遠端主機,目前v0.01已開發完成。使用前提是多個伺服器之前可以通過ssh互聯。具體配置請在網上搜尋。開源 2.1 專案部署 比如分布式爬蟲部署在12臺...