Azure DevOps ServiceConnection 角色休息 API
Azure DevOps ServiceConnection Roles Rest API
如何使用 REST API 修改 Azure DevOps ServiceConnection 角色?
这是对应的UI
我想在 'User' 角色中添加一个团队。
我一直在看
- https://docs.microsoft.com/en-us/rest/api/azure/devops/security/security%20namespaces?view=azure-devops-rest-5.1
- https://docs.microsoft.com/en-us/rest/api/azure/devops/security/access%20control%20lists?view=azure-devops-rest-5.1
这个方向对吗?
您可以使用下面的 api 更新服务连接的安全性。
Put https://dev.azure.com/<Org>/_apis/securityroles/scopes/distributedtask.serviceendpointrole/roleassignments/resources/<resourcesId>?api-version=5.1-preview.1"
API 未记录。但是当你 F12 浏览器时你可以找到它。
F12页面的请求url可以获取到resourceId。
还有来自 服务连接 UI 页面的 URL url 以及
以下是 powershell 脚本中的示例:
$url="https://dev.azure.com/<org>/_apis/securityroles/scopes/distributedtask.serviceendpointrole/roleassignments/resources/......c5_d69e94f6-9c07-4341-bd6f-8b28e05d4b08?api-version=5.1-preview.1"
$connectionToken ="Personal Access token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$body ='[{"roleName":"User","userId":"....a313-31d7848bcdcc"}]'
Invoke-RestMethod -Uri $url -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method put -ContentType "application/json" -Body $body
以上脚本将用户分配给服务连接的 User 角色权限。
您可以在F12页面的请求体中获取用户id。但是您可能仍然需要使用下面的 rest api 到 get the user id
GET https://vssps.dev.azure.com/{organization}/_apis/graph/users/{userDescriptor}?api-version=5.1-preview.1
您可以从每个用户的 Permission 页面的 UI 页面中的 URL 获取 userDescriptor。
注意 url... 这包含 ProjectId_ServiceEndpointId
$url="https://dev.azure.com/$OrganizationName/_apis/securityroles/scopes/distributedtask.serviceendpointrole/roleassignments/resources/$($ProjectId)_$($ServiceEndpointId)?api-version=5.1-preview.1"
ProjectId 来自
https://dev.azure.com/$OrganizatioName/_apis/projects?api-version=5.1
用户 ID 来自 [属性: originId]
https://vssps.dev.azure.com/$OrganizatioName/_apis/graph/groups?api-version=5.1-preview.1
ServiceEndpointId 来自
https://dev.azure.com/$OrganizatioName/$ProjectId/_apis/serviceendpoint/endpoints?api-version=5.1-preview.2
如何使用 REST API 修改 Azure DevOps ServiceConnection 角色?
这是对应的UI
我想在 'User' 角色中添加一个团队。
我一直在看
- https://docs.microsoft.com/en-us/rest/api/azure/devops/security/security%20namespaces?view=azure-devops-rest-5.1
- https://docs.microsoft.com/en-us/rest/api/azure/devops/security/access%20control%20lists?view=azure-devops-rest-5.1
这个方向对吗?
您可以使用下面的 api 更新服务连接的安全性。
Put https://dev.azure.com/<Org>/_apis/securityroles/scopes/distributedtask.serviceendpointrole/roleassignments/resources/<resourcesId>?api-version=5.1-preview.1"
API 未记录。但是当你 F12 浏览器时你可以找到它。
F12页面的请求url可以获取到resourceId。
还有来自 服务连接 UI 页面的 URL url 以及
以下是 powershell 脚本中的示例:
$url="https://dev.azure.com/<org>/_apis/securityroles/scopes/distributedtask.serviceendpointrole/roleassignments/resources/......c5_d69e94f6-9c07-4341-bd6f-8b28e05d4b08?api-version=5.1-preview.1"
$connectionToken ="Personal Access token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$body ='[{"roleName":"User","userId":"....a313-31d7848bcdcc"}]'
Invoke-RestMethod -Uri $url -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method put -ContentType "application/json" -Body $body
以上脚本将用户分配给服务连接的 User 角色权限。
您可以在F12页面的请求体中获取用户id。但是您可能仍然需要使用下面的 rest api 到 get the user id
GET https://vssps.dev.azure.com/{organization}/_apis/graph/users/{userDescriptor}?api-version=5.1-preview.1
您可以从每个用户的 Permission 页面的 UI 页面中的 URL 获取 userDescriptor。
注意 url... 这包含 ProjectId_ServiceEndpointId
$url="https://dev.azure.com/$OrganizationName/_apis/securityroles/scopes/distributedtask.serviceendpointrole/roleassignments/resources/$($ProjectId)_$($ServiceEndpointId)?api-version=5.1-preview.1"
ProjectId 来自
https://dev.azure.com/$OrganizatioName/_apis/projects?api-version=5.1
用户 ID 来自 [属性: originId]
https://vssps.dev.azure.com/$OrganizatioName/_apis/graph/groups?api-version=5.1-preview.1
ServiceEndpointId 来自
https://dev.azure.com/$OrganizatioName/$ProjectId/_apis/serviceendpoint/endpoints?api-version=5.1-preview.2