Я пытаюсь назначить разрешения "Storage Blob Data Contributor"
учетной записи хранения с помощью Azure Devops Pipeline.
У меня есть конфигурация:
Я использую задачу 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)/"
У меня есть другой репозиторий, где это работает. С той же конфигурацией. Но в другом репозитории с тем же подключением к службе и той же задачей мне выдается ошибка.
@ rufer7, нет, это не так. Но меня смущает, почему другой репозиторий работает, а этот нет. Я назначил роли администратора пользователя и разработчика приложений.
Хм, назначение в другом репо когда-нибудь работало или его можно было назначить вручную? Это та же самая учетная запись хранения?
@rufer7, я думал о том же. Я удалил учетную запись хранения и создал новую из конвейера Azure Devops, задача по настройке разрешений работает в другом репозитории. Мне нужны разрешения на загрузку файлов в контейнер из конвейера.
Это другая учетная запись хранения, чем для другого репо. Если да, то назначены ли какие-либо роли субъекту-службе в пункте меню IAM?
@ rufer7, да, это другое. Для уверенности я постоянно создаю новую учетную запись хранения. Сначала я создаю группу ресурсов, затем учетную запись хранения в группе ресурсов и, наконец, загружаю файлы в контейнер. Учетная запись субъекта-службы имеет роли администратора пользователя и разработчика приложения.
@ rufer7 Я назначил роль участника данных Storage Blob субъекту-службе из области подписки. На данный момент я пропускаю задачу установки разрешений. Спасибо за ваше время.
@Sergio, рад узнать, что проблема решена путем назначения роли участника данных Storage Blob Data субъекту-службе из области подписки. Я также протестировал вашу задачу с помощью сценария PowerShell, добавил исправление разрешения принципала службы, у меня это работает. Надеюсь, это будет полезно, спасибо.
AzurePowerShell@5
использовал субъект-службу из подключения к службе, чтобы назначить роль учетной записи хранения. Знак Forbidden
указывает на то, что разрешения субъекта-службы недостаточно.
Как вы уже сделали, вы можете это исправить, назначив роль Storage Blob Data Contributor role
субъекту-службе из области подписки.
Что касается задачи DevOps, я могу воспроизвести ту же ошибку, когда субъект-служба находится в подписке и группе ресурсов.
Чтобы исправить ошибку, вы можете добавить субъект-службу в качестве contributor
в группу ресурсов.
Конвейер работает успешно, и в разрешении User access Administrator
добавлено:
Когда вы пытаетесь добавить разрешения contributor
к учетной записи хранения, измените значение Storage Blob Data Contributor
как -RoleDefinitionName
в сценарии PowerShell.
Запустите задачу еще раз, и разрешения "Storage Blob Data Contributor"
будут добавлены для субъекта-службы в учетной записи хранения.
@wade-zhou-msft Спасибо за ваше время и ответ. Я удалил скрипт powershell. он больше не нужен, потому что я предпочитаю иметь роль «участник данных BLOB-объектов хранилища» вместо администратора доступа пользователей. Я не уверен, но, возможно, стоит упомянуть, что для назначения роли участника данных BLOB-объекта хранилища больше не требуется использовать PowerShell. Но это зависит от вас. Большое спасибо за ваше время, я ценю вашу помощь.
Есть ли у вашего субъекта-службы разрешения Microsoft.Authorization/roleAssignments/write, назначенные в соответствующей области или выше?