Защита от вредоносных общедоступных пакетов
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
С помощью вышестоящих источников артефактов Azure разработчики получают удобство использования единого веб-канала для публикации и использования пакетов из веб-каналов Артефактов и популярных общедоступных реестров, таких как NuGet.org или npmjs.com. Ранее веб-каналы Artifact объединили список доступных версий пакетов как самого канала, так и всех настроенных вышестоящих источников.
Разрешить внешние исходные версии — это функция, которая позволяет разработчикам выбирать, хотите ли они использовать внешние исходные версии пакетов. Он определяет, какие пакеты доступны из общедоступных реестров для определенных пакетов.
При отключении переключателя "Разрешить внешние версии" версии из общедоступного реестра блокируются и становятся недоступными для скачивания. Это добавляет дополнительный уровень безопасности, предотвращая воздействие потенциально вредоносных пакетов из общедоступных реестров.
Однако если пользователи предпочитают, они могут включить переключатель "Разрешить внешние версии ", чтобы разрешить доступ к пакетам и использовать их из общедоступных реестров.
Примечание.
Этот параметр не вносит изменения в версии пакетов, которые уже сохранены в веб-канале. Доступ к этим версиям пакета не изменится в результате изменения этого параметра.
Применимые сценарии
В следующем разделе показаны различные распространенные сценарии, в которых внешние параметры параметров версии блокируют внешние исходные версии пакетов и другие сценарии, в которых нет необходимости блокировать доступ к общедоступным пакетам.
Общедоступные версии заблокированы
Общедоступная версия частного пакета
В этом сценарии команда имеет частный пакет, который был открыт. Параметр внешних версий в этом случае приведет к блокировке потребления любых новых версий с таким именем пакета из общедоступного источника.
Наличие частных и общедоступных пакетов
В этом сценарии, если команда использует сочетание частных и общедоступных пакетов, запретить внешние исходные пакеты блокирует любые новые версии пакетов из общедоступного реестра.
Общедоступные версии не будут заблокированы
Все пакеты являются частными*
Если все существующие пакеты являются частными, и команда не планирует использовать общедоступные пакеты, параметр внешних версий не влияет на рабочий процесс команды в этом сценарии.
Все пакеты являются общедоступными
В этом сценарии, если команда использует только общедоступные пакеты, будь то из общедоступного реестра или других репозиториев с открытым исходным кодом, параметр не влияет на рабочий процесс каким-либо образом.
Общедоступный пакет, закрытый
В этой ситуации, когда общедоступный пакет преобразуется в частный пакет, параметры внешних версий не влияют на рабочий процесс команды каким-либо образом.
Разрешить внешние версии
Примечание.
Вы должны быть владельцем канала, чтобы разрешить внешние исходные версии. Дополнительные сведения см. в разделе "Разрешения веб-канала".
Войдите в организацию 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