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 comodidad de usar una fuente unificada para publicar y consumir paquetes de fuentes de artefactos y registros públicos populares, como NuGet.org o npmjs.com. Anteriormente, las fuentes artifact combinaban una lista de versiones de paquete disponibles de la propia fuente y todos los orígenes ascendentes configurados.
Permitir versiones de origen externo es una característica que permite a los desarrolladores elegir si quieren consumir versiones de paquetes de origen externo. Controla qué paquetes son accesibles desde los registros públicos para paquetes específicos.
Al deshabilitar el botón de alternancia Permitir versiones externas, las versiones del registro público se bloquean y dejan de estar disponibles para su descarga. Esto agrega una capa adicional de seguridad evitando la exposición a paquetes potencialmente malintencionados de registros públicos.
Sin embargo, si lo prefieren los usuarios, pueden habilitar el botón de alternancia Permitir versiones externas para permitir el acceso y consumir paquetes de registros públicos.
Nota:
Esta configuración no realizará cambios en ninguna versión de paquete que ya esté guardada en la fuente. El acceso a estas versiones del paquete no cambiará como resultado de cambiar esta configuración.
Situaciones aplicables
En la siguiente sección se muestran varios escenarios comunes en los que la configuración de la versión externa bloquea las versiones del paquete de origen externo y otros escenarios en los que no es necesario bloquear el acceso a los paquetes públicos.
Las versiones públicas están bloqueadas
Versión del paquete privado pública
En este escenario, un equipo tiene un paquete privado que se hizo público. La configuración de versiones externas en este caso hará que la fuente bloquee el consumo de las nuevas versiones 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 permitir paquetes de origen externo se bloquean las nuevas versiones de paquetes del registro público.
No se bloquearán las versiones públicas
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 propietario de fuente 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 la fuente 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.
Seleccione 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
Cree un token de acceso personal con Empaquetado>de 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"
Fuente con ámbito de la 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 el comportamiento ascendente
- Establecimiento del comportamiento ascendente
- Borrar el 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