I have created an Automation Account runbook with Powershell 5.1 . I have a service principal with the following permissions linked to it using a connection called "local"
My code is as follows :
$connection = Get-AutomationConnection -Name "local"
try {
Write-Output 'Connecting to services'
Connect-AzureAD -TenantId $connection.TenantID -ApplicationId $connection.ApplicationID -CertificateThumbprint $connection.CertificateThumbprint | Out-null
}
catch {
Write-Error -Message $_.Exception.Message
Disconnect-AzureAD | Out-null
Break
}
Write-Output "Connect process done"
# Function
try {
Write-Output 'List all apps'
$list = Get-AzureADApplication -All $true
$true
Write-Output $list
}
Catch {
Write-Error -Message $_.Exception.Message
Disconnect-AzureAD
}
When I run the code I am getting the following error :
Error occurred while executing GetApplications Code: Authorization_RequestDenied Message: Insufficient privileges to complete the operation. GMT HttpStatusCode: Forbidden HttpStatusDescription: Forbidden HttpResponseStatus: Completed + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException
I am not sure why my permission is not working, how do I resolve this ?
Edit:
I granted the service principal Directory Read permission but I am getting a new error.
Permissions:
Error occurred while executing GetApplications Code: Authorization_RequestDenied Message: Insufficient privileges to complete the operation. HttpStatusCode: Forbidden HttpStatusDescription: Forbidden HttpResponseStatus: Completed + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException
Unable to list applications from Azure Active Directory using PowerShell in Azure Automation Account.
When I attempted to run the PowerShell script
in Automation account
with the 'Application.Read.All'
permission, I encountered the same error
Import-Module AzureADPreview
Connect-AzureAD -TenantId "TenantId" -ApplicationId "Application-ID" -CertificateThumbprint "849EAFE0fhgjgjgjgggg7340B789221D0E"
$list = Get-AzureADApplication
$list.DisplayName
Response:
To resolve the issue, I assigned the Azure AD
role of Directory Readers
to my Service Principal
and ran the Automation
account, expecting the desired result.
Directory Readers
Assigned Directory Readers
role to Service Principal
Once I assigned the role to my service principal
, I got the expected result
Reference: Azure AD Graph Retirement and Powershell Module Deprecation