Azure Key Vault 开发人员指南

使用 Azure Key Vault 可以从应用程序中安全地访问敏感信息:

  • 无需自己编写代码即可保护密钥、机密和证书,并且能够轻松地在应用程序中使用它们。
  • 允许客户拥有和管理自己的密钥、机密和证书,以便你可以专注于提供核心软件功能。 这样,应用程序便不会对客户的租户密钥、机密和证书承担职责或潜在责任。
  • 应用程序可以使用密钥进行签名和加密,不过需要使密钥管理与应用程序分开。 有关详细信息,请参阅关于密钥
  • 可以通过将凭据(如密码、访问密钥和 SAS 令牌)作为机密存储在 Key Vault 中来对其进行管理。 有关详细信息,请参阅关于机密
  • 管理证书。 有关详细信息,请参阅关于证书

有关 Azure Key Vault 的常规信息,请参阅关于 Azure Key Vault

公共预览版

我们会定期发布新 Key Vault 功能的公共预览版。 欢迎试用公共预览功能,并通过反馈电子邮件地址 azurekeyvault@microsoft.com 将你的想法告诉我们。

创建和管理密钥保管库

与其他 Azure 服务一样,Key Vault 通过 Azure 资源管理器进行管理。 Azure 资源管理器是 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 使用 Azure Active Directory (Azure AD) 身份验证,这需要 Azure AD 安全主体授予访问权限。 Azure AD 安全主体可以是用户、应用程序服务主体、Azure 资源的托管标识,也可以是任何这些类型的组。

身份验证最佳做法

建议使用部署到 Azure 的应用程序的托管标识。 如果使用不支持托管标识的 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 标识 SDK Python Azure 标识 SDK Java Azure 标识 SDK JavaScript

注意

建议 Key Vault .NET SDK 版本 3 使用应用身份验证库,但该版本现已弃用。 若要迁移到 Key Vault .NET SDK 版本 4,请遵循 AppAuthentication 到 Azure.Identity 的迁移指南

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

管理密钥、证书和机密

数据平面可控制对密钥、证书和机密的访问。 可以使用本地保管库访问策略或 Azure RBAC 进行数据平面的访问控制。

用于密钥的 API 和 SDK

Azure CLI PowerShell REST API Resource Manager .NET Python Java JavaScript
引用
快速入门
引用
快速入门
引用 引用
快速入门
引用
快速入门
引用
快速入门
引用
快速入门
引用
快速入门

用于证书的 API 和 SDK

Azure CLI PowerShell REST API Resource Manager .NET Python Java JavaScript
引用
快速入门
引用
快速入门
引用 空值 引用
快速入门
引用
快速入门
引用
快速入门
引用
快速入门

用于机密的 API 和 SDK

Azure CLI PowerShell REST API Resource Manager .NET Python Java JavaScript
引用
快速入门
引用
快速入门
引用 引用
快速入门
引用
快速入门
引用
快速入门
引用
快速入门
引用
快速入门

机密用法

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

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

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

参考

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

有关 Key Vault 数据平面安全性的信息,请参阅 Azure Key Vault 安全功能

在应用程序中使用 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 或与 Key Vault 集成:

  • 静态加密允许在持久保存数据时对数据进行编码(加密)。 数据加密密钥通常由 Azure Key Vault 中的密钥加密密钥进行加密,以进一步限制访问。
  • Azure 信息保护允许管理自己的租户密钥。 例如,你可以管理自己的租户密钥以遵守适用于你的组织的特定法规,而不是由 Azure 管理你的租户密钥(默认设置)。 管理自己的租户密钥也称为自带密钥 (BYOK)。
  • 使用 Azure 专用链接,可以通过虚拟网络中的专用终结点访问 Azure 服务(例如 Azure Key Vault、Azure 存储和 Azure Cosmos DB)以及 Azure 托管的客户服务/合作伙伴服务。
  • 通过将 Key Vault 与 Azure 事件网格集成,用户可以在密钥保管库中存储的机密的状态发生更改时收到通知。 可以将新版本的机密分发到应用程序,也可以轮换即将到期的机密,以防止中断。
  • 防止自己的 Azure DevOps 机密在 Key Vault 中被意外访问。
  • 使用 Key Vault 中存储的机密从 Azure Databricks 连接到 Azure 存储
  • 为 Kubernetes 上的机密存储 CSI 驱动程序配置并运行 Azure Key Vault 提供程序。

Key Vault 概述和概念

若要了解: