CI/CD 環境中的憑證管理
**設置:**我有一個目前在伺服器上手動部署的應用程序。它需要幾個憑據(外部服務、令牌和 AES 密鑰和 IV 等的客戶端機密),我目前已將這些憑據儲存在使用
gpg
. 每當我重新啟動應用程序時,我gpg
都會在控制台中解鎖 -key,然後服務將從應用程序腳本中再次解密文件(gpg-agent
將密碼片語保留在記憶體中一段有限的時間)並通過管道解析它們。這種方法的優點是
gpg
訪問它們所需的憑據和-passphrase 都不會持久保存到磁碟,而只保存在記憶體中。因此,即使具有完全的 root 訪問權限,也無法恢復憑據。gpg
唯一的機會是在-key 保持解鎖的短時間內獲得訪問權限。缺點是(a)沒有其他使用者可以啟動服務(除非我們共享我的帳戶)和(b)應用程序不能通過任何自動方式啟動。
github上有一個creds項目,和我正在做的類似,但仍然存在上述缺點。可以使用多個
gpg
密鑰對文件進行加密,然後嘗試使用所有密鑰對其進行解密,直到一個成功。**問題:**有什麼更好的方法來處理以下憑據:(a) 多個使用者無需共享密鑰或帳戶即可訪問,(b) 可由 CI/CD 系統訪問(每次部署時我都沒有控制台), (c) 只將密碼數據保存在記憶體中?具有多個鍵的“解決方法”
gpg
看起來像一個複雜的 hack,並且不適用於 CI/CD 系統。
我將討論機密而不是憑據,因為您可能還想保護其他敏感資訊。您的問題是否專門針對 CI/CD 系統並不重要,無論我們談論使用 X.509 證書進行身份驗證、保存數據庫憑據還是保護建構代理的訪問令牌,問題都是一樣的。
沒有規範的方法來處理這個問題,因為應用程序和組織的需求在什麼構成秘密以及如何處理它們方面存在差異。某些應用程序可能只提供文件儲存秘密的其他方式。
一些應用程序在磁碟上加密機密,但由於它們通常必須是對稱的,這或多或少是裝飾性的。
所以,你可以做什麼?
- 您的第一道防線是您的作業系統的 DAC(自主訪問控制)和 MAC(強制訪問控制)——如果我們談論的是 Linux,POSIX 權限是 DAC,而 LSM(如 App Armor、SELinux 或 GRSecurity)是 MAC。
- 根據CIS或DISA STIG等適當標準審核您的作業系統。
- 想到使用HSM或OpenPGP 智能卡來儲存用於加密磁碟上的機密的 PGP 密鑰。像這樣的設備保證密鑰永遠不會離開硬體。
請記住,沒有單一的措施可以保證 HSM 中的密鑰安全 - 物理訪問仍然會危及它們。硬體密鑰儲存設備必須與物理安全性和適當的操作程序相結合,以加強其安全性。
檢查主要瀏覽器的根 CA 策略(Chrome、Firefox、Edge/IE)。他們強制使用硬體加密設備以及如何操作它們以及您必須通過哪些審核的一些限制和規則。
- 使用Vault之類的軟體按需獲取秘密,但這需要應用程序支持。否則,您只是將其再次儲存在磁碟上。不過,Vault 可以添加到組合中的是一個可執行的 TTL 用於秘密以及自行輪換它們的能力。