我可以使用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。
我在这里想念的是什么?如何分配服务主体用户权限来管理其他服务主体帐户?
答案 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权限来管理应用程序,您将能够让一个应用程序管理其他应用程序。 但是,您真的确定要赋予普通用户管理这些应用程序的能力吗?取决于您赋予此服务主体多少特权,它可能具有很深的安全隐患。