Azure服务主体权限不足,无法管理其他服务主体

时间:2018-09-11 23:52:52

标签: azure powershell azure-active-directory azure-powershell

我可以使用Azure或使用az cli从门户控制台创建服务主体。

az ad sp create-for-rbac --name "myspuser" --password "adfhrrreeuwrgwejdfgds"

然后,我在订阅级别分配所有者角色,并在Powershell控制台中登录。

Login-AzureRmAccount -Credential (New-Object System.Management.Automation.PSCredential ('a92b2ea2-aaaa-0000-0a0a-1238ec953226', $(ConvertTo-SecureString 'abcewior23h23ius' -AsPlainText -Force))) -ServicePrincipal -TenantId 0cedca99-00f4-40d1-aa41-80d67ece2de8;

在这里,除了检查其他用户之外,我几乎可以做任何其他事情,例如部署计算机。

执行时

Get-AzureRmADServicePrincipal

我所能获得的全部是Get-AzureRmADServicePrincipal : Insufficient privileges to complete the operation.,这与我的标准用户登录名兼容。

我的目标是创建一个自动化的平台,使用户可以使用MSDN订阅中的jenkins通过ARM模板部署完整的环境。由于Powershell不支持某些登录名,因此我想让我的用户为此使用服务主体。我的自动化需要使用需要读取资源组计算机属性的jenkins创建一个将在Linux机器上使用的SP。

我在这里想念的是什么?如何分配服务主体用户权限来管理其他服务主体帐户?

2 个答案:

答案 0 :(得分:1)

似乎您需要使用Add-AzureADDirectoryRoleMember来将目录角色分配给您的服务主体。

您可以选择所需的特定目录角色,请参考此link

注意:您需要先install azure ad powershell module

在这种情况下,您可以尝试为服务主体分配Application Administrator角色。 (如有必要,您可以分配Company Administrator角色。)

示例:

# Fetch role instance
$role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq 'Application Administrator'}

# If role instance does not exist, instantiate it based on the role template
if ($role -eq $null) {
    # Instantiate an instance of the role template
    $roleTemplate = Get-AzureADDirectoryRoleTemplate | Where-Object {$_.displayName -eq 'Application Administrator'}
    Enable-AzureADDirectoryRole -RoleTemplateId $roleTemplate.ObjectId

    # Fetch role
    $role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq 'Application Administrator'}
}

# Add the SP to role
Add-AzureADDirectoryRoleMember -ObjectId $role.ObjectId  -RefObjectId <your SP ObjectID>

这里有一个类似的问题供您参考,请参阅link

答案 1 :(得分:1)

所有者角色不适用于Azure AD,目录角色仅适用于用户。 服务主要=应用程序而不是用户。 虽然可以将用户链接到服务主体,但是我个人还没有看到它的实际用途。

要使用服务主体管理服务主体,您需要分配API权限。 我无法告诉您如何使用Powershell来执行此操作,因为我还没有找到用于该命令的命令,这很遗憾。提示暗示微软的天蓝色。 您进入门户网站,从AAD打开应用程序,然后转到API权限。您将能够为旧版Azure AD和MS Graph分配权限。

根据我的经验,旧版AAD权限在更多情况下都可以使用,并且提供了更高的粒度,但是我确实将其报告为问题,并且可能会更改MS Graph权限是前进的方向。

我知道这是一个古老的话题,但是在我自己搜索其他问题时,它仍然像是在回答。 :)

edit:允许服务主体API权限来管理应用程序,您将能够让一个应用程序管理其他应用程序。 但是,您真的确定要赋予普通用户管理这些应用程序的能力吗?取决于您赋予此服务主体多少特权,它可能具有很深的安全隐患。