Protección contra paquetes públicos malintencionados
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Con los orígenes ascendentes de Azure Artifacts los desarrolladores obtienen la capacidad de usar un feed unificado para publicar y consumir paquetes de feeds de artefactos y de registros públicos populares, como NuGet.org o npmjs.com.
Permitir versiones de origen externo
Esta característica permite a los desarrolladores controlar si quieren consumir versiones de paquetes de registros públicos, como NuGet.org o npmjs.com.
Una vez pulsado el botón de alternancia Permitir versiones externas para un paquete específico, las versiones del registro público pasan a estar disponibles para su descarga. De forma predeterminada, esta opción está deshabilitada, agregando una capa adicional de seguridad evitando la exposición a paquetes potencialmente malintencionados de registros públicos. Usted debe ser propietario de la fuente para habilitar la característica permitir versiones de origen externo.
Nota:
El cambio de esta configuración no afecta a las versiones del paquete ya guardadas en la fuente. Esas versiones seguirán siendo accesibles independientemente de esta configuración.
Situaciones aplicables
En la siguiente sección se describen escenarios comunes en los que se prohíbe o se permite guardar versiones externas (paquetes de registros públicos) en la fuente. En el resto de este artículo, nos referimos a los paquetes de los registros públicos como paquetes públicos y a los paquetes de una fuente de Azure Artifacts como paquetes privados.
Escenario 1: las versiones públicas están bloqueadas
Se ha hecho pública la versión privada del paquete
En este escenario, un equipo tiene un paquete privado que se hizo público. La configuración de versiones externas en este caso llevará a que el feed bloquee el consumo de cualquier nueva versión con ese nombre de paquete desde un origen público.
Tener paquetes privados y públicos
En este escenario, si un equipo usa una combinación de paquetes privados y públicos, al impedir paquetes de origen externo se bloquean las nuevas versiones de paquetes del registro público.
Escenario 2: las versiones públicas no se bloquearán
Todos los paquetes son privados*
Si todos los paquetes existentes son privados y el equipo no tiene planes de usar ningún paquete público, la configuración de versiones externas no tiene ningún efecto en el flujo de trabajo del equipo en este escenario.
Todos los paquetes son públicos
En este escenario, si el equipo consume exclusivamente paquetes públicos, ya sea del registro público u otros repositorios de código abierto, la configuración no afecta a su flujo de trabajo de ninguna manera.
Paquete público hecho privado
En esta situación, cuando se convierte un paquete público en un paquete privado, la configuración de versiones externas no afecta al flujo de trabajo del equipo de ninguna manera.
Permitir versiones externas
Nota:
Debe ser un Propietario del Feed para permitir versiones de origen externo. Para obtener más información, consulte Permisos de fuente.
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Seleccione Artefactos y, a continuación, seleccione su canal en el menú desplegable.
Seleccione el paquete y, a continuación, seleccione el botón de puntos suspensivos para obtener más opciones. Seleccione Permitir versiones de origen externo.
Pulse el botón de alternancia para permitir versiones externas. Seleccione Cerrar cuando haya terminado.
Permitir versiones externas mediante la API REST
Permitir versiones externas mediante PowerShell
Crear un token de acceso personal con Empaquetado>Permisos de lectura, escritura y &administración.
Cree una variable de entorno para el token de acceso personal.
$env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
Convierta el token de acceso personal en cadena codificada en baser64 y construya el encabezado de solicitud HTTP.
$token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar"))) $headers = @{ Authorization = "Basic $token" }
Construya la dirección URL del punto de conexión. Ejemplo: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1
Fuente con ámbito de proyecto:
$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"
Feed con ámbito de organización:
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
- Obtener comportamiento ascendente
- Configurar comportamiento ascendente
- Borrar comportamiento ascendente
Ejecute el siguiente comando para recuperar el estado de comportamiento ascendente del paquete. $url
y $headers
son las mismas variables que hemos usado en la sección anterior.
Invoke-RestMethod -Uri $url -Headers $headers