自行车服务主体密钥的AzureDevops连接权限

时间:2020-01-09 22:39:43

标签: azure azure-devops azure-active-directory devops

我试图在AzureDevops中创建一个发行版,以检查SP机密的到期,然后在必要时进行更新。我有做检查的部分:

 param (
    [string]$SpId  
)
$SpSecret 
$SpEndDate = az ad sp credential list --id $SpId --query "[].{Key:endDate}" -o tsv

((Get-Date $SpEndDate).AddDays(-30) -lt (Get-Date)) {
    #Set a new secret value if it is about to expire
    $SpSecret = az ad sp credential reset --name $SpId --query password -o tsv   
}

Write-Host "##vso[task.setvariable variable=var01;Secret=true]$SpSecret"

Write-Host $env:Secret

现在的问题是服务连接没有运行“ z ad spredential重置”的权限。我已经查看了该连接,但没有看到可以使用的权限。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

创建Azure资源管理器服务连接以使用AzureCLI时,系统将自动为您创建一个AD App,选中此link。 如果将此服务连接与AzureCLI一起使用,它将在租户中使用AD App的服务主体的凭据。有关服务主体和AD App的概念,请参阅此link

要解决此问题,请在门户中导航至Azure Active Directory-> App registrations-> All applications->查找与服务连接相对应的应用程序,其名称应类似于{ {1}}。然后单击它->添加类似于屏幕截图的权限(注意:您的用户帐户需要管理员角色才能单击 organizationname-projectname-513f22f1-befd-xxxxxxcfe90f1 按钮,例如{{1} })。

enter image description here

enter image description here

授予权限后,请稍等片刻,服务连接的服务主体将能够创建AD App,Azure CLI任务应该可以正常工作。


Grant admin consent权限将允许服务主体创建,读取,更新和删除所有应用程序和服务主体。如果要避免安全问题,还可以使用Powershell将服务连接的服务主体作为Global admin添加到要重置凭据的服务主体。然后只需在上面的屏幕快照中添加Application.ReadWrite.All权限。

导航到门户网站中的Owner应用->单击Application.ReadWrite.OwnedBy,如下所示。

enter image description here

然后在屏幕截图中复制organizationname-projectname-513f22f1-befd-xxxxxxcfe90f1

enter image description here

然后使用下面的Powershell(至少您需要成为目标应用的Managed application in local directory才能运行命令)。

Object ID

此外:起初,我认为Owner就足够了,但是根据我的测试,它不起作用,看起来Add-AzureADApplicationOwner -ObjectId <ObjectId of the app which corresponding to the service principal> -RefObjectId <ObjectId of the service connection corresponding service principal> 不允许在与AD App对应的服务主体。