在 devops 管道中使用 azure powershell 内联脚本分配 azure 数据工厂访问策略

Azure data factory access policies assigment using azure powershell inline script in devops pipline

有一项任务使用云 shell 可以简单轻松地完成,我需要授予对我的
的访问权限 Datafactory 获取、设置访问策略 命令

    $objectid = (Get-AzDataFactoryV2 -ResourceGroupName "BDAZE1ENRG01" -Name 
    "BDAZE1INDF03").Identity.PrincipalId                          
    Set-AzKeyVaultAccessPolicy –VaultName "BDAZE1ENKV01" -PermissionsToKeys get,list - 
    PermissionsToSecrets get,list -ObjectId $objectid 

Devops 任务屏幕截图 enter image description here

JEpOB.png

错误是 devops 日志

powershell版本3.1.0任务版本内联脚本4.0

到运行命令Set-AzKeyVaultAccessPolicy,它会调用Azure AD Graph来验证你传递的$objectid。在 could shell 中,它使用您的用户帐户的凭据,它有效意味着您的用户帐户具有权限。在 devops 中,默认情况下服务主体无权执行此操作。

要解决这个问题,最简单的方法是使用下面的-BypassObjectIdValidation参数,然后就可以正常工作了。

Set-AzKeyVaultAccessPolicy –VaultName "joykeyvault" -PermissionsToKeys get,list -PermissionsToSecrets get,list -ObjectId $objectid -BypassObjectIdValidation

当然还有另一种方法,只需像下面这样在Azure AD Graph中为您的devops连接的AD App授予应用程序权限。 (必须是 ApplicationAzure Active Directory Graph 中键入权限,而不是 Microsoft Graph,不要忘记单击 Grant admin consent 按钮)