在 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 系列文的最後一篇啦!
想要看更多的進階用法,官方有寫了很詳細的文章唷!連結如下:
官方教學
想要進一步使用的話在裡面應該都會有資料能參考!
最後,希望大家都能有個安全的環境!
有機會我們下次再見!

Reference

#vault







你可能感興趣的文章

React 基礎:Function component vs Class component

React 基礎:Function component vs Class component

遞迴與費氏數列詳解以及時間複雜度探討

遞迴與費氏數列詳解以及時間複雜度探討

5.  SpringBoot使用jms錯誤處理延(2)

5. SpringBoot使用jms錯誤處理延(2)






留言討論