自定义 Azure AD 角色或 Azure 策略,仅允许 Microsoft Graph User.Read.All 对 Azure Service Pronicpal 的权限

问题描述 投票:0回答:1

用例 - 使用 DevOps 管道自动将 Microsoft Graphs 的 User.Read.All 权限分配给应用程序注册/服务主体。以便应用程序可以读取用户配置文件。 挑战 要授予 Microsoft Graphs 的 User.Read.All 权限,管道将在其下运行的服务主体需要全局管理员或特权角色管理员。 https://learn.microsoft.com/en-us/azure/active-directory/manage-apps/grant-admin-consent?pivots=portal。问题是,如果授予这些角色中的任何一个,服务主体可用于分配超过 Microsoft Graphs 的 User.Read.All 权限。我正在寻找一种方法,可以使用全局管理员或特权角色管理员或自定义角色来限制服务主体,以允许仅分配 User.Read.All 权限,以便服务主体不会被滥用。

azure azure-active-directory azure-ad-graph-api azure-ad-role azure-application-registration
1个回答
0
投票

权限

AppRoleAssignment.ReadWrite.All
将允许您的服务主体向其他主体授予权限和管理员同意,而无需分配全局管理员或特权角色管理员。请注意,此权限仅允许授予
application
类型权限,而不是
delegated
类型权限。

参考

图形 API 示例

之前

我下面的示例应用程序已获得管理员同意授予

AppRoleAssignment.ReadWrite.All
。我将使用此应用程序向其自身授予
User.Read.All
权限。

向 Graph API 发送请求
POST https://graph.microsoft.com/v1.0/servicePrincipals/9028d19c-26a9-4809-8e3f-20ff73e2d75e/appRoleAssignedTo

{
    "principalId": "9028d19c-26a9-4809-8e3f-20ff73e2d75e",
    "resourceId": "8fce32da-1246-437b-99cd-76d1d4677bd5",
    "appRoleId": "df021288-bdef-4463-88db-98f22de89214"
}

PrincipalId
是我的示例应用程序的 Enterprise Applicationobject Id。此 ID 用于端点和请求正文中。

ResourceId
Microsoft Graph企业应用程序对象 Id(此 Id 对于每个租户都不同)

AppRoleId
是您的权限的 ID,可以在 Microsoft Graph 权限参考

中找到
之后

示例应用程序现在已分配

User.Read.All
权限并获得管理员同意。

© www.soinside.com 2019 - 2024. All rights reserved.