Azure Key Vault 安全性
Azure Key Vault 保护云中的加密密钥、证书(以及与证书关联的私钥)和机密(例如连接字符串和密码)。 但是,存储敏感和业务关键型数据时,必须采取措施,最大程度地提高保管库的安全性及其中存储的数据。
网络安全
可以通过指定哪些 IP 地址有权访问保管库来减少保管库的公开。 Azure Key Vault 的虚拟网络服务终结点允许限制对指定虚拟网络的访问。 终结点还允许限制对 IPv4(Internet 协议版本 4)地址范围列表的访问。 从这些源外部连接到 Key Vault 的任何用户都被拒绝访问。
防火墙规则生效后,用户只有在请求源自允许的虚拟网络或 IPv4 地址范围时才能从 Key Vault 读取数据。 这也适用于从 Azure 门户访问 Key Vault。 尽管用户可以从 Azure 门户浏览到密钥保管库,但如果客户端计算机不在允许列表中,他们可能无法列出密钥、机密或证书。
使用 Azure 专用链接服务,可以通过虚拟网络中的专用终结点访问 Azure Key Vault 和 Azure 托管的客户/合作伙伴服务。 Azure 专用终结点是一个网络接口,可将你专用且安全地连接到由 Azure 专用链接提供支持的服务。 专用终结点使用 VNet 中的专用 IP 地址,从而有效地将服务引入 VNet。 发往服务的所有流量都可以通过专用终结点进行路由,因此不需要网关、网络地址转换(NAT)设备、ExpressRoute 或 VPN 连接或公共 IP 地址。 虚拟网络与服务之间的流量通过微软主干网络传输,从而避免了暴露于公共互联网。 可以连接到 Azure 资源的实例,这样可以实现访问控制的最高粒度级别。
传输层安全性(TLS)和超文本传输协议安全(HTTPS)
Key Vault 的前端(数据平面)是一个多租户服务器。 这意味着来自不同客户的密钥保管库可以共享相同的公共 IP 地址。 为了实现隔离,每个 HTTP 请求都独立于其他请求进行身份验证和授权。
HTTPS 协议允许客户端参与 TLS 协商。 客户端可以强制实施 TLS 版本,每当客户端这样做时,整个连接都将使用相应的级别保护。 Key Vault 支持 TLS 1.2 和 1.3 协议版本。
Key Vault 身份验证选项
在 Azure 订阅中创建密钥保管库时,它会自动与订阅的 Microsoft Entra 租户相关联。 这两个系统中的所有调用方都必须在此租户中注册,并进行身份验证才能访问密钥保管库。 在这两种情况下,应用程序都可以通过三种方式访问 Key Vault:
- 仅限应用程序:应用程序表示服务主体或托管标识。 对于定期需要从密钥保管库访问证书、密钥或机密的应用程序,此标识是最常见的方案。 要使此方案正常工作,必须在访问策略中指定应用程序的 objectId,并且不能指定 applicationId 或其值必须为 null。
- 仅限用户:用户从租户中注册的任何应用程序访问密钥保管库。 此类访问的示例包括 Azure PowerShell 和 Azure 门户。 要使此方案正常工作,必须在访问策略中指定用户的 objectId,并且 applicationId 不得指定或必须为 null。
- 应用程序加用户(有时称为复合标识):用户需要通过特定的应用程序访问密钥保管库,并且该应用程序必须使用代表身份验证(OBO)流程来模拟用户。 要使此方案正常工作,必须在访问策略中指定 applicationId 和 objectId。 applicationId 标识所需的应用程序,objectId 标识用户。 目前,此选项不适用于数据平面 Azure RBAC。
在所有类型的访问中,应用程序使用 Microsoft Entra ID 进行身份验证。 应用程序使用基于应用程序类型的任何受支持的身份验证方法。 应用程序获取平面中资源用于授予访问权限的令牌。 资源是基于 Azure 环境的管理或数据平面中的终结点。 应用程序使用令牌并将 REST API 请求发送到 Key Vault。
向这两个平面进行身份验证的单一机制的模型具有以下优势:
- 组织可以集中控制对其组织中所有密钥保管库的访问。
- 如果用户离开,他们将立即失去对组织中所有密钥保管库的访问权限。
- 组织可以使用Microsoft Entra ID 中的选项来自定义身份验证,例如启用多重身份验证以实现添加的安全性。
访问模型概述
通过两个接口控制对密钥保管库的访问:管理平面和数据平面。 管理平面用于管理 Key Vault 本身。 此平面中的操作包括创建和删除密钥库、检索密钥库属性以及更新访问策略。 数据平面用于处理密钥保管库中存储的数据。 可以添加、删除和修改密钥、机密和证书。
这两架飞机都使用 Microsoft Entra ID 进行身份验证。 对于授权,管理平面使用 Azure 基于角色的访问控制(Azure RBAC),而数据平面则使用 Key Vault 访问策略和用于 Key Vault 数据平面操作的 Azure RBAC。
若要在任一平面中访问密钥保管库,所有调用方(用户或应用程序)都必须具有适当的身份验证和授权。 身份验证会建立调用方的身份。 授权决定调用者可以执行哪些操作。 使用 Key Vault 进行身份验证与 Microsoft Entra ID 结合使用,该 ID 负责对任何给定安全主体的标识进行身份验证。
安全主体是一个对象,表示请求访问 Azure 资源的用户、组、服务或应用程序。 Azure 为每个安全主体分配唯一的对象 ID。
- 标识Microsoft Entra ID中拥有个人资料的用户安全主体。
- 组安全主体标识Microsoft Entra ID 中创建的一组用户。 分配给组的任何角色或权限将授予该组中的所有用户。
- 服务主体是一种安全主体,用于标识应用程序或服务,即代码片段而不是用户或组。 服务主体的对象 ID 被称为客户端标识符,起作用类似于用户名。 服务主体的客户端机密或证书的行为类似于其密码。 许多 Azure 服务支持通过自动管理客户端 ID 和证书来分配托管标识。 托管标识是 Azure 中身份验证的最安全建议选项。
条件访问
Key Vault 支持Microsoft Entra 条件访问策略。 通过使用条件访问策略,可以在需要时将正确的访问控制应用于 Key Vault,以确保组织的安全,并在不需要时避免干扰用户。
特权访问
授权确定调用方可以执行哪些操作。 Key Vault 中的授权在管理平面上使用 Azure 基于角色的访问控制 (Azure RBAC),在数据平面上使用 Azure RBAC 或 Azure Key Vault 访问策略。
通过两个接口或平面访问保管库。 这些平面是管理平面和数据平面。
-
管理平面 用于管理 Key Vault 本身,它是用于创建和删除保管库的接口。 还可以读取密钥保管库属性并管理访问策略。
- 数据平面 允许您操作存储在密钥保管库中的数据。 可以添加、删除和修改密钥、机密和证书。
应用程序通过终结点访问平面。 两个系统的访问控制是独立运行的。 若要授予应用程序在密钥保管库中访问和使用密钥的权限,可以使用 Azure RBAC 或 Key Vault 访问策略来授予数据平面访问权限。 若要向用户授予对 Key Vault 属性和标记的读取访问权限,但无权访问数据(密钥、机密或证书),请使用 Azure RBAC 授予管理平面访问权限。
访问平面 | 访问端点 | 操作 | 访问控制机制 |
---|---|---|---|
管理平面 | 全球: management.azure.com:443 由世纪互联运营的 Microsoft Azure management.chinacloudapi.cn:443 Azure 美国政府版: management.usgovcloudapi.net:443 Azure 德国: management.microsoftazure.de:443 |
创建、读取、更新和删除密钥保管库 设置 Key Vault 访问策略 设置 Key Vault 标签 |
Azure RBAC |
数据平面 | 全球: <保管库名称>.vault.azure.net:443 由世纪互联运营的 Microsoft Azure <保管库名称>.vault.azure.cn:443 Azure 美国政府版: <保管库名称>.vault.usgovcloudapi.net:443 Azure 德国: <保管库名称>.vault.microsoftazure.de:443 |
密钥:encrypt、decrypt、wrapKey、unwrapKey、sign、verify、get、list、create、update、import、delete、recover、back up、restore、purge、rotate(预览)、getrotationpolicy(预览)、setrotationpolicy(预览)、release(预览) 证书:管理联系人、获取颁发者、列出颁发者、设置颁发者、删除颁发者、管理颁发者、获取、列出、创建、导入、更新、删除、恢复、备份、还原、清除 机密:获取、列出、设置、删除、恢复、备份、还原、清除 |
Key Vault 访问策略或 Azure RBAC |
管理对 Key Vault 的管理访问权限
在资源组中创建密钥保管库时,可以使用 Microsoft Entra ID 管理访问权限。 授予用户或组管理资源组中的密钥保管库的能力。 可以通过分配相应的 Azure 角色,在特定的范围级别授予访问权限。 若要授予对用户管理密钥保管库的访问权限,请将预定义的密钥保管库参与者角色分配给特定范围内的用户。 可以将以下范围级别分配给 Azure 角色:
- 订阅:在订阅级别分配的 Azure 角色适用于该订阅中的所有资源组和资源。
- 资源组:在资源组级别分配的 Azure 角色适用于该资源组中的所有资源。
- 特定资源:为特定资源分配的 Azure 角色适用于该资源。 在这种情况下,资源是特定的密钥保管库。
使用访问策略权限模型时,如果用户对密钥保管库管理平面具有 Contributor
权限,则用户可以通过设置 Key Vault 访问策略授予自己对数据平面的访问权限。 应使用访问策略权限模型严格控制谁具有对密钥保管库 Contributor
角色访问权限,以确保只有授权人员才能访问和管理密钥保管库、密钥、机密和证书。 建议使用新的基于角色的访问控制(RBAC)权限模型来避免此问题。 使用 RBAC 权限模型,权限管理仅限于“所有者”和“用户访问管理员”角色,这允许在安全作和常规管理作的角色之间分离职责。
控制对 Key Vault 数据的访问
可以使用 Azure RBAC 或 Key Vault 访问策略来控制对 Key Vault 密钥、证书和机密的访问。
日志记录和监视
Key Vault 日志记录保存有关保管库上执行的活动的信息。
可以将 Key Vault 与事件网格集成,以在密钥保管库中存储的密钥、证书或机密的状态发生更改时收到通知。
监视密钥保管库的运行状况也很重要,以确保服务按预期运行。
备份和恢复
Azure Key Vault 的软删除和清除保护功能允许恢复已删除的保管库及其对象。
在保管库中更新/删除/创建对象时,还应定期备份保管库。