azure - 在 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
解决方案
要运行该命令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
按钮)
推荐阅读
- svg - 如何使用 svg 创建多边形?
- delphi - 是否必须在 DeleteFile() 之前检查 FileExists()?
- android - 如何读取 MutableList
到 Parcelable? - android - 检查位图是否被回收无助于解决“RuntimeException:Canvas:尝试使用回收的位图”
- python - 如何在隐藏的输入 Selenium (Python) 上插入值
- robotframework - 引用另一个机器人文件中的关键字
- c# - 事件处理程序在异步方法中引发了两次
- angular - Angularfire2 中的离线 Promise 处理
- javascript - 在尝试使用 botkit 构建 slackbot 时,如何解决 Botkit.slackbot 不是我的代码的功能错误?
- node.js - Node Express 路由器 /users/:id vs /users/login