项目集合管理员的 Azure DevOps 权限:EffectiveAllow 为 112

问题描述 投票:0回答:1

我编写了一些代码,使用各种参数调用

az devops security permission list
来提取我感兴趣的各个用户的权限,这样我们就可以报告谁拥有特定项目的特权访问权限。其要点是:

$myId = '[email protected]'
$myOrg = 'https://dev.azure.com/example/'
$myProjectId = 'd1d6f447-cd58-431d-ad22-ee7d6579f6b3'

$projectNamespaceId = '52d39943-cb85-4d7f-8fa8-c6baac873819' # per https://learn.microsoft.com/azure/devops/organizations/security/namespace-reference?view=azure-devops#project-level-namespaces-and-permissions

az devops security permission list --org $myOrg --id $projectNamespaceId --subject $myId | 
ConvertFrom-Json | 
Select-Object token, @{N='EffectiveAllow'; E={
    $dict = $_
    $dict.acesDictionary | 
    Get-Member -type NoteProperty | 
    ForEach-Object {
        $dict.acesDictionary."$($_.Name)".extendedInfo.effectiveAllow
    }
}} | 
Where-Object {$_.token -like "*$myProjectId*"}

返回:

token                                                                              EffectiveAllow
-----                                                                              --------------
$PROJECT:vstfs:///Classification/TeamProject/d1d6f447-cd58-431d-ad22-ee7d6579f6b3  112

然后,我将有效允许权限与我对该命名空间感兴趣的权限进行比较;即,如果

$effectiveAllow -band 4
返回
4
,则表明用户有权删除该项目。

这对于在项目级别被授予访问权限的用户来说效果很好,但对于我们这些被分配了比项目本身更高级别的权限的用户(例如

project collection administrators
/
organization owner
/ 等),
 返回的值effectiveAllow
始终是
112
,这意味着我们无权删除该项目(
112 -band 4
返回
0
)。

这是我的代码/方法中的错误吗?或者有没有办法找到拥有此权限的所有用户,包括那些从比项目本身更高的范围分配的权限?

azure-devops permissions azure-cli
1个回答
0
投票

根据doc

effectiveAllow
是此令牌上此身份的所有显式权限和继承权限的组合。这些是确定给定用户是否有权执行某项操作时使用的权限。

根据我的测试:

  • 项目集合管理员组的默认权限组合是 112。
  • “删除团队项目”权限对应的数量为4。
  • 如果仅将用户添加到 PCA,请使用
    az devops security permission list
    或 REST API 访问控制列表 - 查询 检查该用户在项目命名空间中的
    effectiveAllow
    。它的值为112。如果您将此用户添加到项目中并此时运行相同的DevOps CLI或API,则相应项目/令牌中用户的
    effectiveAllow
    将会改变。

因此,对于仅属于 PCA 组的用户,

effectiveAllow
正如预期的那样为 112。 112并不代表没有“删除团队项目”权限,而是包括“删除团队项目”权限在内的多种权限的组合。

要检查用户的权限,您可以使用 REST API 权限报告 - 获取

© www.soinside.com 2019 - 2024. All rights reserved.