如何为Azure DevOps服务连接授予角色分配/写入权限

8

我正在为我的持续部署设置一个暂存环境。我正在使用Azure DevOps服务来管理代码库和流水线。

我需要将Azure Active Directory登录添加到我的Linux虚拟机中。到目前为止,我遵循了这个指南。它在我的机器上有效,但当我尝试在Azure DevOps上运行时,出现以下错误。

2019-04-08T14:54:33.7657868Z ERROR: The client '********-****-****-****-************' with object id '********-****-****-****-************' does not have authorization to perform action 'Microsoft.Authorization/roleAssignments/write' over scope '/subscriptions/***/resourceGroups/staging-rg/providers/Microsoft.Compute/virtualMachineScaleSets/webscaleset/providers/Microsoft.Authorization/roleAssignments/********-****-****-****-************'.

看起来我的Azure DevOps服务连接缺少roleAssignment/write权限。我不知道如何添加。

2个回答

6

最简单的方法-将所有者角色分配给服务主体,您可以在服务连接页面上找到它,其中有一个“管理服务主体”或类似的链接。

或者您可以创建自定义角色,只能执行此操作并将其分配给服务主体,这样更安全一些,但不是那么安全,因为使用该角色可以向任何人授予任何权限。

使用PowerShell创建自定义角色:

$role = Get-AzRoleDefinition "Virtual Machine Contributor"
$role.Id = $null
$role.Name = "Assign permissions role"
$role.Description = "Allow to assign permissions"
$role.Actions.Clear()
$role.Actions.Add("Microsoft.Authorization/roleAssignments/write")
$role.AssignableScopes.Clear()

Get-AzSubscription | ForEach-Object {
    $scope = "/subscriptions/{0}" -f $_.Id
    $role.AssignableScopes.Add($scope)
}
$def = New-AzRoleDefinition -Role $role

我找到了你所说的页面,但没有设置可以将服务主体的角色更改为所有者。 - Vas Sim
您可以从该页面获取服务主体名称,使用此文章授予权限:https://learn.microsoft.com/en-us/azure/role-based-access-control/role-assignments-portal - 4c74356b41

-1

将以下角色授权给DevOps服务主体

名称:特权角色管理员 描述:具有此角色的用户可以在Azure Active Directory中管理角色分配,以及在Azure AD特权身份管理中管理。此外,此角色允许管理特权身份管理的所有方面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接