我正在尝试使用 Azure Devops Pipeline 将
"Storage Blob Data Contributor"
权限分配给存储帐户。
我有配置:
我正在使用下面的 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)/"
我有另一个正在运行的存储库。具有相同的配置。但在具有相同服务连接和相同任务的不同存储库中,它给了我错误。
AzurePowerShell@5
使用服务连接中的服务主体在存储帐户上分配角色。 Forbidden
表示服务主体权限不够。
正如您所做的那样,您可以通过将角色
Storage Blob Data Contributor role
分配给订阅范围中的服务主体来修复此问题。
对于 DevOps 任务,当服务主体在订阅和资源组上为
contributor
时,我可以重现相同的错误。
要修复该错误,您可以将服务主体添加为资源组上的
User access Administrator
。
管道成功,添加了权限
contributor
:
当您尝试向存储帐户添加
Storage Blob Data Contributor
权限时,请在 powershell 脚本中将 -RoleDefinitionName
值更改为 "Storage Blob Data Contributor"
。
再次运行该任务,并为存储帐户上的服务主体添加
Storage Blob Data Contributor
权限。