Скрипт Powershell New-AzRoleAssignment с Azure Devops: операция вернула неверный код состояния «Запрещено»

Я пытаюсь назначить разрешения "Storage Blob Data Contributor" учетной записи хранения с помощью Azure Devops Pipeline.

У меня есть конфигурация:

  • Подключение к службе: TestSubscription
  • Сервисное соединение является членом группы, в которой есть участник RBAC на уровне подписки.
  • Соединение службы создается с помощью workloadIdentity.

Я использую задачу Azure Devops ниже.

- task: AzurePowerShell@5
  displayName: "Set Permissions Storage Account for Service Principal"
  inputs:
    azureSubscription: 'TestSubscription'
    ScriptType: 'FilePath'
    ScriptPath: '$(Pipeline.Workspace)/drop/Scripts/SetStoragePermission.ps1'
    ScriptArguments: '-ResourceGroup $(ResourceGroup) -StorageAccountNameStaticWebApp $(StorageAccountNameStaticWebApp) -ClientIDAppRegistration $(ClientIDAppRegistration) -IDTestSubscription $(IDTestSubscription)'
    azurePowerShellVersion: 'LatestVersion'

Сценарий:

param(

    [string]$ClientIDAppRegistration,
    [string]$IDTestSubscription,
    [string]$StorageAccountNameStaticWebApp,
    [string]$ResourceGroup

)


New-AzRoleAssignment -ApplicationId $ClientIDAppRegistration -RoleDefinitionName "Contributor" -Scope "/subscriptions/$($IDTestSubscription)/resourceGroups/$($ResourceGroup)/providers/Microsoft.Storage/storageAccounts/$($StorageAccountNameStaticWebApp)/"

У меня есть другой репозиторий, где это работает. С той же конфигурацией. Но в другом репозитории с тем же подключением к службе и той же задачей мне выдается ошибка.

🤔 А знаете ли вы, что...
PowerShell поддерживает работу с JSON, XML и другими форматами данных для обмена информацией.


350
1

Ответ:

Решено

AzurePowerShell@5 использовал субъект-службу из подключения к службе, чтобы назначить роль учетной записи хранения. Знак Forbidden указывает на то, что разрешения субъекта-службы недостаточно.

Как вы уже сделали, вы можете это исправить, назначив роль Storage Blob Data Contributor role субъекту-службе из области подписки.

Что касается задачи DevOps, я могу воспроизвести ту же ошибку, когда субъект-служба находится в подписке и группе ресурсов.

Чтобы исправить ошибку, вы можете добавить субъект-службу в качестве contributor в группу ресурсов.

Конвейер работает успешно, и в разрешении User access Administrator добавлено:

Когда вы пытаетесь добавить разрешения contributor к учетной записи хранения, измените значение Storage Blob Data Contributor как -RoleDefinitionName в сценарии PowerShell.

Запустите задачу еще раз, и разрешения "Storage Blob Data Contributor" будут добавлены для субъекта-службы в учетной записи хранения.