本文節選自 graham lea 的部落格:microservices security: all the questions you should be asking。(我指的是組成您的系統的服務, 不與網際網路或其他外部系統介面)
您是否只是在網際網路邊界保護您的系統?(縱深防禦)
如果入侵者進入您的核心網路, 您有哪些保護措施?(縱深防禦)
網路中的某個人在多大程度上可以輕鬆地訪問您的服務之間的流量?(安全通訊)
您的服務之間是不是過於相互信任?或者,你的服務是不是無條件相信高頻呼叫者(您確定只有您自己的服務可以呼叫您自己的服務嗎?)(勉強信任)
當您的服務被呼叫時, 它是否要求呼叫方對進行身份驗證, 或者它是否允許任何連線請求?(服務認證)
您的服務是讓呼叫者訪問服務提供的所有 api, 還是只允許他們訪問履行其功能所需的 api?(服務授權)
在客戶端發起每個呼叫請求的人的身份是否會傳遞到您的內部服務中, 還是在閘道器中丟失?(當事人傳播)
您的服務是否可以相互請求任何資料, 或僅請求授予其許可權的使用者的資料?(當事人授權)
如果攻擊者擁有某個服務, 他們是否可以很容易地從其下游服務中請求任何內容?(當事人授權)
您有什麼保證措施從經過身份驗證的使用者收到的請求沒有被篡改?(防篡改)
您如何確保第二次傳送的授權請求被檢測和拒絕?(重播保護)
是不是每個人都理解 sql 注入?您有哪些措施來確保沒有人編寫容易受到 sql 注入的**?(sql 注入)
您是否熟悉所有其他型別的注入, 以及如何預防?(sql 之外的注入)
您是否掌握了密碼儲存的最新狀態?(密碼儲存)
您是否意識到, 如果您的密碼資料庫被盜, 如今簡單的撒鹽加密是完全無用的?(密碼儲存)
如果您需要公升級密碼儲存演算法, 如何在不對使用者造成大規模干擾的情況下進行公升級?(密碼儲存)
如何積極識別資料庫中的私有和敏感資料?(私隱提公升)
如果您的資料被盜, 您有哪些保護措施來防止最敏感的部分被讀取?(私人和敏感資料)
如果您的服務使用的是私鑰, 如何保護這些金鑰不被入侵者使用?(金鑰管理, 千萬不要以為您的秘密是安全的)
您知道什麼是硬體安全模組 (hardware security module,hsm), 以及何時以及如何使用硬體安全模組嗎?(金鑰管理)
您有哪些日誌記錄可用於檢測和分析安全漏洞?(安全日誌記錄/安全資訊和事件管理 (security information and event management ,siem))
(我指的是您在系統和介面中執行的任何第三方軟體。在我的公司裡, 目前這主要是我們的資料庫和郵件系統, 但它可能包括其他系統, 例如 bpm 和 中介軟體。這些問題大多也適用於整合的外部軟體。
您是否在所有服務中共享乙個資料庫登入許可權?(最少特權)
您的服務可以訪問多少資料?是所有的?還是只有他們必須的?(最少特權)
如果攻擊者獲得了乙個服務的資料庫憑據, 他們將獲得多少資料?(最少特權)
您的資料庫授權策略是否允許更新和刪除應用程式僅插入到的表?(最少特權)
您是否在所有服務中共享單個訊息傳遞中介軟體登入?(最少特權)
您的訊息傳遞中介軟體是否也有登入憑據?(有些還沒有!)(最少特權)
您的服務是否有權訪問系統中的所有訊息, 還是只能訪問他們需要檢視的郵件?(最少特權)
您的服務是否可以將訊息傳送到任何佇列, 或僅將訊息傳送到所需的佇列?(最少特權)
如果攻擊者掌握了乙個訊息服務的憑據, 他們可以訪問多少資料?(最少特權)
如果攻擊者掌握了乙個訊息服務的憑據, 他們可以啟動哪些操作?(最少特權)
如果您使用登入憑據保護資料庫和訊息, 如何保護憑據?(千萬不要以為你的秘密是安全的)
架構中的遺留系統如何使其他服務處於危險之中?(保護最薄弱的環節)
(我指的是與網際網路或其他外部管理的第三方系統介面的服務)
您是否已將 tls 實現公升級到最新版本?(安全通訊)
您是否配置了 tls 以消除降級和弱密碼攻擊?(安全通訊)
您的員工中誰知道有關 tls 的所有資訊, 以及如何安全地配置 tls?(安全通訊)
我可以從閘道器服務的未經身份驗證的 api 中獲取哪些資訊?(列舉)
我有乙個破解密碼和使用者電子郵件的列表。我可以使用您的密碼提醒 url 來測試您的系統中的哪些使用者嗎?(認證)
您的系統其他部分是否過於信任您的閘道器服務?(勉強信任)
如果您假設您的閘道器服務已被完全破壞, 您在其他地方會有什麼不同的做法?(縱深防禦)
如果閘道器服務被完全破壞, 可以從記憶體中收集哪些資料?(縱深防禦)
如果閘道器服務被完全破壞, 可以從網路流量中捕獲哪些資料?(縱深防禦)
(我指的是您可能會也可能不創作與伺服器端系統介面的軟體, 很可能是通過 internet)
您如何幫助您的使用者選擇更安全的密碼?(密碼複雜性)
當輸入密碼錯誤時, 您會給出什麼反饋?它是否可以用來列舉使用者帳戶?(列舉)
在多次登入嘗試失敗後, 是否鎖定帳戶?(認證)
您給攻擊者多少機會猜測每個帳戶的密碼?(賬戶安全)
當您鎖定帳戶時, 您會給出哪些反饋?它是否可以用來列舉使用者帳戶?(列舉)
您是否有密碼提醒功能?是否可以使用它來列舉使用者帳戶?(列舉)
您是否有密碼重置功能?是否可以使用它來列舉使用者帳戶?(列舉)
您是否考慮過您的系統或系統的某些部分是否需要多重身份驗證?(列舉)
是否還有人注意到安全和良好的使用者體驗之間似乎有一場史詩般的戰鬥?(ux vs 安全)
您熟悉 owasp 十大網路漏洞嗎?(網路安全缺陷)
您能說出所有 owasp 十大網路漏洞的名稱嗎?(網路安全缺陷)
你的團隊中的每個人都能說出所有 owasp 前十名的名字嗎?(網路安全缺陷)
你團隊中的每個人都能解釋如何防範所有的 owasp 前十名嗎?(網路安全缺陷)
如何確保在用作輸出時正確轉義每一塊使用者資料?(xss/輸出編碼)
如何正確地在輸出使用者資料的各種不同上下文中獲取使用者資料?(xss/輸出編碼)
您如何幫助防止使用者因使用 web 應用而受到攻擊?
您的 web 應用設計是否將瀏覽器視為不安全的環境?(勉強信任)
您的原生移動應用設計是否將裝置視為不安全的環境?(勉強信任)
您如何幫助防止使用者因使用本機應用而受到攻擊?
您在客戶端上儲存或快取哪些資料?您如何保護它?如果有人竊取了這些資料, 會發生什麼情況?它需要放在客戶端嗎?
(我指的是開發和操作您的系統的人員, 以及他們用來執行此操作的過程)
你在做什麼來確保安全被嵌入到你的工程團隊所做的一切中去?(安全內建)
你如何把共同的安全原則嵌入到每個人的大腦裡?(安全原則)
開發過程中明確內建了哪些安全活動?(安全軟體開發過程)
您為開發人員、測試人員和操作人員提供哪些安全培訓?(安全培訓)
技術人員是否只知道漏洞的名稱, 還是真的知道如何利用和測試這些漏洞?(安全培訓)
您放置了哪些控制, 誰可以訪問系統的哪些部分?(訪問控制)
您有什麼計畫定期審查這些控制措施和人們的訪問許可權的適當性?(訪問控制審核)
您發現和修復第三方軟體中的漏洞的過程是什麼?(漏洞管理)
如何鼓勵工程師將時間用於頭腦風暴系統中的風險?(風險頭腦風暴/"風險風暴")
您是否有確保每項新服務都以極大的安全性啟動的服務模板?(安全應用程式模板)
讓內部員工定期測試系統的安全性的計畫是什麼?(安全測試)
你有什麼計畫, 你會多久引進一次外部安全專家, 你將如何選擇他們關注的內容?(安全測試)
您必須進行哪些自動測試來捕獲編寫漏洞的漏洞?(自動化安全測試)
為了確保安全控制始終到位, 您必須進行哪些自動測試?(自動化安全測試)
你們是否一直在問自己: "如果這個控制點失效了怎麼辦?下乙個控制點是什麼? "(縱深防禦)
最後..
「 假設您的網路受到威脅,你的系統的哪些部分會讓你深夜加班?」
顧宇的研習筆記
微服務devops 用於微服務的安全DevOps
微服務devops 容器和微服務徹底改變了應用程式開發和基礎架構管理。他們還提出了新的安全挑戰,而沒有解決舊的挑戰。有哪些新的安全挑戰,您可以如何應對?微服務正在改變一切。不變的基礎架構,無共享架構和容器化應用程式 微服務 是當今大多數企業路線圖的重點。微服務提供了一種以小型,自治且可自我維持的能力...
如何保障微服務安全
原文 securing microservices摘要 如何保護微服務,確保微服務的安全,作者從保護應用程式安全和保護容器的安全兩個方面進行了闡述,以下是譯文 實現乙個微服務很難。部署乙個微服務應用程式複雜性也很高。保護微服務的安全就更難更複雜。從 開始呢?腦海中首先出現的一些詞是身份驗證和授權 防...
微服務安全認證概覽
cors 跨域資源共享 springsecurity 服務安全 組成作用 內容示例 header 頭 記錄令牌型別 簽名的演算法等 payload 有效載荷 攜帶一些使用者資訊 signature 簽名 防止token被篡改 確保安全性 計算出來的簽名,乙個字串 token base64 heade...