授予 Azure DevOps 内置用户权限
Give rights to Azure DevOps build-in Users
我整天都在谷歌搜索,但找不到解决方案。在 Azure DevOps 中,为每个项目创建了内置用户。其中一个用户是默认构建代理用户(通常命名为 <projectName> Build Service
)。
我已经使用 Azure DevOps REST API 自动创建存储库和管道。下一步是向内置构建代理用户授予某些权限。我已经在努力寻找 API.
中的内置用户
那么如何使用 REST API 向该用户授予权限?
目标是将默认的内置构建代理用户添加到贡献者角色,以便他可以将标签推送到存储库。
你可以通过 Users - List API:
得到他
GET https://vssps.dev.azure.com/{organization}/_apis/graph/users?api-version=6.0-preview.1
在回复中我可以看到:
Give rights to Azure DevOps build-in Users
您可以使用 REST API Users - List API: 获取您的组的标识符。
"subjectKind": "user",
"domain": "Build",
"principalName": "f0a50df8-5a11-41c3-8d7e-22180f923c80",
"mailAddress": "",
"origin": "vsts",
"originId": "64b9d209-XXXXX-bb46ade01dc",
"displayName": "MyTestProject Build Service (YourOrganizationName)",
originId
是下面REST中的Id API URL.
然后我们使用Identities
api.
GET https://vssps.dev.azure.com/fabrikam/_apis/Identities/{id}?queryMembership=None
然后从json响应中获取描述符.Descriptor.Identifier
:
{
"Id": "64b9d209-0deb-4d9c-9e8d-6bb46ade01dc",
"Descriptor": {
"IdentityType": "Microsoft.TeamFoundation.ServiceIdentity",
"Identifier": "0a2bf5f-XXXXd-1e9006e97c76:Build:f0a50df8-5a11-41c3-8d7e-22180f923c80"
},
如果您没有组 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
。
现在,我们有了 Identity
,我们可以使用 REST API Access Control Entries - Set Access Control Entries 来设置该组的权限:
POST https://dev.azure.com/{organization}/_apis/accesscontrolentries/{securityNamespaceId}?api-version=5.0
请求正文:
{
"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
}
}
]
}
请注意 url 中的 id 是硬编码的,因为它是一个常量。但是你也可以从
的响应中获取
GET https://dev.azure.com/{organization}/_apis/securitynamespaces
我整天都在谷歌搜索,但找不到解决方案。在 Azure DevOps 中,为每个项目创建了内置用户。其中一个用户是默认构建代理用户(通常命名为 <projectName> Build Service
)。
我已经使用 Azure DevOps REST API 自动创建存储库和管道。下一步是向内置构建代理用户授予某些权限。我已经在努力寻找 API.
中的内置用户那么如何使用 REST API 向该用户授予权限?
目标是将默认的内置构建代理用户添加到贡献者角色,以便他可以将标签推送到存储库。
你可以通过 Users - List API:
得到他GET https://vssps.dev.azure.com/{organization}/_apis/graph/users?api-version=6.0-preview.1
在回复中我可以看到:
Give rights to Azure DevOps build-in Users
您可以使用 REST API Users - List API: 获取您的组的标识符。
"subjectKind": "user",
"domain": "Build",
"principalName": "f0a50df8-5a11-41c3-8d7e-22180f923c80",
"mailAddress": "",
"origin": "vsts",
"originId": "64b9d209-XXXXX-bb46ade01dc",
"displayName": "MyTestProject Build Service (YourOrganizationName)",
originId
是下面REST中的Id API URL.
然后我们使用Identities
api.
GET https://vssps.dev.azure.com/fabrikam/_apis/Identities/{id}?queryMembership=None
然后从json响应中获取描述符.Descriptor.Identifier
:
{
"Id": "64b9d209-0deb-4d9c-9e8d-6bb46ade01dc",
"Descriptor": {
"IdentityType": "Microsoft.TeamFoundation.ServiceIdentity",
"Identifier": "0a2bf5f-XXXXd-1e9006e97c76:Build:f0a50df8-5a11-41c3-8d7e-22180f923c80"
},
如果您没有组 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
。
现在,我们有了 Identity
,我们可以使用 REST API Access Control Entries - Set Access Control Entries 来设置该组的权限:
POST https://dev.azure.com/{organization}/_apis/accesscontrolentries/{securityNamespaceId}?api-version=5.0
请求正文:
{
"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
}
}
]
}
请注意 url 中的 id 是硬编码的,因为它是一个常量。但是你也可以从
的响应中获取GET https://dev.azure.com/{organization}/_apis/securitynamespaces