什么是 Azure Key Vault?

已完成

Azure Key Vault 是一种机密存储区,一种用于存储应用机密的集中式云服务;应用机密是须始终保持安全的配置值,例如密码和连接字符串。 Key Vault 通过将应用机密集中保存在一个中心位置来帮助控制这些机密。 它提供安全访问、权限控制和访问日志记录。

使用 Key Vault 的主要好处有以下几点:

  • 将敏感应用信息与其他配置与代码分离,从而降低意外泄漏的风险
  • 通过为需要访问权限的应用和个人定制的访问策略实现有限制的机密访问
  • 集中式机密存储,这意味着只需在一处进行所需的更改
  • 访问日志记录和监视,帮助你了解在何时以何种方式访问了机密

机密存储在独立的保管库中,保管库是用于将机密组合在一起的 Azure 资源。 机密访问和保管库管理通过使用 REST API 实现。 所有适用于多种常用语言的 Azure 管理工具和客户端库也支持此 API。 每个保管库具有托管其 API 的唯一 URL。

重要

Key Vault 旨在存储服务器应用的配置机密。 它不用于存储属于应用用户的数据。 它不应在应用的客户端部分使用。 此行为反映在其性能特征、API 和成本模型中。

用户数据应存储在其他位置,例如使用透明数据加密的 Azure SQL 数据库或使用存储服务加密的存储帐户。 应用用于访问这些数据存储的机密可保存在 Key Vault 中。

什么是 Key Vault 中的机密?

在 Key Vault 中,机密是字符串的名称/值对。 机密名称的长度必须为 1 至 127 个字符,且仅包含字母数字字符和短划线,并且在保管库中必须是唯一的。 机密值可以是大小不超过 25 KB 的任何 UTF-8 字符串。

提示

秘密名称本身不需要特别机密。 如果实现需要调用,可将其存储在应用的配置中。 这同样适用于保管库名称和 URL。

注意

除字符串外,Key Vault 还支持两种机密:密钥证书。 Key Vault 提供特定于其用例的有用功能。 此模块不涉及这些功能,而是专注于密码和连接字符串等机密。

保管库身份验证和权限

Key Vault API 使用 Microsoft Entra ID 对用户和应用进行身份验证。 保管库访问策略基于操作,且应用于整个保管库。 例如,如果某应用具有保管库的 Get(读取机密值)、List(列出所有机密的名称)和 Set(创建或更新机密值)权限,则该应用可在该保管库中创建机密、列出所有机密名称,并获取和设置所有机密值。

对保管库执行任何操作都需要进行身份验证和授权。 无法授予任何类型的匿名访问。

提示

在向开发人员和应用授予保管库访问权限时,仅授予所需的最低限度的权限。 借助权限限制,可帮助避免代码 bug 所导致的故障,同时减少因凭证被盗或向应用注入恶意代码所带来的影响。

开发人员通常只需要具有对开发环境保管库的 GetList 权限。 某些工程师需要完整权限,以便在必要时更改和添加机密。

对应用而言,通常只需要 Get 权限。 一些应用可能需要 List 权限,具体视应用实现方式而定。 本模块练习中的应用需要 List 权限,这是由应用用于从保管库读取机密的技术决定的。