首页 > 解决方案 > 在 devops 管道中使用 azure powershell 内联脚本分配 Azure 数据工厂访问策略

问题描述

有一项使用云外壳简单易行的任务,我需要授予对我的
Datafactory get 的访问权限,并在访问策略命令中设置

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

Devops 任务屏幕截图 在此处输入图像描述

JEpOB.png

错误是 devops 日志 在此处输入图像描述

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

标签: azureazure-devopsazure-powershellazure-keyvaultpaas

解决方案


要运行该命令Set-AzKeyVaultAccessPolicy,它将调用Azure AD Graph来验证$objectid您传递的信息。在 can shell 中,它使用您的用户帐户的凭据,它起作用意味着您的用户帐户具有权限。在 devops 中,服务主体默认无权执行此操作。

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

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

在此处输入图像描述

当然还有另一种方法,只需在 Azure AD Graph 中为您的 devops 连接的 AD App 授予应用程序权限,如下所示。(必须是Application输入权限Azure Active Directory Graph,不是Microsoft Graph,别忘了点击Grant admin consent按钮)

在此处输入图像描述


推荐阅读