Azure Runbook无法修改Azure AD应用程序

时间:2018-11-09 22:08:03

标签: azure azure-active-directory azure-runbook

我正在尝试在Azure自动化运行手册中执行此操作

$app = Get-AzureADApplication -ObjectId $ApplicationId
$appRole = New-Object Microsoft.Open.AzureAD.Model.AppRole
$appRole.AllowedMemberTypes = New-Object System.Collections.Generic.List[string]
$appRole.AllowedMemberTypes.Add("User");
$appRole.DisplayName = $TenantName + " Users"
$appRole.Id = New-Guid
$appRole.IsEnabled = $true
$appRole.Description = "Users of the tenant"
$appRole.Value = $TenantName

$app.AppRoles.Add($appRole)

Set-AzureADApplication -ObjectId $ApplicationId -AppRoles $app.AppRoles

读取应用程序工作正常,当我打印应用程序变量时,我可以看到它是正确的应用程序。从我自己的机器上执行脚本也不会出错。但是通过运行手册执行它会给我:

Set-AzureADApplication : Error occurred while executing SetApplication 
Code: Authorization_RequestDenied
Message: Insufficient privileges to complete the operation.
HttpStatusCode: Forbidden
HttpStatusDescription: Forbidden
HttpResponseStatus: Completed

现在,我已经为Active Directory API中的自动化应用程序注册提供了Active Directory API的所有权利。我还单击了“授予权限”。我知道这是正确的应用程序注册,因为当我对开始使用的“ Graph Api”赋予正确的权限时,该脚本还会邀请外部用户。

configuration

1 个答案:

答案 0 :(得分:3)

我在运行手册中尝试了您的确切脚本,并且要使其正常运行,我不得不在PowerShell脚本之前将代码添加到“作为服务主体登录”。您可以在此处查看更多详细信息: Using Azure Run As Account in Azure Automation

在权限方面,我只授予了1个应用程序权限(即“读取和写入所有应用程序”),然后单击“授予权限”,因为它确实需要管理员同意。这些步骤是由我的Azure AD中具有“全局管理员”目录角色的用户完成的。

这是我最后可用的PowerShell脚本(从Edit Runbook复制):

# Get Azure Run As Connection Name
$connectionName = "AzureRunAsConnection"
# Get the Service Principal connection details for the Connection name
$servicePrincipalConnection = Get-AutomationConnection -Name $connectionName         

# Logging in to Azure AD with Service Principal
"Logging in to Azure AD..."
Connect-AzureAD -TenantId $servicePrincipalConnection.TenantId `
    -ApplicationId $servicePrincipalConnection.ApplicationId `
    -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint

$ApplicationId = "redacted-xxxx-xxxx-xxxx-xxxxxxxe3"
$TenantName = "RohitTenant"
$app = Get-AzureADApplication -ObjectId $ApplicationId
$appRole = New-Object Microsoft.Open.AzureAD.Model.AppRole
$appRole.AllowedMemberTypes = New-Object System.Collections.Generic.List[string]
$appRole.AllowedMemberTypes.Add("User");
$appRole.DisplayName = $TenantName + " Users"
$appRole.Id = New-Guid
$appRole.IsEnabled = $true
$appRole.Description = "Users of the tenant"
$appRole.Value = $TenantName
$app.AppRoles.Add($appRole)

Set-AzureADApplication -ObjectId $ApplicationId -AppRoles $app.AppRoles

以下是我遵循的其他一些重要步骤的屏幕快照,您可能已经或可能尚未完成。

  1. 在创建自动化帐户时创建Azure运行方式帐户

    enter image description here

  2. 确保您的自动化帐户的帐户设置现在具有“运行方式”帐户。

    enter image description here

  3. 查找为“以帐户身份运行”创建的应用程序注册,并授予其读写所有Azure AD应用程序的权限。

    enter image description here

    enter image description here