共用方式為


保護祕密的最佳做法 (部分機器翻譯)

本文提供了保護您的祕密和降低未經授權存取的風險之指導。 遵循此指導,以確保您不會將敏感性資訊 (如認證) 儲存在程式碼、GitHub 存放庫、記錄、持續整合/持續部署 (CI/CD) 管線等中。 本文中的指導是根據個別服務的建議以及 [Microsoft Cloud 雲端安全性基準] (MCSB) 編寫的。

一般最佳做法

在當今的數位環境中,保護應用程式認證和祕密等敏感性資訊至關重要。 缺口可能導致嚴重後果,包括資料外洩、財務處罰和信譽受損。 實作全面的祕密管理策略對於降低這些風險至關重要。

進行稽核以識別祕密

在保護您的祕密之前,您需要知道它們在何處。 對您的系統和應用程式進行徹底稽核有助於識別所有需要保護的敏感性資訊。 這包括密碼、API 金鑰、連接字串和其他認證。 定期稽核確保新的祕密得到説明,現有祕密得到妥善管理。

值得注意的是,即使是動態建立的祕密,如 OAuth 權杖,也可能是臨時的,仍然需要像長期祕密一樣嚴格保護。

避免硬式編碼祕密

將祕密直接内嵌至程式碼或組態檔中是一個重大的安全性風險。 如果您的程式碼基底遭入侵,您的祕密也會遭入侵。 相反,使用環境變數或組態管理工具,將祕密隱藏在原始程式碼之外。 此做法最大限度地降低了意外暴露的風險,簡化了更新祕密的流程。

此外,將祕密擷取整合至您的自動化部署管線中並使用祕密導入模式可以防止祕密在記錄或版本控制中意外暴露,從而進一步增強部署流程的安全性。

請參閱保護應用程式祕密的建議

使用安全金鑰儲存區

有效率的調控安全金鑰儲存區可確保您的祕密儲存在安全、加密的位置。 [Azure Key Vault] 和 [Azure 受控 HSM] 等服務提供了強大的安全性功能,包括存取控制、記錄和自動輪替。 此方法集中管理您的祕密,並降低未經授權存取的風險。

為了取得更高的安全性,特別是對於高敏感性或關鍵的祕密,可以考慮使用硬體安全性模型 (HSM) 中的金鑰儲存區對祕密進行加密,與軟體型祕密儲存區相比,HSM 提供了更強的保護。 有關 Azure 中所有金鑰管理產品的概觀以及選擇指導,請參閱 [Azure 中的金鑰管理] 和 [如何選擇正確的金鑰管理解決方案]

實作祕密掃描工具

定期掃描程式碼基底中的内嵌祕密可以防止意外暴露。 [Azure DevOps Credential Scanner] 和 [GitHub 祕密掃描] 功能等工具可以自動偵測並提醒您在存放庫中找到的任何祕密。 將這些工具整合至您的 CI/CD 管線中可確保持續監視。 將這些掃描工具找到的任何祕密視為遭入侵是至關重要的,這表示應該立即將其撤銷和取代,以保持您的安全性態勢的完整性。

有效率的調控受控識別

Azure 中的 [受控識別] 為應用程式提供了一種安全的方式來向 Azure 服務進行驗證,而無需在程式碼中儲存認證。 透過啟用 Azure 資源受控識別,您可以安全地存取 Azure Key Vault 和其他服務,從而减少手動處理祕密的需要。 此方法不僅最大限度地减少了祕密的建立,還减少了潜在缺口的介面區,因為管理認證的責任已委派給了平台。

套用細微存取控制

遵循最低權限原則,對您的祕密套用細微存取控制。 使用 [Azure 角色型存取控制] (RBAC) 來確保只有授權實體才能存取特定的祕密。 定期檢閲和更新存取權限,以防止未經授權的存取。 還建議實作不同的角色,如使用者、系統管理員和稽核者,以管理對祕密的存取,確保只有受信任的身分識別具有適當的權限等級。

請參閲 [Azure Key Vault RBAC 指南]

定期輪替祕密

隨著時間的推移,祕密很容易外洩或暴露。 定期輪替您的祕密可以降低未經授權存取的風險。 您可以 [在 Azure Key Vault 中為某些祕密輪替金鑰];對於那些不能自動輪替的祕密,則建立手動輪替流程,並確保在不再使用時進行清除。

自動化祕密輪替流程並在祕密管理中建置備援可以確保輪替不會中斷服務可用性。 在程式碼中實作重試邏輯和同時存取模式可以協助最大限度地减少輪替視窗期間的問題。

監視和記錄存取

為您的祕密管理系統啟用記錄和監視,以追蹤存取和使用方式。 使用 [Key Vault 記錄] 和/或 [Azure Monitor] 和 [Azure 事件方格] 等服務來監視與您祕密相關的所有活動。 這提供了對祕密存取者的可見度,並有助於偵測任何可疑行為或潜在的安全性事件。 維護詳細的稽核線索對於檢查和驗證對祕密的存取至關重要,這有助於防止身分識別竊取,避免否認性,並减少不必要的暴露。

實作網路隔離

