Azure Key Vault 開發人員指南
Azure Key Vault 可讓您從應用程式內安全地存取敏感性資訊:
- 不需要自行撰寫程式碼即可保護金鑰、祕密和憑證,而且也能輕易地從應用程式加以使用。
- 您可以允許客戶擁有及管理自己的金鑰、秘密和憑證,如此一來,您就能夠專注於提供核心軟體功能。 透過這種方式,您的應用程式將不需要對客戶的租用戶金鑰、秘密和憑證負起責任或潛在責任。
- 您的應用程式可以使用金鑰進行簽署和加密,但保持從應用程式外部進行金鑰管理。 如需詳細資訊,請參閱關於金鑰。
- 您可以將密碼、存取金鑰和 SAS 權杖等認證儲存在 Key Vault 中作為秘密來進行管理。 如需詳細資訊,請參閱關於祕密。
- 管理憑證。 如需詳細資訊,請參閱關於憑證。
如需 Azure Key Vault 的一般詳細資訊,請參閱關於 Azure Key Vault。
公開預覽
我們會定期發行新 Key Vault 功能的公開預覽。 試用公開預覽功能,然後透過我們的意見反應電子郵件地址 azurekeyvault@microsoft.com,讓我們知道您的想法。
建立和管理金鑰保存庫
如同其他 Azure 服務,Key Vault 是透過 Azure Resource Manager 來管理。 Azure Resource Manager 是 Azure 的部署與管理服務。 您可以使用它來建立、更新及刪除 Azure 帳戶中的資源。
Azure 角色型存取控制 (RBAC) 可控制對管理層 (也稱為管理平面) 的存取權。 您會使用 Key Vault 中的管理平面來建立和管理金鑰保存庫和其屬性,包括存取原則。 您會使用「資料平面」來管理金鑰、憑證和秘密。
您可以使用預先定義的 Key Vault 參與者角色來授與對 Key Vault 的管理存取權。
適用於金鑰保存庫管理的 API 和 SDK
Azure CLI | PowerShell | REST API | Resource Manager | .NET | Python | Java | JavaScript |
---|---|---|---|---|---|---|---|
參考 快速入門 |
參考 快速入門 |
參考 | 參考 快速入門 |
參考 | 參考 | 參考 | 參考 |
如需安裝套件和原始程式碼,請參閱用戶端程式庫。
在程式碼中驗證 Key Vault
Key Vault 使用 Microsoft Entra 驗證,這需要 Microsoft Entra 安全性主體來授與存取權。 Microsoft Entra 安全性主體可以是使用者、應用程式服務主體、Azure 資源受控識別,或由上述任何類型組成的群組。
驗證最佳做法
建議您針對部署到 Azure 的應用程式使用受控識別。 如果您使用不支援受控識別的 Azure 服務,或者如果應用程式會在內部部署,則具有憑證的服務主體是可能的替代方案。 在該情況下,憑證應儲存在 Key Vault 中,並經常輪替。
針對開發和測試環境,使用具有秘密的服務主體。 針對本機開發和 Azure Cloud Shell,使用使用者主體。
建議您在每個環境中使用下列安全性主體:
- 生產環境:具有憑證的受控識別或服務主體。
- 測試和開發環境:具有憑證的受控識別、服務主體,或具有秘密的服務主體。
- 本機開發:具有秘密的使用者主體或服務主體。
Azure 身分識別用戶端程式庫
Azure 身分識別用戶端程式庫支援上述驗證案例,並與 Key Vault SDK 整合。 您可以跨環境和平台使用 Azure 身分識別用戶端程式庫,而不需要變更您的程式碼。 程式庫會自動從透過 Azure CLI、Visual Studio、Visual Studio Code 及其他方式登入 Azure 的使用者擷取驗證權杖。
如需 Azure 身分識別用戶端程式庫的詳細資訊,請參閱:
.NET | Python | Java | JavaScript |
---|---|---|---|
Azure 身分識別 SDK .NET | Azure 身分識別 SDK Python | Azure 身分識別 SDK JAVA | Azure 身分識別 SDK JavaScript |
注意
建議使用適用於 Key Vault .NET SDK 3 版的應用程式驗證程式庫,但現已淘汰。 若要移轉到 Key Vault .NET SDK 4 版,請遵循對 Azure.Identity 進行 AppAuthentication 的移轉指引。
如需如何在應用程式中驗證 Key Vault 的教學課程,請參閱:
- 在 .NET 中搭配使用 Azure Key Vault 與虛擬機器
- 在 Python 中搭配使用 Azure Key Vault 與虛擬機器
- 使用受控識別透過 .NET 將 Key Vault 連線至 Azure Web 應用程式
管理金鑰、憑證和秘密
注意
適用於 .NET、Python、Java、JavaScript、PowerShell 和 Azure CLI 的 SDK 是 Key Vault 功能發行程序的一部分,透過公開預覽和正式發行且具有 Key Vault 服務小組支援。 Key Vault 的其他 SDK 用戶端可供使用,但其是由個別 SDK 小組透過 GitHub 建置及支援,並在小組排程中發行。
資料平面可控制對金鑰、憑證和秘密的存取權。 您可以使用本機保存庫存取原則或 Azure RBAC,透過資料平面進行存取控制。
適用於金鑰的 API 和 SDK
Azure CLI | PowerShell | REST API | Resource Manager | .NET | Python | Java | JavaScript |
---|---|---|---|---|---|---|---|
參考 快速入門 |
參考 快速入門 |
參考 | 參考 快速入門 |
參考 快速入門 |
參考 快速入門 |
參考 快速入門 |
參考 快速入門 |
其他程式庫
Key Vault 和受控 HSM 的密碼編譯用戶端
本課程模組提供適用於 Go 的 Azure Key Vault 金鑰用戶端模組的密碼編譯用戶端。
注意
Azure SDK 小組不支援此專案,但會與其他支援語言的密碼編譯用戶端一致。
語言 | 參考 |
---|---|
Go | 參考 |
適用於憑證的 API 和 SDK
Azure CLI | PowerShell | REST API | Resource Manager | .NET | Python | Java | JavaScript |
---|---|---|---|---|---|---|---|
參考 快速入門 |
參考 快速入門 |
參考 | N/A | 參考 快速入門 |
參考 快速入門 |
參考 快速入門 |
參考 快速入門 |
適用於秘密的 API 和 SDK
Azure CLI | PowerShell | REST API | Resource Manager | .NET | Python | Java | JavaScript |
---|---|---|---|---|---|---|---|
參考 快速入門 |
參考 快速入門 |
參考 | 參考 快速入門 |
參考 快速入門 |
參考 快速入門 |
參考 快速入門 |
參考 快速入門 |
秘密的使用方式
Azure Key Vault 只能用來儲存您應用程式的秘密。 應儲存在 Key Vault 中的秘密範例包括:
- 用戶端應用程式秘密
- 連接字串
- 密碼
- 共用存取金鑰
- SSH 金鑰
任何與秘密相關的資訊 (例如使用者名稱和應用程式識別碼) 都可以儲存為秘密中的標記。 針對任何其他敏感性組態設定,您應該使用 Azure 應用程式組態。
參考資料
如需安裝套件和原始程式碼,請參閱用戶端程式庫。
如需 Key Vault 的資料平面安全性資訊,請參閱 Azure Key Vault 安全性功能。
在應用程式中使用 Key Vault
若要充分利用 Key Vault 中的最新功能,建議您使用可用的 Key Vault SDK 以在應用程式中使用秘密、憑證和金鑰。 當產品推出新功能時,會更新 Key Vault SDK 和 REST API,並遵循最佳做法和指導方針。
在基本案例中,有其他程式庫和整合解決方案可簡化使用方式,並具備 Microsoft 合作夥伴或開放原始碼社群提供的支援。
針對憑證,您可以使用:
- Key Vault 虛擬機器 (VM) 擴充功能,可自動重新整理儲存在 Azure Key Vault 中的憑證。 如需詳細資訊,請參閱:
- Azure App Service 整合,可從 Key Vault 匯入和自動重新整理憑證。 如需詳細資訊,請參閱從 Key Vault 匯入憑證。
針對秘密,您可以使用:
- Key Vault 秘密搭配 App Service 應用程式設定。 如需詳細資訊,請參閱使用 App Service 和 Azure Functions 的 Key Vault 參考。
- 使用 Azure 應用程式組態中的 Key Vault 參考來簡化應用程式對組態置和祕密的存取。 如需詳細資訊,請參閱使用 Azure 應用程式組態中的 Key Vault 參考。
程式碼範例
如需搭配應用程式使用 Key Vault 的完整範例,請參閱 Azure Key Vault 程式碼範例。
工作特定指引
下列文章和案例提供使用 Azure Key Vault 的工作特定指引:
- 若要存取金鑰保存庫,您的用戶端應用程式必須能夠存取多個端點才能使用各種功能。 請參閱存取防火牆後方的 Key Vault。
- 在 Azure VM 中執行的雲端應用程式需要憑證。 如何將此憑證帶入這部 VM? 請參閱適用於 Windows 的 Key Vault 虛擬機器擴充功能或適用於 Linux 的 Key Vault 虛擬機器擴充功能。
- 若要使用 Azure CLI、PowerShell 或 Azure 入口網站指派存取原則,請參閱指派 Key Vault 存取原則。
- 如需金鑰保存庫和各種已啟用虛刪除之金鑰保存庫物件的使用方式和生命週期,請參閱具有虛刪除和清除保護的 Azure Key Vault 復原管理。
- 當您需要在部署期間傳遞安全值 (例如密碼) 作為參數時,可以將該值儲存為金鑰保存庫中的秘密,並在其他 Resource Manager 範本中參考該值。 請參閱在部署期間使用 Azure Key Vault 以傳遞安全的參數值。
與 Key Vault 整合
下列服務和案例會使用 Key Vault 或與其整合:
- 待用加密可讓您對保存的資料進行編碼 (加密)。 資料加密金鑰通常會使用 Azure Key Vault 中的加密金鑰進行加密,以進一步限制存取。
- Azure 資訊保護可讓您管理自己的租用戶金鑰。 例如,您可以管理自己的租用戶金鑰,以符合適用於貴組織的特定規範,而不需 Microsoft 管理您的租用戶金鑰 (預設值)。 管理您自己的租用戶金鑰也稱為攜帶您自己的金鑰 (BYOK)。
- Azure Private Link 可讓您透過虛擬網路中的私人端點存取 Azure 服務 (例如 Azure Key Vault、Azure 儲存體和 Azure Cosmos DB),以及 Azure 託管的客戶/合作夥伴服務。
- Key Vault 與 Azure 事件方格整合,可讓使用者在 Key Vault 中儲存的秘密狀態變更時收到通知。 您可以將新版本的秘密散發至應用程式,或輪替即將到期的秘密,以避免中斷。
- 保護您的 Azure DevOps 秘密,避免 Key Vault 中的不必要存取。
- 使用儲存在 Key Vault 中的秘密,從 Azure Databricks 連線到 Azure 儲存體。
- 在 Kubernetes 上,為秘密存放區 CSI 驅動程式設定及執行 Azure Key Vault 提供者。
Key Vault 的概觀和概念
若要深入了解︰
- 可復原已刪除物件的功能 (無論該刪除是有意或無意的),請參閱 Azure Key Vault 虛刪除概觀。
- 節流的基本概念,並取得適用於您應用程式的方法,請參閱 Azure Key Vault 節流指引。
- 區域 (Region) 和安全性區域 (Area) 之間的關聯性,請參閱 Azure Key Vault 安全世界和地理界限。