我正在尝试运行一个PowerShell脚本,用于从一个DevOps服务主体分配appRoles。
DevOps服务主体具有以下权限,并得到了管理员的同意:
它在获取要分配的角色的所有者服务主体的步骤中失败:
$sp = Get-AzureADServicePrincipal -filter "displayName eq '$AppName'"
带有错误消息:
Error occurred while executing GetServicePrincipals
Code: Authorization_RequestDenied
Message: Insufficient privileges to complete the operation.
RequestId: a8fadf67-94d6-40ec-ad88-6562cf9f6d80
DateTimeStamp: Tue, 23 Jun 2020 16:51:36 GMT
HttpStatusCode: Forbidden
HttpStatusDescription: Forbidden
HttpResponseStatus: Completed
我希望Application.Read.All能够授予这个权限,因为我正在搜索的资源是一个应用程序。
我需要什么权限才能运行这一行脚本,这在哪里有文档记录?我正在应用最小特权的原则,并且不想给Devops sp一个管理角色。我只想申请完成这项工作所需的特定权限。
发布于 2020-06-24 02:25:14
我注意到您分配了一个权限User.Read
,该权限仅存在于委托权限中。因此,我猜您配置的其他2个权限-- Application.Read.All
和AppRoleAssignment.ReadWrite.All
--也是委托权限。
但是现在您是从服务主体运行Get-AzureADServicePrincipal
的,这意味着它需要应用程序权限(这里没有用户)。
当我通过Fiddler4跟踪这个cmd时,后端请求是GET https://graph.windows.net/exxxxx4e-bd27-40d5-8459-23xxxxa757fb/servicePrincipals?api-version=1.6&%24filter=displayName%20eq%20%27xxxx%27
graph.windows.net
是用于Azure AD图的,graph.microsoft.com
是用于MicrosoftGraph的。
因此,它正在调用Azure AD图,而不是微软图形。您需要的是Azure AD图的应用程序权限。
根据我的测试,Application.ReadWrite.All
和Directory.Read.All
可以满足您的需要。如果不希望服务主体具有写入权限,则可以选择Directory.Read.All
。
https://stackoverflow.com/questions/62539979
复制相似问题