如何以编程方式向 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/ and there also seem to be an API to set ACL, but nothing there specifies how I can identify the trustee group or the target repository: 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
我有 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/ and there also seem to be an API to set ACL, but nothing there specifies how I can identify the trustee group or the target repository: 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