Доступ к репозиториям, артефактам и другим ресурсам
Azure DevOps Services | Azure DevOps Server 2022 г. - Azure DevOps Server 2019 г. | TFS 2018
Примечание
В Microsoft Team Foundation Server (TFS) 2018 и предыдущих версий конвейеры сборки и выпуска называются определениями, выполнения называются сборками, подключения к службам называются конечными точками служб, этапы называются средами, а задания называются этапами.
Во время выполнения каждое задание в конвейере может обращаться к другим ресурсам в Azure DevOps. Например, задание может:
- Извлеките исходный код из репозитория Git
- Добавление тега в репозиторий
- Доступ к веб-каналу в Azure Artifacts
- Отправка журналов из агента в службу
- Отправка результатов теста и других артефактов из агента в службу
- Обновление рабочего элемента
Azure Pipelines использует маркеры доступа к заданиям для выполнения этих задач. Маркер доступа к заданию — это маркер безопасности, динамически создаваемый Azure Pipelines для каждого задания во время выполнения. Агент, на котором выполняется задание, использует маркер доступа к заданию для доступа к этим ресурсам в Azure DevOps. Вы можете управлять ресурсами, к которым у вашего конвейера есть доступ, управляя способом предоставления разрешений маркерам доступа к заданиям.
Разрешения маркера являются производными от (а) авторизации задания область и (б) разрешений, заданных для учетной записи службы сборки проекта или коллекции.
область авторизации задания
Вы можете задать область авторизации задания как коллекцию или проект. Задав область коллекцию, вы можете разрешить конвейерам доступ ко всем репозиториям в коллекции или организации. Задав для область значение project, вы можете ограничить доступ только теми репозиториями, которые находятся в том же проекте, что и конвейер.
Авторизация задания область может быть задана для всей организации Azure DevOps или для определенного проекта.
Примечание
В Azure DevOps Server 2020 г. ограничение область авторизации задания текущим проектом применяется только к конвейерам YAML и классическим конвейерам сборки. Он не применяется к классическим конвейерам выпуска. Классические конвейеры выпуска всегда выполняются с коллекцией проектов область.
Чтобы настроить область авторизации задания для организации, выполните следующие действия.
- Перейдите на страницу параметров организации в пользовательском интерфейсе Azure DevOps.
- Выберите Параметры в разделе Конвейеры.
- Включите параметр Ограничить авторизацию задания область текущим проектом, чтобы ограничить область проектом. Это рекомендуемый параметр, так как он повышает безопасность конвейеров.
Чтобы задать область авторизации задания для определенного проекта, выполните указанные действия.
- Перейдите на страницу параметров проекта в пользовательском интерфейсе Azure DevOps.
- Выберите Параметры в разделе Конвейеры.
- Включите параметр Ограничить авторизацию задания область текущим проектом, чтобы ограничить область проектом. Это рекомендуемый параметр, так как он повышает безопасность конвейеров.
- Чтобы настроить область авторизации задания на уровне организации для всех проектов, выберите Параметры> организацииПараметры конвейеров>.
- Чтобы задать область авторизации задания для определенного проекта, выберите Параметры> проектаПараметры конвейеров>.
Включите один или несколько следующих параметров. Рекомендуется включить эти параметры, так как это повышает безопасность конвейеров.
- Ограничение авторизации заданий область текущим проектом для конвейеров, не являющихся выпусками. Этот параметр применяется к конвейерам YAML и классическим конвейерам сборки и не применяется к классическим конвейерам выпуска.
- Ограничить область авторизации заданий текущим проектом для конвейеров выпуска. Этот параметр применяется только к классическим конвейерам выпуска.
Примечание
Если для область задано значение project на уровне организации, вы не сможете изменить область в каждом проекте.
Важно!
Если область не ограничен ни на уровне организации, ни на уровне проекта, то каждое задание в конвейере YAML получает маркер доступа к заданию области коллекции. Другими словами, конвейер имеет доступ к любому репозиторию в любом проекте вашей организации. Если злоумышленник может получить доступ к одному конвейеру в одном проекте, он сможет получить доступ к любому репозиторию в вашей организации. Поэтому рекомендуется ограничить область на самом высоком уровне (параметры организации), чтобы ограничить атаку одним проектом.
Если вы используете Azure DevOps Server 2019, то все задания YAML выполняются с область авторизации задания, установленным в коллекцию. Другими словами, эти задания имеют доступ ко всем репозиториям в коллекции проектов. Это нельзя изменить в Azure DevOps Server 2019 г.
Конвейеры YAML недоступны в TFS.
Примечание
Если конвейер находится в общедоступном проекте, область авторизации задания автоматически ограничивается проектом независимо от того, что вы настраиваете в любом параметре. Задания в общедоступном проекте могут получать доступ к ресурсам, таким как артефакты сборки или результаты тестирования, только в рамках проекта, но не из других проектов организации.
Ограничение область авторизации заданий для указанных репозиториев Azure DevOps
Помимо параметров авторизации задания область, описанных в предыдущем разделе, Azure Pipelines предоставляет параметр Ограничить авторизацию задания область для указанных репозиториев Azure DevOps.
Конвейеры могут получать доступ к любым репозиториям Azure DevOps в авторизованных проектах, если не включена возможность ограничить авторизацию заданий область для указанных репозиториев Azure DevOps. Если этот параметр включен, вы можете уменьшить область доступа для всех конвейеров только к репозиториям checkout
Azure DevOps, на которые явно ссылается шаг или uses
оператор в задании конвейера, использующего этот репозиторий.
Дополнительные сведения см. в статье Azure Repos репозиториев Git. Ограничение авторизации заданий область ссылочными репозиториями Azure DevOps.
Защита доступа к репозиториям в конвейерах YAML
Помимо параметров авторизации задания область, описанных в предыдущем разделе, Azure Pipelines предоставляет параметр Защита доступа к репозиториям в конвейерах YAML.
Конвейеры могут получать доступ к любым репозиториям Azure DevOps в авторизованных проектах, если не включен защищенный доступ к репозиториям в конвейерах YAML . Если этот параметр включен, вы можете уменьшить область доступа для всех конвейеров только к репозиториям checkout
Azure DevOps, на которые явно ссылается шаг или 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 (имя коллекции), выполните следующие действия.
- Выберите Управление безопасностью в меню переполнения на странице Конвейеры .
- В разделе Пользователи выберите Project Collection Build Service (your-collection-name).
- Внесите любые изменения в разрешения, связанные с конвейерами, для этой учетной записи.
- Перейдите к параметрам организации для организации Azure DevOps (или к параметрам коллекции для коллекции проектов).
- Выберите Разрешения в разделе Безопасность.
- На вкладке Пользователи найдите Службу сборки коллекции проектов (имя коллекции).
- Внесите любые изменения в разрешения, не связанные с конвейерами, для этой учетной записи.
- Так как служба сборки коллекции Project (имя коллекции) является пользователем в вашей организации или коллекции, эту учетную запись можно явно добавить в любой ресурс, например в веб-канал в Azure Artifacts.
Чтобы ограничить или предоставить дополнительный доступ к службе сборки your-project-name (имя коллекции), выполните следующие действия:
- Учетная запись службы сборки, с помощью которой можно управлять разрешениями, будет создана только после запуска конвейера один раз. Убедитесь, что конвейер уже запущен один раз.
- Выберите Управление безопасностью в меню переполнения на странице Конвейеры .
- В разделе Пользователи выберите Служба сборки с именем проекта (имя коллекции).
- Внесите любые изменения в разрешения, связанные с конвейерами, для этой учетной записи.
- Перейдите к параметрам организации для организации Azure DevOps (или к параметрам коллекции для коллекции проектов).
- Выберите Разрешения в разделе Безопасность.
- На вкладке Пользователи найдите службу сборки your-project-name (your-collection-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:
- Если параметр Ограничить авторизацию задания область текущим проектом для конвейеров, не являющихся выпусками, то область является project.
- Если параметр Ограничить авторизацию задания область текущим проектом для конвейеров, не являющихся выпусками, не включен, проверка параметры конвейера в параметрах проекта в Azure DevOps:
- Если параметр Ограничить авторизацию задания область текущим проектом для конвейеров, не являющихся выпусками, то область является project.
- В противном случае область является коллекцией.
Разделы справки определить область авторизации задания классического конвейера сборки?
- Если конвейер находится в общедоступном проекте, то область авторизации задания является проектом независимо от других параметров.
- Откройте редактор конвейера и перейдите на вкладку Параметры .
- Если область авторизации задания сборки имеет значение Текущий проект, область — проект.
- В противном случае область является коллекцией.
- Проверьте параметры конвейера в параметрах организации Azure DevOps:
- Если параметр Ограничить авторизацию задания область текущим проектом включен, то область является проектом.
- Если параметр Ограничить авторизацию задания область текущим проектом не включен, проверка параметры конвейера в параметрах проекта в Azure DevOps:
- Если параметр Ограничить авторизацию задания область текущим проектом включен, область — project.
- Если параметр Ограничить авторизацию задания область текущим проектом не включен, откройте редактор конвейера и перейдите на вкладку Параметры.
- Если область авторизации задания сборки имеет значение Текущий проект, то область — проект.
- В противном случае область является коллекцией.
- Если конвейер находится в частном проекте, проверка параметры конвейера в параметрах Организации Azure DevOps:
- Если параметр Ограничить авторизацию задания область текущим проектом для конвейеров, не относящихся к выпуску, область — project.
- Если параметр Ограничить авторизацию задания область текущим проектом для конвейеров, не являющихся выпусками, не включен, проверка параметры конвейера в параметрах проекта в Azure DevOps:
- Если параметр Ограничить авторизацию задания область текущим проектом для конвейеров, не относящихся к выпуску, область — project.
- Если параметр Ограничить авторизацию задания область текущим проектом для конвейеров, не относящихся к выпуску, не включен, откройте редактор конвейера и перейдите на вкладку Параметры.
- Если область авторизации задания сборки имеет значение Текущий проект, то область — проект.
- Или же область является коллекцией.
Разделы справки определить область авторизации задания для классического конвейера выпуска?
Классические конвейеры выпуска в Azure DevOps Server 2020 г. и ниже выполняются с область коллекций.
- Если конвейер находится в общедоступном проекте, то область авторизации задания является проектом независимо от любых других параметров.
- Если конвейер находится в частном проекте, проверка параметры конвейера в параметрах Организации Azure DevOps:
- Если параметр Ограничить авторизацию задания область текущим проектом для конвейеров выпуска включен, то область — project.
- Если параметр Ограничить авторизацию задания область текущим проектом для конвейеров выпуска не включен, проверка параметры конвейера в параметрах проекта в Azure DevOps:
- Если параметр Ограничить авторизацию задания область текущим проектом для конвейеров выпуска включен, то область — project.
- В противном случае область будет коллекцией.