簡體   English   中英

如何以編程方式向 Azure Devops 中的某個組授予存儲庫讀取權限

[英]How to grant a repository read permissions to a certain group in Azure Devops programmatically

我有 Azure Devops 組織,並希望為給定存儲庫列表中的某個組設置只讀權限。

以下指定如何通過 Web 控制台手動執行此操作: https : //docs.microsoft.com/en-us/azure/devops/organizations/security/set-git-tfvc-repository-permissions?view=azure-devops

如何通過 Rest API 或其他編程方式完成?

我發現以下設置全局權限: https : //jessehouwing.net/azure-devops-git-setting-default-repository-permissions/似乎也有一個 API 來設置 ACL,但沒有指定我如何確定受托人組或目標存儲庫: https : //docs.microsoft.com/en-us/rest/api/azure/devops/graph/groups/list?view=azure-devops-rest-5.1

使用 Azure Devops Rest API:

首先,您需要獲取組的標識符。 這可以通過Identities api 完成。

如果您有組唯一 ID:

GET https://vssps.dev.azure.com/fabrikam/_apis/Identities/{id}?queryMembership=None

然后從 json 響應.Descriptor.Identifier獲取描述符。

如果您沒有組 ID,但有顯示名稱:

GET https://vssps.dev.azure.com/fabrikam/_apis/Identities?searchFactor=DisplayName&factorValue={display name url encoded}&options=None&queryMembership=None

然后從 json 響應中獲取描述符[0].Descriptor.Identifier

獲取您的存儲庫 ID 和項目 ID(這比組標識符容易得多,因此我不會詳細說明),然后您就擁有了所有必需的數據。 構建您的請求正文:

{ 
   "token":"repoV2/{projectId}/{repoId}/",
   "merge":true,
   "accessControlEntries":[ 
      { 
         "descriptor":"Microsoft.TeamFoundation.Identity;{groupIdentifier}",
         "allow":2,
         "deny":0,
         "extendedInfo":{ 
            "effectiveAllow":2,
            "effectiveDeny":0,
            "inheritedAllow":2,
            "inheritedDeny":0
         }
      }
   ]
}

POST https://dev.azure.com/fabrikam/_apis/AccessControlEntries/2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87

注意 url 中的 id 是硬編碼的,因為它是一個常量。 但是你也可以從響應中獲取

GET https://dev.azure.com/fabrikam/_apis/securitynamespaces

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM