本文介绍如何管理机密和凭据,以保护服务之间的通信。 托管身份在 Microsoft Entra ID 中提供自动管理的身份。 应用程序使用托管标识连接到支持Microsoft Entra 身份验证的资源,并获取Microsoft Entra 令牌,而无需管理凭据。
托管身份的优点
使用托管标识的好处:
使用托管标识时,凭据完全受 Azure 管理、轮换和保护。 标识是在 Azure 资源中创建和删除的。 托管标识使 Azure 资源能够与支持Microsoft Entra 身份验证的服务通信。
没有人(包括那些分配的特权角色)有权访问凭据,这些凭据不能被包含在代码中意外泄露。
使用托管标识
托管身份最适合在支持 Microsoft Entra 身份验证的服务之间进行通信。 源系统请求访问目标服务。 任何 Azure 资源都可以是源系统。 例如,Azure 虚拟机(VM)、Azure 函数实例和 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 门户
在 Azure 门户的左侧导航中,选择 Microsoft Entra ID。
在左侧导航中,选择 “企业应用程序”。
在 “应用程序类型 ”列中,在 “值”下,选择向下箭头以选择 “托管标识”。
Microsoft Graph
使用以下 GET 请求访问 Microsoft Graph 来获取租户中的托管标识列表。
https://microsoftgraph.chinacloudapi.cn/v1.0/servicePrincipals?$filter=(servicePrincipalType eq 'ManagedIdentity')
可以筛选这些请求。 有关详细信息,请参阅 GET servicePrincipal。
评估托管标识安全性
评估托管标识安全性:
检查特权以确保已选择最小特权模型
- 使用以下 Microsoft Graph 命令脚本 获取分配给托管标识的权限:
Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId <String>
确保托管标识不属于特权组,例如管理员组。
- 若要使用 Microsoft Graph 枚举高特权组的成员,
Get-MgGroupMember -GroupId <String> [-All <Boolean>] [-Top <Int32>] [<CommonParameters>]
迁移至托管身份
如果使用服务主体或 Microsoft Entra 用户帐户,请评估托管标识的使用。 您可以免去保护、轮换和管理凭据的需求。
后续步骤
服务帐户