在 2/16 上課的時候,第一次接觸到 Vault ,覺得還蠻有趣的,想說就趁這個活動的機會來做個小研究,當然其中有些地方還沒有研究到非常透徹,到目前為止,針對 vault 的操作以及架構上,有部份是參考官方的文件,部份是參考別人的文章,有部份是加上自己的理解去做的翻譯。
可能有些地方不是寫的很棒,不過藉由這兩週仔細的去碰 vault ,著實是增加了不少的知識。
接下來針對 vault 還有很多的 service 跟架構可以去看,這一部份在官網的文件中也有不少例子跟最佳實例!最後我們就針對一些 production hardening 來官方文件來看看吧!
End-to-End TLS.
- 確保 vault server 跟 client 之間的資料傳送使用 TLS 協定(https),這樣一來,才不會以明文的方式傳送的資料,降低中間被截取資料的風險。
Single Tenancy.
- 確保運行 vault server 的伺服器上,只有運行 vault server ,有可能會因為運行其他的程序,剛好該程序有漏洞,由該漏洞駭入到 vault server 中。除此之外,也建議使用實體的伺服器去運行 vault server ,避免使用的 虛擬化 或是 容器化 有漏洞,進而增加被滲透的風險。
Firewall traffic.
- 使用伺服器的 firewall 針對流量進行嚴格的管控,只讓白名單內的 incoming 來連線(
允許的 client IP
),並開放需要的 outgoing 出去(NTP、DB 端口
)。
Disable SSH / Remote Desktop.
- 禁止使用 SSH 跟 RDP 存取 vault server ,只能透過 vault server 的 API 進行存取。
另外如果需要 debug 的話,可以使用 centralized logging 以及 telemetry 處理。針對 LOG 的存取也需要做好權限控管。
Disable Swap.
- 把 SWAP 關掉,避免 vault server 把機密資料存到 SWAP 裡!如果資料存在 SWAP,如果被 dump 出去,資料也是跟著走了。
Don't Run as Root.
- 如標題,不要使用 root 去運行 vault!(應該大部份生產程序都是這樣)
Turn Off Core Dumps.
- 把 core dumps 關掉,避免透過 core dumps 獲取到 vault 的資料。
Immutable Upgrades.
- vault server 的資料存在 backend storage,如果要進行升級的話,應該要準備一台新的 vault server 去連線,而不是直接從舊版進行升級!
Avoid Root Tokens.
- 避免使用 root token 存取 vault server 。避免有過大的權限去操作 vault server。
Enable Auditing.
- 做好 log 的收集,讓任何操作都能被記錄下來,並設好 log 存取的權限管控。
Upgrade Frequently.
- 定期更新,避免正在使用的 vault server 版本是有漏洞的。
Configure SELinux / AppArmor.
- 啟用 SElinux,這超難…
大部份都是把他關掉比較快
Restrict Storage Access.
- 雖然存到 storage backend 的資料已進行加密,但還是要做好 storage backend 的權限控管。
攻擊者雖然沒辦法解密資料,但如果可以修改資料的話, vault server 在存取被修改的資料的時候,就會有問題。
Disable Shell Command History.
- 關掉 history ,避免指令留在 history 裡面。
Tweak ulimits.
- 限制 ulimits!
Docker Containers.
- 這個我真的不懂了QQQ
No Clear Text Credentials.
- 這個我也不懂…
以上是官方有寫的 production hardening best practice,裡面有不少東西其實是平時維運就需要注意的點了,在這邊小小的翻譯一下!
然後其實大大 smalltown 就有寫的更好的版本了,我只是野人獻曝QAQ,link 在下方。
密碼都放 Vault 裡了,然後呢?!
以上就是7天 vault 系列文的最後一篇啦!
想要看更多的進階用法,官方有寫了很詳細的文章唷!連結如下:
官方教學
想要進一步使用的話在裡面應該都會有資料能參考!
最後,希望大家都能有個安全的環境!
有機會我們下次再見!