Доступ к репозиториям, артефактам и другим ресурсам
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Во время выполнения каждое задание в конвейере может получить доступ к другим ресурсам в Azure DevOps. Например, задание может:
- Ознакомьтесь с исходным кодом из репозитория Git
- Добавление тега в репозиторий
- Доступ к веб-каналу в Артефактах Azure
- Отправка журналов из агента в службу
- Отправка результатов теста и других артефактов из агента в службу
- Обновить рабочий элемент
Azure Pipelines использует маркеры доступа к заданиям для выполнения этих задач. Маркер доступа к заданию — это маркер безопасности, динамически создаваемый Azure Pipelines для каждого задания во время выполнения. Агент, в котором выполняется задание, использует маркер доступа к заданию для доступа к этим ресурсам в Azure DevOps. Вы можете управлять тем, к каким ресурсам у вашего конвейера есть доступ, контролируя, как разрешения предоставляются маркерам доступа к заданиям.
Разрешения маркера являются производными от (а) области авторизации задания и (б) разрешений, настроенных для учетной записи службы сборки проекта или коллекции.
Авторизация заданий область
Вы можете настроить авторизацию задания, область быть коллекцией или проектом. Задав область коллекцию, вы можете разрешить конвейерам доступ ко всем репозиториям в коллекции или организации. Установив для проекта область доступ только к этим репозиториям, которые находятся в том же проекте, что и конвейер.
Для всей организации Azure DevOps или для конкретного проекта можно задать область авторизации заданий.
Примечание.
В Azure DevOps Server 2020 ограничение авторизации задания область текущему проекту применяется только к конвейерам YAML и классическим конвейерам сборки. Он не применяется к классическим конвейерам выпуска. Классические конвейеры выпуска всегда выполняются с область коллекции проектов.
Чтобы задать область авторизации заданий для организации, выполните следующие действия.
- Перейдите на страницу параметров организации в пользовательском интерфейсе Azure DevOps.
- Выберите Параметры в разделе "Конвейеры".
- Включите область авторизации задания в текущий проект, чтобы ограничить область проектом. Это рекомендуемый параметр, так как он повышает безопасность конвейеров.
Чтобы задать область авторизации задания для определенного проекта, выполните указанные действия.
- Перейдите на страницу параметров проекта в пользовательском интерфейсе Azure DevOps.
- Выберите Параметры в разделе "Конвейеры".
- Включите область авторизации задания в текущий проект, чтобы ограничить область проектом. Это рекомендуемый параметр, так как он повышает безопасность конвейеров.
- Чтобы настроить авторизацию задания область на уровне организации для всех проектов, выберите параметры>организации Pipelines> Параметры.
- Чтобы задать область авторизации задания для определенного проекта, выберите "Параметры>проекта конвейеров> Параметры.
Включите один или несколько следующих параметров. Рекомендуется включить эти параметры, так как он повышает безопасность конвейеров.
- Ограничение авторизации задания область текущему проекту для конвейеров, отличных от выпуска. Этот параметр применяется к конвейерам YAML и классическим конвейерам сборки и не применяется к классическим конвейерам выпуска.
- Ограничить авторизацию задания область текущим проектом для конвейеров выпуска. Этот параметр применяется только к классическим конвейерам выпуска.
Примечание.
Если для область задан проект на уровне организации, вы не можете изменить область в каждом проекте.
Внимание
Если область не ограничен ни на уровне организации, ни на уровне проекта, то каждое задание в конвейере YAML получает маркер доступа к заданию область коллекции. Другими словами, конвейер имеет доступ к любому репозиторию в любом проекте вашей организации. Если злоумышленник может получить доступ к одному конвейеру в одном проекте, он сможет получить доступ к любому репозиторию в вашей организации. Поэтому рекомендуется ограничить область на самом высоком уровне (параметры организации) для хранения атаки на один проект.
Если вы используете Azure DevOps Server 2019, то все задания YAML выполняются с авторизацией задания область для коллекции. Другими словами, эти задания имеют доступ ко всем репозиториям в коллекции проектов. Это невозможно изменить в Azure DevOps Server 2019.
Конвейеры YAML недоступны в TFS.
Примечание.
Если конвейер находится в общедоступном проекте, то авторизация заданий область автоматически ограничивается проектом независимо от того, что вы настраиваете в любом параметре. Задания в общедоступном проекте могут получить доступ к ресурсам, таким как артефакты сборки или результаты тестирования только в проекте, а не из других проектов организации.
Ограничение авторизации задания область на репозитории Azure DevOps
Помимо параметров авторизации задания область, описанных в предыдущем разделе, Azure Pipelines предоставляет область авторизации заданий, на которые ссылается параметр репозиториев Azure DevOps.
Конвейеры могут получить доступ к любым репозиториям Azure DevOps в авторизованных проектах, если не включена авторизация заданий, область для ссылки на репозитории Azure DevOps. С помощью этого параметра можно уменьшить область доступа ко всем конвейерам только репозиториям Azure DevOps, на которые явно ссылается checkout
шаг или uses
оператор в задании конвейера, использующем этот репозиторий.
Дополнительные сведения см. в репозиториях Azure Repos Git. Ограничение авторизации заданий область на репозитории Azure DevOps.
Защита доступа к репозиториям в конвейерах YAML
Помимо параметров авторизации задания область, описанных в предыдущем разделе, Azure Pipelines предоставляет защищенный доступ к репозиториям в параметрах конвейеров YAML.
Конвейеры могут получить доступ к любым репозиториям Azure DevOps в авторизованных проектах, если только не включен доступ к репозиториям в конвейерах YAML. С помощью этого параметра можно уменьшить область доступа ко всем конвейерам только репозиториям Azure DevOps, на которые явно ссылается checkout
шаг или uses
оператор в задании конвейера, использующем этот репозиторий.
Дополнительные сведения см. в репозиториях Azure Repos Git. Защита доступа к репозиториям в конвейерах YAML.
Внимание
Защита доступа к репозиториям в конвейерах YAML включена по умолчанию для новых организаций и проектов , созданных после мая 2020 г.
Удостоверения сборки с областью действия
Azure DevOps использует два встроенных удостоверения для выполнения конвейеров.
- Удостоверение, область коллекции, которое имеет доступ ко всем проектам в коллекции (или организации для Azure DevOps Services)
- Удостоверение область проекта, которое имеет доступ к одному проекту
Эти удостоверения являются разрешениями, необходимыми для выполнения действий во время выполнения сборки и выпуска при обратном вызове в систему Azure DevOps. Есть встроенные разрешения по умолчанию, и вы также можете управлять собственными разрешениями по мере необходимости.
Имя удостоверения область коллекции имеет следующий формат:
Project Collection Build Service ({OrgName})
- Например, если имя организации имеет
fabrikam-tailspin
имя, у этой учетной записи есть имяProject Collection Build Service (fabrikam-tailspin)
.
Имя удостоверения область проекта имеет следующий формат:
{Project Name} Build Service ({Org Name})
- Например, если имя
fabrikam-tailspin
организации и имяSpaceGameWeb
проекта имеет имя, эта учетная запись имеет имяSpaceGameWeb Build Service (fabrikam-tailspin)
.
По умолчанию используется удостоверение область коллекции, если не настроено в противном случае, как описано в предыдущем разделе авторизации задания область.
Управление разрешениями учетной записи службы сборки
Одним из результатов настройки доступа к область проекта может быть то, что удостоверение область проекта может не иметь разрешений на ресурс, который был у область коллекции.
Возможно, потребуется изменить разрешения маркера доступа к заданию в следующих сценариях:
- Вы хотите, чтобы конвейер был доступ к веб-каналу, который находится в другом проекте.
- Вы хотите, чтобы конвейер был ограничен изменением кода в репозитории.
- Вы хотите, чтобы конвейер был ограничен созданием рабочих элементов.
Чтобы обновить разрешения маркера доступа к заданию, выполните следующие действия.
Сначала определите авторизацию задания область для конвейера. Ознакомьтесь с приведенным выше разделом, чтобы понять, область авторизации заданий. Если область авторизации задания является коллекцией, то соответствующая учетная запись службы сборки project (имя коллекции)). Если область авторизации задания является проектом, то учетная запись службы сборки для управления разрешениями для управления разрешениями является Служба сборки вашего проекта (имя коллекции).
Чтобы ограничить или предоставить дополнительный доступ к службе сборки коллекции Project (имя коллекции):
- Выберите " Управление безопасностью " в меню переполнения на странице "Конвейеры ".
- В разделе "Пользователи" выберите "Служба сборки коллекции проектов" (имя коллекции).
- Внесите изменения в разрешения, связанные с конвейерами, для этой учетной записи.
- Перейдите к параметрам организации Azure DevOps (или параметрам коллекции для коллекции проектов).
- Выберите разрешения в разделе "Безопасность".
- На вкладке "Пользователи" найдите службу сборки коллекции проектов (имя коллекции).
- Внесите изменения в разрешения, не связанные с конвейерами, для этой учетной записи.
- Так как служба сборки коллекции проектов (имя коллекции) является пользователем в вашей организации или коллекции, вы можете явно добавить эту учетную запись в любой ресурс ( например, в веб-канал в Azure Artifacts).
Чтобы ограничить или предоставить дополнительный доступ к службе сборки your-project-name (your-collection-name):
- Учетная запись службы сборки, в которой можно управлять разрешениями, будет создана только после запуска конвейера один раз. Убедитесь, что вы уже запустили конвейер один раз.
- Выберите " Управление безопасностью " в меню переполнения на странице "Конвейеры ".
- В разделе "Пользователи" выберите "Служба сборки "Ваш проект" (имя коллекции).<
/a0> - Внесите изменения в разрешения, связанные с конвейерами, для этой учетной записи.
- Перейдите к параметрам организации Azure DevOps (или параметрам коллекции для коллекции проектов).
- Выберите разрешения в разделе "Безопасность".
- На вкладке "Пользователи" найдите службу сборки your-project-name (your-collection-name).
- Внесите изменения в разрешения, не связанные с конвейерами, для этой учетной записи.
- Так как служба сборки your-project-name (имя коллекции) является пользователем в вашей организации или коллекции, вы можете добавить эту учетную запись явно в любой ресурс ( например, в веб-канал в Azure Artifacts).
Настройка разрешений для доступа к другому проекту в той же коллекции проектов
В этом примере удостоверение сборки, область проекта, fabrikam-tailspin/SpaceGameWeb
предоставляет разрешения на доступ fabrikam-tailspin/FabrikamFiber
к проекту.
В проекте FabrikamFiber перейдите к параметрам проекта, разрешениям.
Создайте группу с именем "Внешние проекты" и добавьте учетную запись службы сборки SpaceGameWeb.
Выберите "Пользователи", начните вводить имя SpaceGameWeb и выберите учетную запись службы сборки SpaceGameWeb. Если изначально не отображаются результаты поиска, выберите "Развернуть поиск".
Предоставьте пользователю разрешение на просмотр сведений на уровне проекта.
Пример. Настройка разрешений для доступа к другому репозиторию в той же коллекции проектов
В этом примере fabrikam-tailspin/SpaceGameWeb
удостоверение сборки область проекта предоставляется разрешение на доступ к FabrikamFiber
репозиторию в fabrikam-tailspin/FabrikamFiber
проекте.
Выполните действия, чтобы предоставить
SpaceGameWeb
разрешение удостоверения сборки область проекта для доступа кFabrikamFiber
проекту.В проекте FabrikamFiber перейдите к параметрам проекта, репозиториям, FabrikamFiber.
+ Выберите значок, начните вводить имя SpaceGameWeb и выберите учетную запись службы сборки SpaceGameWeb.
Начните вводить имя SpaceGameWeb и выберите учетную запись Службы сборки SpaceGameWeb.
Предоставьте разрешения на чтение для этого пользователя.
Пример. Настройка разрешений для доступа к другим ресурсам в той же коллекции проектов
В этом примере fabrikam-tailspin/SpaceGameWeb
удостоверение сборки область проекта предоставляется разрешение на доступ к другим ресурсам в fabrikam-tailspin/FabrikamFiber
проекте.
Выполните действия, чтобы предоставить
SpaceGameWeb
разрешение удостоверения сборки область проекта для доступа кFabrikamFiber
проекту.Настройте необходимые разрешения для этого пользователя.
Вопросы и ответы
Разделы справки определить авторизацию задания область конвейера YAML?
- Если проект является общедоступным проектом, область авторизации заданий всегда является проектом независимо от других параметров.
Все конвейеры YAML в Azure DevOps Server 2019 выполняются в область задания коллекции.
- Проверьте параметры конвейера в параметрах организации Azure DevOps:
- Если включена авторизация задания ограничения область текущему проекту, область — это проект.
- Если область ограничения авторизации задания в текущий проект не включен, проверка параметры конвейера в параметрах проекта в Azure DevOps:
- Если включена авторизация задания ограничения область текущему проекту, область — это проект.
- В противном случае область является коллекцией.
- Если конвейер находится в частном проекте, проверка параметры конвейера в параметрах Организации Azure DevOps:
- Если включена область ограничения авторизации задания на текущий проект для конвейеров, отличных от выпуска, область — это проект.
- Если ограничение авторизации задания область текущему проекту для конвейеров, отличных от выпуска, не включено, проверка параметры конвейера в параметрах проекта в Azure DevOps:
- Если включена область ограничения авторизации задания на текущий проект для конвейеров, отличных от выпуска, область — это проект.
- В противном случае область является коллекцией.
Разделы справки определить область авторизации задания классического конвейера сборки?
- Если конвейер находится в общедоступном проекте, область авторизации задания является проектом независимо от других параметров.
- Откройте редактор конвейера и перейдите на вкладку "Параметры ".
- Если область авторизации задания сборки является текущим проектом, область является проектом.
- В противном случае область является коллекцией.
- Проверьте параметры конвейера в параметрах организации Azure DevOps:
- Если включена авторизация задания ограничения область текущему проекту, область — это проект.
- Если область ограничения авторизации задания в текущий проект не включен, проверка параметры конвейера в параметрах проекта в Azure DevOps:
- Если включена авторизация задания ограничения область текущему проекту, область — это проект.
- Если ограничение авторизации задания область текущему проекту не включено, откройте редактор конвейера и перейдите на вкладку "Параметры".
- Если область авторизации задания сборки является текущим проектом, область является проектом.
- В противном случае область является коллекцией.
- Если конвейер находится в частном проекте, проверка параметры конвейера в параметрах Организации Azure DevOps:
- Если включена область ограничения авторизации задания на текущий проект для конвейеров, отличных от выпуска, область — это проект.
- Если ограничение авторизации задания область текущему проекту для конвейеров, отличных от выпуска, не включено, проверка параметры конвейера в параметрах проекта в Azure DevOps:
- Если включена область ограничения авторизации задания на текущий проект для конвейеров, отличных от выпуска, область — это проект.
- Если ограничение авторизации задания область текущему проекту для конвейеров, отличных от выпуска, не включено, откройте редактор конвейера и перейдите на вкладку "Параметры".
- Если область авторизации задания сборки является текущим проектом, область является проектом.
- Кроме того, область является коллекцией.
При создании нового классического конвейера область авторизации задания устанавливается в текущий проект, а область авторизации задания сборки по умолчанию задано значение project.
Разделы справки определить область авторизации задания классического конвейера выпуска?
Классические конвейеры выпусков в Azure DevOps Server 2020 и ниже выполняются с область коллекции.
- Если конвейер находится в общедоступном проекте, область авторизации задания является проектом независимо от других параметров.
- Если конвейер находится в частном проекте, проверка параметры конвейера в параметрах Организации Azure DevOps:
- Если включено ограничение авторизации задания область текущему проекту для конвейеров выпуска, то область — это проект.
- Если ограничение авторизации задания область текущего проекта для конвейеров выпуска не включено, проверка параметры конвейера в параметрах проекта в Azure DevOps:
- Если включено ограничение авторизации задания область текущему проекту для конвейеров выпуска, то область — это проект.
- В противном случае область является коллекцией.