Azure Key Vault开发人员指南

Azure Key Vault是一种云服务,提供加密密钥、机密信息和证书的安全存储和管理。 本指南可帮助开发人员将Key Vault集成到其应用程序中。

概述

Azure Key Vault使你能够:

  • Secure storage:在不编写自定义安全代码的情况下保护密钥、机密和证书。
  • 简化的密钥管理:集中加密作和密钥生命周期管理。
  • 客户拥有的密钥:允许客户管理自己的密钥,同时专注于核心应用程序功能。
  • 外部密钥管理:使用密钥进行签名和加密,同时将密钥保留在应用程序外部。

有关Azure Key Vault的一般信息,请参阅 About Azure Key Vault

开发者场景

与Key Vault相关的常见开发人员任务包括:

  • 存储和检索机密:安全地管理连接字符串、密码、API 密钥和 SAS 令牌。 有关详细信息,请参阅关于机密
  • 使用密钥进行加密和签名:执行加密作,而不向应用程序公开密钥材料。 有关详细信息,请参阅关于密钥
  • 管理证书:自动执行 SSL/TLS 的证书预配、续订和部署。 有关详细信息,请参阅关于证书

公开预览版

Microsoft定期发布新Key Vault功能的公共预览版。 若要尝试预览功能并提供反馈,请联系团队。azurekeyvault@microsoft.com 有关最新功能和更新的信息,请参阅 Azure Key Vault

创建和管理密钥保管库

Key Vault 使用双层次访问模型:

  • 控制平面:管理 Key Vault 资源本身(创建、删除、更新属性、分配访问策略)。 操作通过 Azure Resource Manager 进行管理。 有关访问控制,请参阅 分配 Key Vault 访问策略
  • 数据平面:管理存储在 Key Vault(密钥、机密、证书)中的数据。 访问控制通过 Azure RBAC 结合 Key Vault 实现。

使用预定义的Key Vault 管理员角色授予对 Key Vault 资源的管理访问权限。 有关身份验证和授权的详细信息,请参阅 Azure Key Vault 中的身份验证

网络安全

通过配置专用终结点、防火墙或服务终结点来减少网络暴露。 有关全面的网络安全指南,包括从大多数限制到最不严格的配置选项,请参阅 保护Azure Key Vault:网络安全配置Azure Key Vault网络设置

用于密钥库管理的 API 和 SDK

下表列出了用于管理 Key Vault 资源(控制平面操作)的 SDK 和快速入门指南。 有关最新版本和安装说明,请参阅 客户端库

Azure CLI PowerShell REST API 资源管理器 .NET Python Java JavaScript
Reference
快速入门
引用
快速入门
引用 引用
快速入门
Reference Reference Reference Reference

在代码中对Key Vault进行身份验证

Key Vault 使用 Microsoft Entra 身份验证,这要求 Microsoft Entra 的安全主体授予访问权限。 Microsoft Entra 安全主体可以是用户、应用程序服务主体、Azure资源的托管标识或其中任意类型的组。

身份验证最佳做法

对于部署到Azure的应用程序,请使用托管标识来消除在代码中存储凭据的需求。 有关不同环境(生产、开发、本地)的详细身份验证指南和安全主体建议,请参阅《Azure Key Vault 中的身份验证》和《保护您的 Azure Key Vault》。

Azure标识客户端库

Azure标识客户端库支持上述身份验证方案,并与Key Vault SDK 集成。 无需更改代码,即可跨环境和平台使用Azure标识客户端库。 该库通过 Azure CLI、Visual Studio、Visual Studio Code 和其他方式自动检索登录到Azure用户的身份验证令牌。

有关Azure标识客户端库的详细信息,请参阅:

.NET Python Java JavaScript
Azure身份SDK .NET Azure Identity SDK Python Azure身份 SDK Java Azure身份验证 SDK JavaScript

注意事项

对于 Key Vault .NET SDK 版本 3,我们曾建议使用应用身份验证库,但现在该库已弃用。 若要迁移到 Key Vault .NET SDK 版本 4,请按照 从 AppAuthentication 到 Azure.Identity 的迁移指南

有关如何在应用程序中对Key Vault进行身份验证的教程,请参阅:

管理密钥、证书和机密

注意事项

适用于 .NET、Python、Java、JavaScript、PowerShell 和 Azure CLI 的 SDK 在 Key Vault 服务团队的支持下,通过公共预览版和正式版成为 Key Vault 功能发布过程的一部分。 Key Vault的其他 SDK 客户端可用,但它们由各个 SDK 团队通过GitHub生成和支持,并在团队计划中发布。 有关最新的 SDK 版本和安装包,请参阅 客户端库

数据平面控制对密钥、证书和机密的访问。 可以将 Azure RBAC 与 Key Vault 配合使用,通过数据平面进行访问控制。

用于密钥的 API 和 SDK

下表列出了用于处理密钥(数据平面操作)的 SDK 和快速入门。 有关密钥的详细信息,请参阅关于密钥

Azure CLI PowerShell REST API 资源管理器 .NET Python Java JavaScript
Reference
快速入门
引用
快速入门
引用 Reference
快速入门
Reference
快速入门
Reference
快速入门
Reference
快速入门
Reference
快速入门

其他库

用于 Key Vault 和托管 HSM 的密码学客户端

此模块为 Go 的 Azure Key Vault Keys 客户端模块提供加密客户端