透過實作網路隔離來减少祕密的暴露。 設定 [防火牆和網路安全群組] 以限制對金鑰保存庫的存取。 只允許受信任的應用程式和服務存取您的祕密,最大限度地减少受攻擊面,防止未經授權的存取。 此外,考慮使用多個金鑰保存庫為不同元件建立隔離邊界,確保如果一個元件遭入侵,它無法控制其他祕密或整個工作負載。

加密待用和傳輸中時的祕密

確保您的祕密在待用和傳輸中時都是加密的。 [Azure Key Vault] 使用信封加密安全地儲存祕密,其中資料加密金鑰 (DEK) 由金鑰編密金鑰 (KEK) 加密,提供了多一層的安全性。 此方法增強了對未經授權存取的保護。 此外,使用 HTTPS 等安全通訊協定對應用程式和金鑰保存庫之間傳輸的資料進行加密,確保您的祕密在儲存體和傳輸期間得到保護。

在 Azure 中,使用 AES 256 加密在各種服務中實作待用加密,而傳輸中的資料透過 TLS 和 MACsec 進行保護,以防止傳輸期間的未經授權存取。 這些加密做法為您的資料提供了全面的保護,無論是在系統之間儲存還是傳輸。 如需更多詳細資訊,請參閱 [靜止和傳輸中的加密]

祕密的安全散發

在散發祕密時,確保它們在組織內外安全共用。 使用專為安全共用而設計的工具,並在災害復原計畫中包含祕密復原程序。 如果金鑰遭入侵或外洩,應立即重新產生。 為了進一步增強安全性,為每個取用者使用不同的金鑰,而不是共用金鑰,即使他們有相似的存取模式。 此做法簡化了金鑰管理和撤銷,確保可以在不影響其他取用者的情况下撤銷遭入侵的金鑰。

特定於服務的最佳做法

個別服務可能有其他保護祕密的最佳做法和指導。 以下列出一些範例:

  • API 管理:[在 Azure API 管理原則中使用具有 Key Vault 整合的具名值]
  • App Service:[將 Key Vault 參考用於 App Service 和 Azure Functions]
  • 應用程式閘道:[使用 Azure 入口網站設定具有 TLS 終止的應用程式閘道]
  • 自動化:[管理 Azure 自動化中的認證]
  • Azure 應用程式組態:[教學課程:在 ASP.NET Core 應用程式中使用 Key Vault 參考]
  • Azure Bot Service:[待用資料的 Azure Bot Service 加密]
  • Azure SAP 解決方案中心:[Azure SAP 解決方案中心 - 部署 - 準備網路部署]
  • Azure 通訊閘道:[建立和儲存祕密]
  • Azure 通訊服務:建立和管理存取權杖
  • 適用於 PostgreSQL 的 Azure DB - 彈性伺服器:[具有客戶自控金鑰的適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器資料加密]
  • Azure Databricks:[Databricks 中的 Key Vault 整合]
  • Azure DevTest Labs:[在 Azure DevTest Labs 的實驗室虛擬機器上啟用使用者指派的受控識別]
  • Azure Front Door:[Azure Front Door 祕密]
  • AKS 上的 Azure HDInsight:[資源先決條件 - 建立 Azure Key Vault]
  • Azure 資訊保護:[Azure 資訊保護 Key Vault 支援的詳細資料]
  • Azure Kubernetes Service (AKS):[CSI Secret Store]
  • Azure 受控應用程式:[在部署 Azure 受控應用程式時存取金鑰保存庫祕密]
  • Azure OpenAI:[使用 Key Vault 開發 Azure AI 服務應用程式]
  • Azure Pipelines:保護 Azure Pipelines 中的秘密
  • Azure Purview:[Microsoft Purview 中使用來源驗證的認證]
  • Azure SignalR Service:[URL 範本設定中的 Key Vault 祕密參考]
  • Azure Service Bus:使用 Microsoft Entra ID 驗證和授權應用程式,以存取 Azure 服務匯流排實體
  • Azure Stack Edge:[使用 Azure Key Vault 管理 Azure Stack Edge 祕密]
  • Azure Stack Hub:輪替使用祕密
  • Azure Web PubSub:[新增自訂憑證]
  • 備份:[使用客戶自控金鑰設定要加密的保存庫]
  • 認知服務:[使用 Key Vault 開發 Azure 認知服務應用程式]
  • Data Factory:[將認證儲存在 Azure Key Vault 中]
  • ExpressRoute:[為 ExpressRoute Direct 設定 MACsec 加密]
  • Functions:[將 Key Vault 參考用於 App Service 和 Azure Functions]
  • Key Vault:[關於 Azure Key Vault 祕密]
  • Logic Apps:[Logic Apps 標準應用程式設定]
  • Azure Machine Learning 服務:[在 Azure Machine Learning 工作中使用驗證認證祕密]
  • SQL IaaS:[在 Azure VM (資源管理員) 上設定 SQL Server 的 Azure Key Vault 整合]
  • 儲存體:[使用 Key Vault 和 Azure CLI 管理儲存體帳戶金鑰]

下一步

將安全性風險降至最低是共同的責任。 您必須主動採取步驟來保護工作負載。 了解雲端的共同責任

如需更多安全性最佳做法,請參閱 Azure 安全性最佳做法與模式,以便在使用 Azure 設計、部署和管理雲端解決方案時使用。