機密儲存
內容:
摘要
問題
我哋需要儲存機密,例如密碼、私密金鑰、驗證權杖等。
部分機密以用戶為本。例如,我哋嘅開發人員希望可以用手機查閱某個服務嘅密碼。
部分機密以系統為本。例如,我哋嘅持續交付管線需要能夠查閱我哋雲端託管嘅憑證。
決策
以用戶為本嘅機密用 Bitwarden
以系統為本嘅機密用 HashiCorp 嘅 Vault。
狀態
已決定。如果有新嘅替代方案出現,我哋持開放態度。
詳情
假設
就呢個目的同我哋目前嘅狀況而言,我哋重視以用戶為本嘅便利,例如好用嘅流動應用程式。
我哋想確保喺外面都能夠快速輕鬆咁存取,例如開發人員做值班系統可靠性工程嗰陣。
我哋想可以喺揀選嘅人(例如團隊)之間分享部分機密。
我哋並非想針對單一供應商解決,例如將所有機密獨家儲存喺 Amazon、Azure 或者 Google。
我哋唔想要「記住佢」、「寫喺便條紙」或者「自己諗辦法儲存」等臨時做法。
就呢個目的而言,我哋嘅保安模型接受使用信譽良好嘅現成商業產品(COTS)供應商,例如 SaaS 密碼管理工具。
限制
目前我哋想要容易嘅方案,即係無須撰寫程式碼、無須安裝伺服器、無須作出重大承諾、無須令所有人標準化。
立場
我哋考慮過:
以用戶為本嘅現成密碼管理器:LastPass、1Password、Bitwarden、Dashlane、KeePass、pass、GPG 等。
以系統為本嘅 COTS 密碼管理器:AWS KMS、HashiCorp 嘅 Vault、EnvKy、Thycotic 嘅 Secret Server、Devolutions Password Server、Lyft 嘅 Confidant。
以分享為本嘅做法:用共用嘅 Google 文件、共用嘅 Slack 頻道、共用嘅網絡資料夾等。
低技術嘅臨時做法,例如靠記憶、寫便條,或者靠每位用戶自己想辦法。
論據
Bitwarden、LastPass、1Password 同 Dashlane 全部都係商業現成產品。
為用戶、團隊、組織等提供類似種類嘅功能。
有 Windows 同 Mac 嘅桌面功能,以及 Android 同 iOS 嘅流動功能。
有 Chrome 同 Firefox 嘅瀏覽器擴充功能,可自動填寫表單等。
Bitwarden 相比其他有兩個優勢:
Bitwarden 係開源,意味住保安可以經過同儕審閱,而且公司廣受注重保安嘅開發人員欣賞。
軟件工作者嘅軼事描述佢哋明顯偏好 Bitwarden 多於其他。
一篇典型嘅好例子文章:https://jcs.org/2017/11/17/bitwarden
一個典型嘅並排投票網站:https://stackshare.io/stackups/bitwarden-vs-dashlane
我哋暫緩考慮 KeyPass、pass、GPG 等,因為有額外嘅複雜度。所有呢啲對技術用戶嚟講都似乎係不錯嘅方案。GPG 對想要跨系統、以命令為本能力嘅技術用戶尤其出色。
我哋暫緩考慮 KMS,因為佢綁定單一供應商。
我哋為以系統為本嘅需要揀選 Vault,因為評價極度正面,而且 HashiCorp 喺優質軟件同支援方面有出色嘅往績。
我哋否決分享類做法,例如透過共用文件、共用頻道、共用網絡資料夾等。呢啲做法冇提供我哋想要嘅保安質素。
我哋否決臨時低技術做法,因為我哋都同意佢並非長遠可行嘅出路。
影響
開發人員可能需要喺兩個地方追蹤機密:Bitwarden 用於以用戶為本嘅存取,Vault 用於以系統為本嘅存取。
相關
相關決策
選擇邊個 CI/CD 伺服器嘅決策,必須包括存取機密能力嘅證明。
我哋需要決定點樣管理機密,包括政策、輪換、組織等方面。
相關需求
機密會有同合規、審計同人力資源入職/離職相關嘅需求。
相關工件
我哋預期可能會將一些機密匯出到環境變數。
相關原則
容易回復。
容易並行,即係容易使用多種密碼管理器。
試用成本低,即係有免費試用而且無須承諾。
備註
評估備註喺呢度。備註全部係各個 devops 討論區上嘅公開評論。
HashiCorp 嘅 Vault
Vault 正正係你喺呢度想要嘅。
不過唔好直接將 Vault 放上生產環境,先喺測試環境起動佢,因為即使 HashiCorp 嘅產品出色,佢哋嘅文件可以相當欠缺。
學習曲線非常陡峭,起動佢並非易事。
初始設定有啲麻煩。不過絕對值得,而且社群會足夠支援你應付過去。
文件可怕,不過網上有好多人設置佢嘅指南,如果你將其中幾份湊埋一齊,就會得到一個可運作嘅設置。
初始設定需要摸索佢哋嘅 helm chart(vault 同 consul)。雖然技術上你可以用好多其他後端,但我真心唔建議。如果你唔使儲存大量數據,後端/consul 可以細到不得了。
一定要習慣/熟悉使用 CLI,因為 GUI 更似係佢哋企業版嘅概念驗證/宣傳入口。
你冇辦法直接「填滿」佢,係一個麻煩。例如,如果你有 5 個欄位,你需要為每個項目逐一手動加入每個欄位。所以並非係為特定類別預先定義欄位,然後為該類別所有項目填寫呢啲欄位,而係更似「每次都要生成所有嘢」,(我認為)好煩。
你可能亦想睇下 goldfish,作為 vault 之上嘅 UI。令你嘅團隊更容易接受佢。佢哋亦有示範。1. 設置 consul。2. 設置指向 consul 嘅 vault。3. 設置指向 vault 嘅 goldfish。3. 設置一些 cron job 運行 consul snapshot 做備份。
LastPass
LastPass Teams。我哋用緊,有自訂範本、ACL,我認為冇缺少任何嘢。
我喺我嘅組織實施咗 LastPass,俾佢 C+/B-。最近最大嘅問題係欠缺可靠性。過去 90 日有多個小時,保管庫被迫進入離線模式。呢點對我嘅組織唔理想,因為我哋喺 20 多個共用資料夾入面,字面上儲存咗 4,000 多個密碼。你可以想像,咁多密碼,每日至少有幾個被更新或者新增。如果問題持續多過一兩個鐘,我哋有災難復原計劃:一個腳本每晚簽署同加密保管庫嘅 CSV 傾印,可以匯入 keepass。
LastPass 有過未報告嘅服務降級小故障:登入「成功」但冇拉取網站、管理面板入面有隨機功能壞咗,以及冇妥善為新嘅頂層共用資料夾分享金鑰。我有一個專門嘅「金鑰推送」/備份用戶,喺每個群組入面。通常以該用戶登入會修復任何金鑰分享問題,但當服務降級嘅時候就唔得,無論狀態頁面話咩……
整合方面,如果你有採用最小權限模型嘅正確 ACL,就可以好容易,例如,如果用戶對某個項目或者資料夾同時有讀寫同唯讀權限,佢只會得到唯讀權限。不幸嘅係,我組織嘅 ACL 並非最好,所以我最終用咗 JSON 調配 API 同大約 500 行 python,因為我哋數百個 ACL 嘅相依性質,同最小權限模型對應得唔好。我最終獲取咗用戶所屬嘅所有 ACL,並做某種相依性遍歷。
如果你嘅 ACL 或者群組結構本來就以最小權限結構設計,Windows 嘅 AD/LDAP 同步工具會運作良好。
聯絡佢哋嘅銷售團隊,佢哋可以畀你較長時間嘅企業版試用。喺作出決定之前,務必充分了解佢嘅限制。我哋經歷過不少成長痛,但除咗伺服器端嘅中斷或者損害之外,一直都極之順暢。
Bitwarden
Bitwarden 周邊工具不錯(WebUI、CLI、流動、桌面)。可以自行託管,而且相當容易設置。文件相當好,亦係 PrivacyTools 推薦嘅工具。
EnvKey
https://www.envkey.com/ 係一個 saas。實施、整合同管理都真係好容易。
功能:
保護 API 金鑰同憑證。
令各處嘅配置保持同步。
智能、端對端加密嘅配置同機密管理。
防止不安全嘅分享同配置蔓延。
幾分鐘內整合。
能力:
喺一個地方管理你所有應用程式、環境同團隊嘅配置同存取級別。
只用單一環境變數就可以配置任何開發或者伺服器環境。
優點:
好嘅首頁。
清晰嘅價值主張。
視覺上出色嘅網頁應用程式。
出色嘅示範數據,例如 Algolia、AWS、Datadog、GitHub、Stripe 等。
同創辦人傾咗 30 分鐘,了解公司、UI 等。Dane 聽落好了解情況,坦白講述利弊,係一個可行嘅夥伴。
公司基本上係典型嘅 Y Combinator 公司,只有 1 位創辦人。2018 年 1 月籌集咗 $120K。
重點係發展企業功能,尤其係由 EnvKey 雲端託管遷移到本地部署或者 BYOC(自備雲端)。
潛在嘅前進路徑:先用 EnvKey 圖其易用,之後(或者同時)加入 Vault。
Lyft 嘅 Confidant
https://lyft.github.io/confidant/
Confidant 係一個開源機密管理服務,由 Lyft 嘅開發人員製作,以安全方式提供用戶友善嘅機密儲存同存取。
KMS 驗證:Confidant 透過使用 AWS KMS 同 IAM,令 IAM 角色可以產生可由 Confidant 驗證嘅安全驗證權杖,解決咗驗證嘅雞同蛋問題。Confidant 亦管理你 IAM 角色嘅 KMS 授權,令 IAM 角色可以產生權杖,用於服務之間嘅驗證,或者喺服務之間傳遞加密訊息。
版本化機密嘅靜態加密:Confidant 以只可追加嘅方式喺 DynamoDB 儲存機密,使用 Fernet 對稱驗證加密,為每個機密嘅每個修訂產生獨一無二嘅 KMS 數據金鑰。
用戶友善嘅機密管理網頁介面:Confidant 提供 AngularJS 網頁介面,令終端用戶可以輕鬆管理機密、機密同服務之間嘅對應,以及變更歷史。
Devolutions Password Server
https://server.devolutions.net/
保護、管理同監察對特權帳戶同工作階段嘅存取。
一個全面、高度安全嘅密碼保管庫,令你可以控制對特權帳戶嘅存取,同時亦為系統管理員提升整體網絡可見度,並為終端用戶提供無縫體驗。
功能:集中式組織密碼保管庫、用戶專屬私人保管庫、密碼管理器、憑證注入、 Active Directory 整合、角色型存取控制、雙因素驗證、企業就緒、IP 限制、管理功能、自動密碼產生器、流動應用程式存取、密碼歷史、存取報告、電郵警報。
支援數據加密
支援多種驗證方案,包括 LDAP、O365 同本地用戶,並支援來自多個來源嘅 MFA
多個儲存庫/保管庫,為多個團隊提供精細嘅存取控制
現代網頁 UI
用於個人憑證/連接嘅私人憑證同連接保管庫
iOS/Android 流動應用程式
每個項目嘅審計日誌,記錄邊個/做咗咩/幾時,並可選擇提示存取原因
可自訂範本(雖然佢哋原生支援數百種連接類型)
更多功能,以及可同步嘅 Windows/Mac 胖客戶端(Remote Desktop Manager),大大擴展選項……一鍵連接
定價唔算太差——密碼伺服器最多 15 個用戶,每年 $500
Thycotic 嘅 Secret Server
https://thycotic.com/products/secret-server/
本地部署版本功能:
完全控制你嘅端對端保安系統同基礎設施
喺你嘅本地數據中心或者你自己嘅虛擬私有雲實例內部署軟件
滿足要求所有數據同系統必須存放於本地嘅法律同監管責任
雲端版本功能:
軟件即服務模式,令你註冊後即可開始
隨你成長而彈性擴展
由 Azure 提供嘅控制同冗餘,具備 99.9% 正常運行時間 SLA
用戶回饋:
我哋以前用過嗰個產品。佢好容易被繞過,而且規則只對聰明嘅人有效。懶惰或者笨嘅用戶好容易喺團隊區域搞砸。同佢哋傾價錢嗰陣,價錢係可以商量嘅。
你可以用 SQL express 同一部 Win 7 機器運行。
平。