Защита от вредоносных общедоступных пакетов
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
С помощью входящих источников Azure Artifacts разработчики получают возможность удобно использовать единый канал для публикации и потребления пакетов из каналов артефактов и популярных публичных реестров, таких как NuGet.org или npmjs.com.
Разрешить внешние исходные версии
Эта функция позволяет разработчикам контролировать, следует ли использовать версии пакетов из общедоступных реестров, таких как NuGet.org или npmjs.com.
После включения переключателя разрешить внешние версии для определенного пакета версии из общедоступного реестра становятся доступными для скачивания. По умолчанию этот параметр отключен, добавляя дополнительный уровень безопасности, предотвращая воздействие потенциально вредоносных пакетов из общедоступных реестров. Вы должны быть владельцем канала, чтобы включить функцию разрешения внешних исходных версий.
Примечание.
Изменение этого параметра не влияет на версии пакетов, которые уже сохранены в хранилище. Эти версии останутся доступными независимо от этого параметра.
Применимые сценарии
В следующем разделе описаны распространенные сценарии, в которых внешние версии (пакеты из общедоступных реестров) заблокированы или разрешены для сохранения в веб-канале. В остальной части этой статьи мы называем пакеты из общедоступных реестров общедоступными пакетами и пакетами в веб-канале Azure Artifacts как частные пакеты.
Сценарий 1. Общедоступные версии блокируются
Общедоступная версия частного пакета
В этом сценарии команда имеет частный пакет, который был сделан публичным для общего доступа. Параметр внешних версий в этом случае приведет к блокировке потребления любых новых версий с таким именем пакета из общедоступного источника.
Наличие частных и общедоступных пакетов
В этом сценарии, если команда использует сочетание частных и публичных пакетов, если запретить использование пакетов из внешних источников, это блокирует любые новые версии пакетов из публичного реестра.
Сценарий 2. Общедоступные версии не будут заблокированы
Все пакеты являются частными*
Если все существующие пакеты являются частными, и команда не планирует использовать общедоступные пакеты, параметр внешних версий не влияет на рабочий процесс команды в этом сценарии.
Все пакеты являются общедоступными
В этом сценарии, если команда использует только общедоступные пакеты, будь то из общедоступного реестра или других репозиториев с открытым исходным кодом, параметр не влияет на рабочий процесс каким-либо образом.
Общедоступный пакет стал частным
В этой ситуации, когда общедоступный пакет преобразуется в частный пакет, параметры внешних версий не влияют на рабочий процесс команды каким-либо образом.
Разрешить внешние версии
Примечание.
Вы должны быть владельцем канала, чтобы разрешить версии, полученные извне. Дополнительные сведения см. в разделе "Разрешения для ленты".
Войдите в организацию Azure DevOps и перейдите к проекту.
Выберите Артефакты, и затем выберите ваш веб-канал в раскрывающемся меню.
Выберите пакет и нажмите кнопку с многоточием для получения дополнительных параметров. Выберите "Разрешить внешние исходные версии".
Нажмите кнопку переключателя, чтобы разрешить внешние версии. Нажмите кнопку "Закрыть ", когда вы закончите.
Разрешить внешние версии с помощью REST API
Разрешить внешние версии с помощью PowerShell
Создайте персональный токен доступа с правами упаковки>, чтения, записи и управления разрешениями.
Создайте переменную среды для токена личного доступа.
$env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
Преобразуйте личный маркер доступа в строку в кодировке Baser64 и создайте заголовок HTTP-запроса.
$token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar"))) $headers = @{ Authorization = "Basic $token" }
Создайте URL-адрес конечной точки. Пример: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1
Лента с привязкой к проекту:
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
Лента новостей организации
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
- Получение поведения передачи вверх по потоку
- Задание параметров поведения для upstreaming
- Очистить поведение восходящей передачи
Выполните следующую команду, чтобы получить состояние поведения вышестоящего пакета.
$url
и $headers
являются теми же переменными, которые мы использовали в предыдущем разделе.
Invoke-RestMethod -Uri $url -Headers $headers