注意事项

Azure SDK 团队不支持此project,但与其他受支持语言的加密客户端保持一致。

语言 参考文献
Go Reference

用于证书的 API 和 SDK

下表列出了用于证书数据平面操作的 SDK 和快速入门。 有关证书的详细信息,请参阅 “关于证书”。

Azure CLI PowerShell REST API 资源管理器 .NET Python Java JavaScript
Reference
快速入门
引用
快速入门
引用 空值 Reference
快速入门
Reference
快速入门
Reference
快速入门
Reference
快速入门

用于机密的 API 和 SDK

下表列出了用于处理机密(数据平面操作)的 SDK 和快速入门。 有关机密的详细信息,请参阅 “关于机密”。

Azure CLI PowerShell REST API 资源管理器 .NET Python Java JavaScript
Reference
快速入门
引用
快速入门
引用 Reference
快速入门
Reference
快速入门
Reference
快速入门
Reference
快速入门
Reference
快速入门

密钥使用

使用Azure Key Vault仅存储应用程序的机密。 应存储在Key Vault中的机密示例包括:

  • 客户端应用程序机密
  • 连接字符串
  • 密码
  • 共享访问密钥
  • SSH 密钥

任何与机密相关的信息(如用户名和应用程序 ID)都可以作为标记存储在机密中。 对于任何其他敏感的配置设置,应使用 Azure App Configuration

有关安装包和源代码,请参阅客户端库

在应用程序中使用Key Vault

若要利用Key Vault中的最新功能,建议使用可用的Key Vault SDK 在应用程序中使用机密、证书和密钥。 随着产品的新功能发布,Key Vault SDK 和 REST API 会更新,并遵循最佳做法和指南。

对于基本方案,还有其他库和集成解决方案可用于简化使用,Azure合作伙伴或开源社区提供支持。

对于证书,可以使用:

对于机密,可以使用:

代码示例

有关将Key Vault用于应用程序的完整示例,请参阅 Azure Key Vault 代码示例

任务专用指南

以下文章和方案提供有关使用Azure Key Vault的任务特定指南:

与 Key Vault 集成

以下服务和方案使用或与Key Vault集成:

  • 静态加密允许在持久保存数据时对数据进行编码(加密)。 数据加密密钥通常在Azure Key Vault中使用密钥加密密钥进行加密,以进一步限制访问。
  • Azure Information Protection允许管理自己的租户密钥。 例如,可以管理自己的租户密钥,而不是Azure管理租户密钥(默认值),以符合适用于组织的特定法规。 管理自己的租户密钥也称为自带密钥 (BYOK)。
  • Azure Private Link能够让你访问Azure服务(例如,Azure Key Vault、Azure Storage和Azure Cosmos DB),以及由Azure托管的客户或合作伙伴的服务,可以通过Azure虚拟网络中的专用终结点进行访问。
  • Key Vault与 Azure Event Grid允许用户在Key Vault中存储的机密的状态发生更改时收到通知。 可以将新版本的机密分发到应用程序,也可以轮换即将到期的机密,以防止中断。
  • 保护您的Azure DevOps机密免遭未经授权访问,使用 Key Vault。
  • 使用存储在 Key Vault 中的机密从 Azure Databricks 连接到 Azure Storage

灾难恢复和业务连续性

Key Vault提供内置的灾难恢复和自动区域复制。 对于生产部署,请启用软删除和清除保护,并实现常规备份。 有关详细信息,请参阅 Azure Key Vault 可用性和冗余Azure Key Vault恢复管理Azure Key Vault backup

性能和可伸缩性

开发使用Key Vault的应用程序时,请考虑以下性能和可伸缩性最佳做法:

  • Service limits:Key Vault每个区域的每个保管库的事务都有服务限制。 超出这些限制会导致限流。 有关详细信息,请参阅 Azure Key Vault 服务限制
  • 限制指南:使用指数退避实现重试逻辑来处理限制响应。 有关详细信息,请参阅Azure Key Vault 的限制指南
  • Caching:缓存应用程序中的机密和证书,以减少对Key Vault的调用并提高性能。
  • Connection 管理:尽可能重用与Key Vault的 HTTP 连接,以减少延迟并提高性能。

监视和日志记录

启用日志记录和监视,以实现安全性、合规性和故障排除。 为关键事件配置诊断设置、事件网格通知和警报。 有关详细指导,请参阅监控 Azure 密钥保管库Azure 密钥保管库日志记录使用 Azure 事件网格监控密钥保管库保护您的 Azure 密钥保管库:日志记录和威胁检测

常见参数和请求模式

使用 Key Vault REST API 时,了解常见参数和请求/响应模式非常有用:

  • API 版本:Key Vault使用版本控制 API。 始终在请求中指定 API 版本。
  • 身份验证请求:了解如何获取和使用身份验证令牌,包括常见的请求标头和响应格式。 有关详细信息,请参阅 身份验证、请求和响应
  • 错误代码:熟悉常见的 REST API 错误代码,以正常处理故障。 有关详细信息,请参阅 Azure Key Vault REST API 错误代码

故障排除

有关解决常见问题的帮助:

安全最佳做法

有关全面的安全指南,包括身份和访问管理、数据保护、合规、治理和备份方案,请参阅保护 Azure Key Vault

其他资源

Key Vault概念

管理和操作