你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

多租户和 Azure Key Vault

Azure Key Vault 用于管理解决方案的安全数据,包括机密、加密密钥和证书。 本文将介绍对多租户解决方案非常有用的一些 Azure Key Vault 功能。 然后提供在计划如何使用 Key Vault 时可以有所帮助的指南的链接。

隔离模型

在处理使用 Key Vault 的多租户系统时,需要确定想要使用的隔离级别。 所用隔离模型的选择取决于以下因素:

  • 计划拥有多少租户?
  • 是否在多个租户之间共享应用程序层、是否部署单租户应用程序实例,或者是否为每个租户部署单独的部署标记?
  • 租户是否需要管理自己的加密密钥?
  • 租户是否具有要求其机密与其他租户的机密分开存储的合规性要求?

下表汇总了 Key Vault 的主要租户模型之间的差异:

注意事项 提供程序订阅中每个租户的保管库 租户订阅中每个租户的保管库 共享保管库
数据隔离 很高
性能隔离 中等。 高吞吐量可能受到限制,即使有多个保管库
部署复杂性 中低,具体取决于租户数 高。 租户必须正确授予对提供程序的访问权限
操作复杂性 对于提供程序,为低,对于租户,为较高 最低
示例方案 每个租户的各个应用程序实例 客户托管的加密密钥 具有共享应用程序层的大型多租户解决方案

提供程序订阅中每个租户的保管库

可以考虑在(服务提供程序的)Azure 订阅中为每个租户部署保管库。 此方法提供每个租户数据之间的强数据隔离。 但是,它要求在增加租户数时部署和管理越来越多的保管库。

可以部署到 Azure 订阅中的保管库数没有限制。 但是,应考虑以下限制:

租户订阅中每个租户的保管库

在某些情况下,租户可能会在自己的 Azure 订阅中创建保管库,并且他们可能希望授予应用程序访问权限以使用机密、证书或密钥。 当允许在解决方案中使用客户管理的密钥 (CMK) 进行加密时,此方法是合适的。

若要访问租户保管库中的数据,租户必须向应用程序提供对其保管库的访问权限。 此过程要求应用程序通过它们的 Microsoft Entra 实例进行身份验证。 一种方法是发布 多租户 Microsoft Entra 应用程序。 租户必须执行一次性同意过程。 他们首先在其自己的 Microsoft Entra 租户中注册多租户 Microsoft Entra 应用程序。 然后,他们向多租户 Microsoft Entra 应用程序授予对其保管库的适当级别访问权限。 他们还需要提供他们创建的保管库的完整资源 ID。 然后,应用程序代码可以使用与你自己的 Microsoft Entra ID 中的多租户 Microsoft Entra 应用程序关联的服务主体来访问每个租户的保管库。

或者,可以要求每个租户创建供服务使用的服务主体,并提供其凭据。 但是,此方法要求安全地存储和管理每个租户的凭据,这是一种安全隐患。

如果租户在其保管库上配置了网络访问控制,请确保你能够访问这些保管库。 设计应用程序以处理租户更改其网络访问控制并阻止你访问其保管库的情况。

共享保管库

可以选择在单个保管库中共享租户的机密。 保管库部署在(解决方案提供商的)Azure 订阅中,由你负责管理。 此方法最简单,但提供的数据隔离和性能隔离最少。

还可以选择部署多个共享保管库。 例如,如果遵循部署标记模式,则可能在每个标记内部署共享保管库。 同样,如果部署多区域解决方案,则应将保管库部署到每个区域,原因如下:

  • 避免在处理保管库中的数据时出现跨区域流量延迟。
  • 支持数据驻留要求。
  • 允许在需要相同区域部署的其他服务中使用区域保管库。

使用共享保管库时,请务必考虑针对保管库执行的操作数。 操作包括读取机密和执行加密或解密操作。 Key Vault 对可以针对单个保管库和 Azure 订阅中的所有保管库发出的请求数施加了限制。 请确保遵循限制指南。 务必遵循建议的做法,包括安全地缓存检索的机密,以及使用信封加密来避免将每个加密操作发送到 Key Vault。 遵循这些最佳做法时,可以针对单个保管库运行大规模解决方案。

如果需要存储特定于租户的机密、密钥或证书,请考虑使用命名约定,如命名前缀。 例如,可以将租户 ID 追加到每个机密的名称前。 然后,应用程序代码可以轻松为特定租户加载特定机密的值。

支持多租户的 Azure Key Vault 功能

标记

Key Vault 支持使用自定义元数据标记机密、证书和密钥,因此你可以使用标记来跟踪每个特定于租户的机密的租户 ID。 但是,Key Vault 不支持按标记进行查询,因此此功能最适合用于管理目的,而不是在应用程序逻辑中使用。

详细信息:

Azure Policy 支持

如果决定部署大量保管库,请务必确保它们遵循一致的网络访问配置、日志记录和访问控制标准。 考虑使用 Azure Policy 来验证是否已根据要求配置保管库。

详细信息:

托管 HSM 和专用 HSM

如果需要每秒执行大量操作,并且 Key Vault 操作限制不足,请考虑使用托管 HSM专用 HSM。 这两种产品都提供了预留的容量,但它们通常比 Key Vault 成本更高。 此外,请注意可以部署到每个区域的这些服务的实例数限制。

详细信息:

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

其他参与者:

若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。

后续步骤

查看多租户的部署和配置方法