Azure Автоматизация | Runbook | Powershell | Get-AzRoleAssignment | Microsoft.Rest. Azure .CloudException - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть учетная запись Automation, и я настроил учетную запись запуска от имени для неклассических c ресурсов. В моей учетной записи автоматизации я импортировал Az.Resources, Az.Account, Az.Storage и Az.KeyVault.

У меня есть скрипт, который не работает по принципу службы автоматизации. Следующая ошибка является первой из 3;

Get-AzRoleAssignment: было сгенерировано исключение типа «Microsoft.Rest. Azure .CloudException». В строке: 26 символов: 10

Я предоставил регистрации приложения следующий набор разрешений API приложения в Azure Active Directory (больше, чем я ожидаю);

enter image description here

В начале сценария я выполняю командлет Connect-AzAccount;

 $servicePrincipalConnection = Get-AutomationConnection -Name 'AzureRunAsConnection'
Connect-AzAccount -ServicePrincipal `
    -Tenant $servicePrincipalConnection.TenantID `
    -ApplicationId $servicePrincipalConnection.ApplicationID `
    -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint

Затем следует сбойная команда;

    If(!(Get-AzRoleAssignment | Where-Object { $_.RoleDefinitionName -eq "Storage Blob Data Contributor" `
    -and $_.scope -eq "/subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Storage/storageAccounts/$serviceName" `
    -and $_.SignInName -eq (Get-AzContext).Account.Id})){
    # There does not exist the requisite permission for the run-as-account context, grant; 'Storage Blob Data Contributor'.
    New-AzRoleAssignment -RoleDefinitionName "Storage Blob Data Contributor" `
        -ApplicationId (Get-AzADServicePrincipal | Where-Object { $_.DisplayName -eq "jupiterautomation01" }).ApplicationId `
        -Scope "/subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Storage/storageAccounts/$serviceName"
}

Мне нужно предоставить нужные разрешения, но я не знаю, какие они.

1 Ответ

0 голосов
/ 01 мая 2020

Назначенные разрешения должны быть подтверждены администратором. Кнопка была доступна только при доступе к Azure через учетную запись Microsoft, использованную для создания клиента Active Directory.

  1. Войдите в систему с учетной записью администратора, которая может дать согласие.
  2. Предоставить разрешения API читать или читать / писать (мне нужно было также написать) в Active Directory для приложения.
  3. Дайте согласие администратора, используя кнопку, показанную на изображении.

enter image description here

...