Как отключить наследование в конвейерах Azure с помощью Rest API?

enter image description here

0
irudne 24 Фев 2021 в 05:54

1 ответ

Лучший ответ

REST API не задокументирован, однако вы можете отслеживать его с помощью таких инструментов, как Fiddler или нажмите {{X0 }} в браузере Chrome, затем выберите Сеть.

enter image description here

Например Я могу использовать нижеприведенный REST API, чтобы отключить наследование для конвейера Azure code test-CI в приведенном ниже примере:

POST https://dev.azure.com/{Org name}/_apis/Contribution/HierarchyQuery/project/{Project name}?api-version=6.0-preview

Тело запроса:

{
  "contributionIds": [
    "ms.vss-admin-web.security-view-update-data-provider"
  ],
  "dataProviderContext": {
    "properties": {
      "changeInheritance": true,
      "permissionSetId": "{permissionSetId }",
      "permissionSetToken": "{project id}/{build definition ID}",
      "inheritPermissions": false,
      "sourcePage": {
        "url": "https://dev.azure.com/{Org name}/{Project name}/_build?definitionId={Build definition ID}",
        "routeId": "ms.vss-build-web.pipeline-details-route",
        "routeValues": {
          "project": "{Project name}",
          "viewname": "details",
          "controller": "ContributedPage",
          "action": "Execute",
          "serviceHost": "{Service account ID} (Org name)"
        }
      }
    }
  }
}

Примечание . Если нам нужно включить наследование для конвейеров Azure, просто измените значение поля inheritPermissions на true

Обновление1

permissionSetId равно namespaceID, мы можем получить его через REST API ниже:

GET https://dev.azure.com/{Org name}/_apis/securitynamespaces?api-version=6.0

А затем выполните поиск name": "Build", чтобы получить namespaceId

PermissionSetToken равно {project id}/{build definition ID}, мы можем получить идентификатор проекта через REST API ниже:

GET https://dev.azure.com/{organization}/_apis/projects?api-version=6.0

Значение serviceHost равно service account id (Org name), мы можем получить его с помощью нижеприведенного REST API:

GET https://vssps.dev.azure.com/{Org}/_apis/graph/users?api-version=6.0-preview.1

Затем выполните поиск Project Collection Build Service в теле запроса, principalName - это идентификатор сервисного аккаунта.

1
Vito Liu-MSFT 24 Фев 2021 в 09:20