使用 Azure Devops 的 Powershell 脚本 New-AzRoleAssignment:操作返回无效的状态代码“禁止”

问题描述 投票:0回答:1

我正在尝试使用 Azure Devops Pipeline 将

"Storage Blob Data Contributor"
权限分配给存储帐户。

我有配置:

  • 服务连接:测试订阅
  • 服务连接是具有订阅级别贡献者 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 azure-devops azure-powershell azure-pipelines-yaml
1个回答
0
投票

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
权限。

© www.soinside.com 2019 - 2024. All rights reserved.