什么是 Azure 资源的托管标识?

开发人员面临着一个共同的挑战,那就是如何管理用于保护服务之间通信安全的机密、凭据、证书和密钥。 托管标识使开发人员无需管理这些凭据。

虽然开发人员可以安全地将机密存储在 Azure Key Vault 中,但服务需要一种方法来访问 Azure Key Vault。 托管标识在 Azure Active Directory 中提供了自动托管标识,供应用程序在连接到支持 Azure Active Directory (Azure AD) 身份验证的资源时使用。 应用程序可以使用托管标识来获取 Azure AD 令牌,而无需管理任何凭据。

下面是使用托管标识的一些好处:

  • 你无需管理凭据, 而且你甚至可能都无法访问凭据。
  • 你可以使用托管标识对支持 Azure AD 身份验证(包括你自己的应用程序)的任何资源进行身份验证。
  • 使用托管标识不会产生额外成本。

注意

Azure 资源托管标识是以前称为托管服务标识 (MSI) 的服务的新名称。

托管标识类型

托管标识分为两种类型:

  • 系统分配。 一些 Azure 服务允许直接在服务实例上启用托管标识。 启用系统分配的托管标识后,系统会在 Azure AD 中创建一个标识。 此标识与该服务实例的生命周期相关联。 当资源被删除时,Azure 会自动为你删除标识。 按照设计,只有该 Azure 资源可以使用此标识从 Azure AD 请求令牌。
  • 用户分配。 也可以将托管标识创建为独立的 Azure 资源。 你可以创建用户分配的托管标识,并将其分配给一个或多个 Azure 服务实例。 对于用户分配的托管标识,标识与使用它的资源分开管理。

下表显示了这两种托管标识之间的差异:

属性 系统分配的托管标识 用户分配的托管标识
创建 作为 Azure 资源(例如 Azure 虚拟机或 Azure 应用服务)的一部分创建。 作为独立 Azure 资源创建。
生命周期 与用于创建托管标识的 Azure 资源共享生命周期。
删除父资源时,也会删除托管标识。
独立生命周期。
必须显式删除。
在 Azure 资源之间共享 无法共享。
只能与单个 Azure 资源相关联。
可以共享。
用户分配的同一个托管标识可以关联到多个 Azure 资源。
常见用例 包含在单个 Azure 资源中的工作负载。
需要独立标识的工作负荷。
例如,在单个虚拟机上运行的应用程序。
在多个资源上运行并可共享单个标识的工作负荷。
需要在预配流程中预先对安全资源授权的工作负荷。
其资源经常回收,但权限应保持一致的工作负荷。
例如,多台虚拟机需要访问相同资源的工作负载。

重要

无论选择哪种标识,托管标识都是一种只能用于 Azure 资源的特殊类型的服务主体。 删除托管标识时,相应的服务主体也会自动删除。


如何使用 Azure 资源的托管标识?

可以按照以下步骤使用托管标识:

  1. 在 Azure 中创建托管标识。 可以在系统分配的托管标识或用户分配的托管标识之间进行选择。
  2. 使用用户分配的托管标识时,请将托管标识分配给“源”Azure 资源,例如 Azure 逻辑应用或 Azure Web 应用。
  3. 授权托管标识,使之有权访问“目标”服务。
  4. 使用托管标识来访问资源。 在此步骤中,可以将 Azure SDK 与 Azure.Identity 库配合使用。 一些“源”资源提供了连接器,知道如何使用托管标识进行连接。 在这种情况下,请将标识用作该“源”资源的一项功能。

哪些 Azure 服务支持此功能?

Azure 资源的托管标识可以用来向支持 Azure AD 身份验证的服务证明身份。 如需支持的 Azure 服务的列表,请参阅支持 Azure 资源托管标识的服务

使用托管标识可以执行哪些操作?

支持系统分配托管标识的资源允许执行以下操作:

  • 在资源级别启用或禁用托管标识。
  • 使用基于角色的访问控制 (RBAC) 来授予权限
  • Azure 活动日志中查看创建、读取、更新和删除 (CRUD) 操作。
  • 在 Azure AD 登录日志中查看登录活动。

如果改为选择用户分配的托管标识:

可以使用 Azure 资源管理器模板、Azure 门户、Azure CLI、PowerShell 和 REST API 来执行托管标识的操作。

后续步骤