鬥鏈式——確保公共S3 Bucket
2020年7月16日 在公司博客上
Amazon S3 bucket安全嗎?你知道哪些公共或私人嗎?你知道哪些是應該嗎?
數據泄露是昂貴的。Facebook臭名昭著的暴露最近5.4億條記錄的用戶,這是一個因素的50億美元的罰款聯邦貿易委員會簽發。不幸的是,這些違反感覺越來越普遍。由一個帳戶,7%的亞馬遜網絡服務(AWS) S3 bucket公開訪問。雖然有些桶故意公開,這是太常見的非公開暴露敏感數據不小心在麵向公眾的桶。
磚安全團隊最近自己遇到這種情況。我們提醒潛在的非公開對象包含在我們的一個公共桶。而結果是良性的,我們著手提高整體桶安全態勢,並能夠肯定地回答上麵的問題。我們提供不僅加強管製是什麼和不是公眾,而且監控我們的有意無意的接觸公共資源。
S3 Bucket安全解決方案
應對我們最初的警報,我們采取行動來識別所有S3 bucket和公眾/非公開狀態。因為磚是一種原生雲公司,我們已經部署JupiterOne商業雲資產管理解決方案,允許我們快速查詢和確定哪些資產是公開的。開源的工具可用,比如製圖學從Lyft允許類似的查詢功能。我們查詢的輸出,我們能夠快速識別和分類公共桶和決定他們是否應該保持公共。
驗證我們的桶是否應該公開,我們想要解決幾個問題:
- 我們有現有的非公開文件在我們故意公共桶?
- 我們如何防止桶,他們的對象,成為公共無意中?
- 我們怎麼能持續監測公共桶和秘密在我們得到實時警報?
工具
要解決這些問題,我們發現,和創建工具實現。每個工具下麵地址上麵的問題之一。
紗線:(Y)等(A)各異的ob (R)
解決第一個問題,我們是否有任何現有的非公開文件在我們故意公共桶,我們特製的尼爾斯Ingi紗線的工具——通常用於掃描Github庫的秘密——掃描我們現有的公共桶。我們旋轉EC2實例,桶內容同步,定製紗線配置特定於我們的秘密與額外的模式,和紗線。為了提速,我們編寫了一個腳本,紗線和允許並行執行和漂亮的格式適用於結果。
如上所示,紗線為線周圍的秘密,這讓我們更快速地分類識別潛在的秘密。
雲托管人訪問管理
解決的第二個問題,我們如何防止桶,和他們的對象,成為公共無意中,我們使用雲托管。我們已經部署這種認同“開源雲安全、治理和管理”工具用於其他目的,顯然它也能幫助我們在這方麵。雲Custoidan的合規使用AWS Lambda函數和實時監測事件檢測更改配置。
我們添加了一個雲托管政策自動啟用AWS公共訪問塊桶及其對象公開暴露通過任何訪問控製列表(acl)。我們創建了一個內部政策和過程異常故意公開桶需要此功能殘疾。這意味著雲托管的執法和JupiterOne桶的報警配置公共訪問,我們可以確保我們的水桶中沒有一個是無意中公開或公開對象。
S3秘密掃描儀
解決我們的第三個問題,我們如何可以持續監測秘密在我們的公共桶和實時提醒,我們在故意想要額外的保證對象公開與非公開對象桶沒有得到更新。重要的是我們要盡快得到這些信息來限製我們的曝光事件的意外接觸。
我們開發了一個簡單的解決方案。我們使用S3事件觸發S3 bucket修改對象。每當桶對象創建或更新,鬥的事件創建一個SQS隊列條目變化。Lambda函數然後處理這些事件檢查每個文件秘密使用模式匹配(類似於紗線的方法)。如果找到任何匹配,輸出發送到警報隊列。安全團隊從隊列中接收到警報,讓近實時應對潛在風險。
上述問題的解決,我們都感覺很好,直到…
並發症
我們部署了上述工具後不久,磚安全團隊提醒停機,似乎是由於我們的新工具和流程。為了解決眼前的問題我們必須回滾雲托管的變化。通過磚的後期處理,很明顯,盡管發送通知的工具和過程的變化,不是充分的。我們的解決方案並不是普遍理解和導致混亂的人突然桶執行訪問限製。此外,在一個案例中,一桶幾乎時刪除警報的安全團隊跟進,這是公開的。業主表示,桶是不再需要,但在刪除訪問——刪除桶之前的預防措施——我們發現一個未知的團隊使用桶不明顯的所有者。
很明顯,清楚鬥所有權是我們成功的關鍵來保護我們的桶。明確、權威的所有權意味著我們能夠快速得到警報,並將提供一個負責任的答案為故意的異常過程公眾桶。
盡管我們采取了一些最佳實踐所有權識別使用標簽,我們有一些不一致的實現。這意味著即使人們“做正確的事”,結果是不一致的,很難清楚地識別主人。
我們的解決方案重新審視
我們退出了執行初始解,我們可以更清晰的所有權信息和提供更好的溝通。
我們再次轉向JupiterOne查詢S3所有權信息。手持文字遺願清單,我們去每個AWS帳戶所有者幫助確定明確的所有者為每個桶。我們發表政策需要標記所有權標準以確保一致性的方法。我們也發表政策明確雲托管公共訪問塊和異常處理。我們CISO發送通知領導和背後的更廣泛的公司創造意識和支持調整我們的新政策和流程。
我們添加了標簽通過雲托管人執行我們的整體技術所有權策略。重要的是,我們的溝通過程幫助識別一些修改我們的執法方式。最初,我們確認,我們將消除桶失蹤的所有權標記。這是適合非生產資源,它太激進的生產資源。相反,我們更新了生產資源雲托管人創建票在我們票務係統定義的服務水平協議(sla)保證所有權不會失蹤太久,沒有將關鍵資源置於危險境地。
實現一個明確的所有權過程並提供清晰的溝通來領導,AWS帳戶所有者和用戶花了更多的時間比原來的技術解決方案的實現,但它意味著這一次我們可以使它沒有任何停機或不小心刪除重要內容的關注。
磚喜歡開源
磚是一個大的開放源碼社區的參與者——我們的最初創造者Apache火花™,三角洲湖™,考拉和更多的和安全的數據對我們是非常重要的。所以,自然擁有為自己解決了這個問題,我們想與社區分享結果。
然而,安全專家,我們認為應該是我們提供的一部分。我們常見的開源工具,但在這種情況下,我們發現我們的工具同樣重要的是溝通,政策和流程周圍的這些工具。出於這個原因,我們是開源鬥鏈式——一個完整的解決方案來保護你的桶。
開源庫包含一個詳細給出的解決方案的每個階段逐步實施指南,包括工具實現的代碼。也許同樣重要的是,它還包括政策保持清晰桶所有權,執行公共訪問塊和例外。它擴展了政策與電子郵件模板為領導和用戶溝通,以確保政策實施之前和過程是很好理解的。
讓我們能夠回答這些問題對我們的公共S3數據和避免問題的一部分。
看看我們開源的鬥鏈式解決方案。