在devops pipline中使用Azureure Shell内联脚本对Azure数据工厂访问策略进行分配

时间:2020-05-06 16:52:14

标签: azure azure-devops azure-powershell azure-keyvault paas

有一项任务可以使用云外壳轻松实现,我需要访问我的
数据访问,在访问策略中设置 命令

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

开发任务屏幕截图 enter image description here

JEpOB.png

错误是devops日志 enter image description here

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

1 个答案:

答案 0 :(得分:0)

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

要解决此问题,最简单的方法是使用如下所示的-BypassObjectIdValidation参数,这样就可以正常工作。

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

enter image description here

当然,还有另一种方法,只需在Azure AD Graph中为应用程序权限授予AD应用程序的权限,如下所示。 (必须是Application中的Azure Active Directory Graph类型权限,而不是Microsoft Graph,不要忘了单击Grant admin consent按钮)

enter image description here