保护 Microsoft Entra ID 中的托管标识

本文介绍了如何管理机密和凭据以保护服务之间的通信。 托管标识在 Microsoft Entra ID 中提供自动托管标识。 应用程序使用托管标识连接到支持 Microsoft Entra 身份验证的资源,并获取 Microsoft Entra 令牌,无需进行凭据管理。

托管标识的优势

使用托管标识的优势:

  • 使用托管标识时,凭据完全受 Azure 管理、轮换和保护。 标识随 Azure 资源提供和删除。 托管标识使 Azure 资源能够与支持 Microsoft Entra 身份验证的服务进行通信。

  • 任何人(包括全局管理员)都无权访问凭据,这些凭据不会因包含在代码中而意外泄露。

使用托管标识

托管标识的最佳用途是促进支持 Microsoft Entra 身份验证的服务之间的通信。 源系统请求访问目标服务。 任何 Azure 资源都可以是源系统。 例如,Azure 虚拟机(VM)、Azure Function 实例和 Azure 应用服务实例都支持托管标识。

身份验证和授权

通过使用托管标识,源系统可以从 Microsoft Entra ID 获取令牌,无需所有者管理凭据。 Azure 管理凭据。 源系统获取的令牌会提供给目标系统进行身份验证。

目标系统进行身份验证并授权源系统允许访问。 如果目标服务支持 Microsoft Entra 身份验证,则接受 Microsoft Entra ID 颁发的访问令牌。

Azure 具有控制平面和数据平面。 在控制平面中创建资源,并在数据平面中访问它们。 例如,在控制平面中创建一个 Azure Cosmos DB 数据库,但是在数据平面中进行查询。

目标系统接受用于身份验证的令牌后,便支持机制为其控制平面和数据平面授权。

Azure 控制平面操作由 Azure 资源管理器管理,并使用 Azure 基于角色的访问控制(Azure RBAC)。 在数据平面中,目标系统具有授权机制。 Azure 存储在数据平面上支持 Azure RBAC。 例如,使用 Azure 应用服务的应用程序可以从 Azure 存储读取数据,使用 Azure Kubernetes 服务的应用程序可以读取存储在 Azure Key Vault 中的机密。

了解详细信息:

系统分配的托管标识和用户分配的托管标识

有两种类型的托管标识:系统分配的托管标识和用户分配的托管标识。

系统分配的托管标识:

  • 与 Azure 资源之间为一对一关系。
    • 例如,每个 VM 都关联一个唯一的托管标识
  • 绑定到 Azure 资源生命周期。 删除资源时,会自动删除与其关联的托管标识。
  • 此操作可消除孤立帐户的风险

用户分配的托管标识

  • 生命周期独立于 Azure 资源。 管理生命周期。
    • 删除 Azure 资源时,不会自动删除分配的用户分配的托管标识
  • 将用户分配的托管标识分配给零个或多个 Azure 资源
  • 提前创建标识,稍后再将其分配给资源

在 Microsoft Entra ID 中查找托管标识服务主体

要查找托管标识,可以使用:

  • Azure 门户中的企业应用程序页面
  • Microsoft Graph

Azure 门户

  1. 在 Azure 门户的左侧导航中,选择“Microsoft Entra ID”。

  2. 在左侧导航菜单中,选择“企业应用程序”。

  3. 在“应用程序类型”列的“”下,选择向下箭头以选择“托管标识”。

    Screenshot of the Managed Identies option under Values, in the Application type column.

Microsoft Graph

使用以下对 Microsoft Graph 的 GET 请求以获取租户中的托管标识列表。

https://microsoftgraph.chinacloudapi.cn/v1.0/servicePrincipals?$filter=(servicePrincipalType eq 'ManagedIdentity')

可以对这些请求进行筛选。 有关详细信息,请参阅 获取 servicePrincipal

评估托管标识安全性

要评估托管标识安全性:

  • 检查特权以确保选择最小特权模型。

    • 使用以下 Microsoft Graph cmdlet 获取分配给托管标识的权限:

    Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId <String>

  • 确保托管标识不属于任何特权组(例如,管理员组)。

    • 要使用 Microsoft Graph 枚举高特权组的成员:

    Get-MgGroupMember -GroupId <String> [-All <Boolean>] [-Top <Int32>] [<CommonParameters>]

移动到托管标识

如果使用服务主体或 Microsoft Entra 用户帐户,请评估托管标识的使用情况。 这样便无需保护、轮换和管理凭据。

后续步骤

服务帐户