保護秘密的最佳做法

本文將協助你保護機密並降低未經授權存取的風險。 請遵循此指引,確保不會將敏感資訊(如憑證)儲存在程式碼、GitHub 倉庫、日誌或持續整合/持續部署(CI/CD)管線中。 本文的指引來自個別服務建議及 Microsoft Cloud 安全基準測試(MCSB)。

本文與Microsoft的零信任安全模型一致,該模型要求明確驗證、最低權限存取,並假設遭到入侵。 關於包含 Azure 原則 強制執行的規範性安全控制,請參見 Microsoft Cloud Security Benchmark v2:特權存取與 MCSB v2:資料保護。

秘密發現與預防

在你保護你的秘密之前,你需要先了解它們存在的位置。 你還需要控制措施,防止暴露發生。

  • 進行稽核以識別祕密:稽核您的系統與應用程式,找出需要保護的敏感資訊,如密碼、API 金鑰、連線字串及其他憑證。 定期稽核有助於確保你的庫存能記錄新的秘密,並妥善管理現有秘密。 對動態建立的秘密 (例如臨時 OAuth 權杖) 採取與長期秘密相同的嚴格保護措施。

  • 避免硬編碼祕密:直接將祕密嵌入程式碼或設定檔會帶來重大安全風險。 如果攻擊者入侵了你的程式碼庫,他們也會洩漏你的機密。 相反地,使用環境變數或設定管理工具,避免原始碼有祕密。 此做法降低意外暴露風險,並簡化秘密更新。 將秘密檢索整合進自動化部署流程,並使用秘密注入模式,幫助防止日誌或版本控制意外暴露。 如需詳細資訊,請參閱 保護應用程式秘密的建議。

  • 實施機密掃描工具:定期掃描程式碼庫內嵌秘密,以防止意外外洩。 像是 Azure DevOps 認證掃描工具 和 GitHub 機密掃描 這類工具,可以自動偵測存放庫中的機密並向你發出警示。 將這些工具整合進你的 CI/CD 管線,持續監控。 將掃描工具發現的任何秘密視為已被洩漏。 立即撤銷並更換,以維護安全防護的完整性。

安全儲存與加密

保護機密需要安全的儲存機制以及在各階段的適當加密。

  • 使用安全金鑰儲存:像 Azure Key Vault 和 Azure Key Vault Managed HSM 這類服務提供安全功能,包括存取控制、日誌記錄及自動輪換。 此方法集中管理秘密,降低未經授權存取的風險。 對於高度敏感或關鍵的秘密,應使用硬體安全模組(HSM)支援的金鑰庫,以提升比軟體型秘密庫更強的保護。 對於客戶管理金鑰案例,至少使用由 HSM 提供支援的 Azure Key Vault 進階層。 針對金鑰主權需求,請使用 Azure Key Vault Managed HSM。 關於 Azure 金鑰管理產品的概述及選擇指引,請參閱《Azure 中的金鑰管理》及《如何選擇合適的金鑰管理解決方案》。

  • 加密靜態與傳輸中的秘密:Azure Key Vault 透過信封加密安全儲存秘密,其中金鑰加密金鑰會加密資料加密金鑰,提供另一層安全防護。 使用安全通訊協定如 HTTPS 來加密應用程式與金鑰庫之間的傳輸資料。 在 Azure 中,各種服務透過使用 AES 256 加密來實作靜態加密。 TLS 與 MACsec 可保護傳輸中的資料安全。 欲了解更多資訊,請參閱靜 態與傳輸中的加密。

  • 實施網路隔離:設定 防火牆與網路安全群組 ,限制對金鑰庫的存取。 只允許受信任的應用程式和服務存取您的機密。 此方法可減少攻擊面,並協助防止未經授權的存取。 考慮使用多個金鑰庫來為不同元件建立隔離邊界。 如果攻擊者入侵了一個元件,該元件就無法控制其他秘密或整個工作負載。

存取控制與身份

管理誰和什麼能存取機密,對維護安全至關重要。

  • 使用管理身份:Azure 中的管理身份提供一種安全的方式,讓應用程式能在不儲存憑證的情況下,對 Azure 服務進行認證。 啟用 Azure 資源的管理身份,以安全存取 Azure Key Vault 及其他服務,減少手動處理秘密的需求。 此方法減少秘密建立,並減少潛在資料外洩的表面積,因為平台管理憑證。

  • 應用細緻存取控制:遵循最小權限原則,對您的秘密資料套用細緻存取控制。 使用 Azure 角色基礎存取控制(Azure RBAC)確保只有授權實體能存取特定秘密。 定期檢閲和更新存取權限,以防止未經授權的存取。 實作使用者、管理員與稽核員等不同角色來管理秘密存取。 此做法有助於確保只有受信任的身份擁有適當的權限層級。 欲了解更多資訊,請參閱 Azure Key Vault RBAC 指南。

秘密生命週期管理

秘密需要從創造到退休的整個生命週期持續管理。

  • 定期更換秘密:秘密隨時間容易洩漏或暴露。 定期更換您的秘密資料,以降低未經授權存取的風險。 你可以在 Azure Key Vault 中輪換祕密,但僅適用於某些祕密。 對於無法自動輪替的機密,請建立手動輪替程序,並在不再使用時予以清除。 自動化秘密輪替,並在秘密管理中加入冗餘,確保輪替不會干擾服務可用性。 在程式碼中實作重試邏輯和並行存取模式,幫助減少輪換視窗中的問題。

  • 安全分發機密:當您分發機密時,請在組織內外安全地分享。 使用設計用於安全共享的工具,並在災難復原計畫中加入秘密復原程序。 如果金鑰遭到入侵或洩露,請立即重新生成。 為每位消費者使用不同的金鑰,而非共享金鑰,即使使用者的存取模式相似。 此做法簡化了金鑰管理與撤銷流程,讓您能在不影響其他消費者的情況下撤銷被盜金鑰。

監視與記錄

持續監控能偵測可疑活動並支持合規要求。

  • 監控與記錄存取:啟用秘密管理系統的日誌與監控功能,以追蹤存取與使用情況。 使用 金鑰保存庫 logging、Azure 監視器 或 Azure 事件方格 來監控所有與秘密相關活動。 監控能讓你了解誰存取了你的機密,並協助偵測可疑行為或潛在的安全事件。 維持詳細的稽核追蹤,以檢查並驗證對機密的存取,有助於防止身份盜用、避免否認,並減少不必要的暴露。

服務專用的秘密處理指引

個別服務可能有更多最佳實務與保護秘密的指引。 範例包括:

下一步

將安全性風險降至最低是共同的責任。 主動採取措施來保障你的工作負載安全。 如需詳細資訊,請參閱雲端中的共同責任。