Edición de los controles de origen del paquete - CodeArtifact

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Edición de los controles de origen del paquete

En AWS CodeArtifact, las versiones de los paquetes se pueden añadir a un repositorio publicándolas directamente, extrayéndolas de un repositorio anterior o incorporándolas desde un repositorio público externo. Permitir que las versiones en paquetes de un paquete se agreguen mediante publicación directa o ingestión desde repositorios públicos hace que sea vulnerable a un ataque de sustitución de dependencias. Para obtener más información, consulte Ataques de sustitución de dependencias. Para protegerle de un ataque de sustitución de dependencias, puede configurar los controles de origen de los paquetes de un repositorio para limitar la forma en que se pueden añadir las versiones de ese paquete al repositorio.

Cualquier equipo que desee permitir que las nuevas versiones de diferentes paquetes provengan tanto de fuentes internas, como la publicación directa, como de fuentes externas, como los repositorios públicos, debería considerar la posibilidad de configurar los controles de origen de los paquetes. De forma predeterminada, los controles de origen de los paquetes se configurarán en función de cómo se añada la primera versión del paquete al repositorio. Para obtener información sobre la configuración del control de origen del paquete y sus valores predeterminados, consulte Configuración de control de origen del paquete.

Para eliminar el registro del paquete después de utilizar la operación de la API put-package-origin-configuration, utilice delete-package (consulte Eliminar un paquete o una versión del paquete).

Escenarios comunes de control de acceso a paquetes

En esta sección se incluyen algunos escenarios comunes cuando se agrega una versión de paquete a un CodeArtifact repositorio. Los ajustes de control de origen del paquete se establecerán para los paquetes nuevos en función de cómo se añada la primera versión del paquete.

En los siguientes escenarios, un paquete interno es un paquete que se publica directamente desde un administrador de paquetes en su repositorio, como un paquete que usted o su equipo crean y mantienen. Un paquete externo es un paquete que existe en un repositorio público y que puede incorporarse a su repositorio mediante una conexión externa.

Se publica una versión de paquete externo para un paquete interno existente

En este escenario, consideremos un paquete interno, packageA. Tu equipo publica la primera versión del paquete del paquete A en un CodeArtifact repositorio. Como esta es la primera versión del paquete, la configuración del control de origen del paquete se establece automáticamente en Publish: Allow and Upstream: Block. Una vez que el paquete existe en tu repositorio, se publica un paquete con el mismo nombre en un repositorio público que está conectado a tu CodeArtifact repositorio. Podría tratarse de un intento de ataque de sustitución de dependencias contra el paquete interno, o podría ser simplemente una coincidencia. En cualquier caso, los controles de origen de los paquetes están configurados para bloquear la ingesta de la nueva versión externa y protegerse así de un posible ataque.

En la siguiente imagen, RePoA es tu CodeArtifact repositorio con una conexión externa a un repositorio público. Su repositorio contiene las versiones 1.1 y 2.1 de packageA, pero la versión 3.0 está publicada en el repositorio público. Normalmente, repoA ingiere la versión 3.0 después de que un administrador de paquetes solicite el paquete. Como la ingesta de paquetes está configurada como Bloquear, la versión 3.0 no se ingiere en su CodeArtifact repositorio y no está disponible para los administradores de paquetes conectados a él.

Gráfico sencillo que muestra el bloqueo de una nueva versión de un paquete externo en un repositorio público.

Se publica una versión de paquete interno para un paquete externo existente

En este escenario, un paquete, packageB, existe externamente en un repositorio público que usted ha conectado a su repositorio. Cuando un administrador de paquetes conectado a su repositorio solicita el packageB, la versión del paquete se introduce en su repositorio desde el repositorio público. Como esta es la primera versión de paquete de packageB que se agrega a su repositorio, los ajustes de origen del paquete están configurados como Publish: BLOCK y Upstream: ALLOW. Más adelante, intenta publicar una versión con el mismo nombre de paquete en el repositorio. O bien no conoce el paquete público y está intentando publicar un paquete no relacionado con el mismo nombre, o bien está intentando publicar una versión parcheada, o bien está intentando publicar directamente la versión exacta del paquete que ya existe externamente. CodeArtifact rechazará la versión que está intentando publicar, pero le permitirá anular explícitamente el rechazo y publicar la versión si es necesario.

En la siguiente imagen, RePoA es tu CodeArtifact repositorio con una conexión externa a un repositorio público. Su repositorio contiene la versión 3.0 que ingirió del repositorio público. Quiere publicar la versión 1.1 en su repositorio. Normalmente, podría publicar la versión 1.2 en repoA, pero como la publicación está configurada en Block, la versión 1.2 no se puede publicar.

Gráfico sencillo que muestra el bloqueo de una nueva versión de un paquete externo en un repositorio público.

Publicar una versión parcheada de un paquete externo existente

En este escenario, un paquete, packageB, existe externamente en un repositorio público que usted ha conectado a su repositorio. Cuando un administrador de paquetes conectado a su repositorio solicita el packageB, la versión del paquete se introduce en su repositorio desde el repositorio público. Como esta es la primera versión de paquete de packageB que se agrega a su repositorio, los ajustes de origen del paquete están configurados como Publish: BLOCK y Upstream: ALLOW. Su equipo decide que necesita publicar las versiones de los paquetes parcheados de este paquete en el repositorio. Para poder publicar las versiones de los paquetes directamente, su equipo cambia la configuración del control de origen de los paquetes a Publish: ALLOW y Upstream: BLOCK. Las versiones de este paquete ahora se pueden publicar directamente en su repositorio e ingerir desde los repositorios públicos. Una vez que su equipo publique las versiones de los paquetes parcheados, cambiará la configuración de origen del paquete a Publish: BLOCK and Upstream: ALLOW.

Configuración de control de origen del paquete

Con los controles de origen de los paquetes, puede configurar cómo se pueden añadir las versiones de los paquetes a un repositorio. Las siguientes listas incluyen la configuración y los valores de control de origen de los paquetes disponibles.

nota

Los ajustes y valores disponibles son diferentes al configurar los controles de origen en los grupos de paquetes. Para obtener más información, consulte Controles de origen de los grupos de paquetes.

Publicación

Esta configuración configura si las versiones de los paquetes se pueden publicar directamente en el repositorio mediante administradores de paquetes o herramientas similares.

  • ALLOW: las versiones de los paquetes se pueden publicar directamente.

  • BLOCK: las versiones de los paquetes no se pueden publicar directamente.

Repositorios ascendentes

Esta configuración configura si las versiones de los paquetes pueden ingerirse desde repositorios públicos externos o conservarse desde repositorios originales cuando lo solicite un administrador de paquetes.

  • PERMITIR: Se puede conservar cualquier versión del paquete desde otros CodeArtifact repositorios configurados como repositorios ascendentes o se puede ingerir desde una fuente pública con una conexión externa.

  • BLOCK: Las versiones de los paquetes no se pueden conservar de otros CodeArtifact repositorios configurados como repositorios ascendentes ni se pueden ingerir desde una fuente pública con una conexión externa.

Configuración de control de origen de paquetes predeterminada

Los ajustes de control de origen de los paquetes predeterminados se configuran en función de los ajustes de control de origen del grupo de paquetes asociado al paquete. Para obtener más información sobre los grupos de paquetes y los controles de origen de los grupos de paquetes, consulte Trabajar con grupos de paquetes en CodeArtifact yControles de origen de los grupos de paquetes.

Si un paquete está asociado a un grupo de paquetes con una configuración de restricción ALLOW para cada tipo de restricción, los controles de origen de paquetes predeterminados para un paquete se basarán en la forma en que se agregue la primera versión de ese paquete al repositorio.

  • Si un administrador de paquetes publica directamente la primera versión del paquete, la configuración será Publish: ALLOW y Upstream: BLOCK.

  • Si la primera versión del paquete proviene de una fuente pública, los ajustes serán Publish: ALLOW y Upstream: BLOCK.

nota

Los paquetes que existían en CodeArtifact los repositorios aproximadamente antes de mayo de 2022 tendrán los controles de origen predeterminados Publish: ALLOW y Upstream: ALLOW. Los controles de origen de los paquetes deben configurarse manualmente para dichos paquetes. Desde entonces, los valores predeterminados actuales se han establecido en los paquetes nuevos y comenzaron a aplicarse cuando se lanzó la característica el 14 de julio de 2022. Para obtener más información sobre la configuración de controles de origen de paquetes, consulte Edición de los controles de origen del paquete.

De lo contrario, si un paquete está asociado a un grupo de paquetes que tiene al menos una configuración de restricción deBLOCK, la configuración de control de origen predeterminada para ese paquete se establecerá en Publish: ALLOW y Upstream: ALLOW.

Cómo interactúan los controles de origen de los paquetes con los controles de origen de los grupos de paquetes

Como los paquetes tienen una configuración de control de origen y sus grupos de paquetes asociados tienen una configuración de control de origen, es importante entender cómo interactúan esas dos configuraciones diferentes entre sí.

La interacción entre las dos configuraciones es que una configuración de BLOCK siempre gana sobre una configuración deALLOW. En la siguiente tabla se muestran algunos ejemplos de configuraciones y sus ajustes de control de origen efectivos.

Configuración de control de origen del paquete Configuración de control de origen del grupo de paquetes Configuración de control de origen efectiva

PUBLICAR: PERMITIR

UPSTREAM: PERMITIR

PUBLICAR: PERMITIR

UPSTREAM: PERMITIR

PUBLICAR: PERMITIR

UPSTREAM: PERMITIR

PUBLICAR: BLOQUEAR

UPSTREAM: PERMITIR

PUBLICAR: PERMITIR

UPSTREAM: PERMITIR

PUBLICAR: BLOQUEAR

UPSTREAM: PERMITIR

PUBLICAR: PERMITIR

UPSTREAM: PERMITIR

PUBLICAR: PERMITIR

AGUAS ARRIBA: BLOQUEAR

PUBLICAR: PERMITIR

AGUAS ARRIBA: BLOQUEAR

Lo que esto significa es que un paquete con la configuración de origen Publish: ALLOW y Upstream: ALLOW, está cediendo efectivamente a la configuración de control de origen del grupo de paquetes asociado.

Edición de los controles de origen del paquete

Los controles de origen de los paquetes se configuran automáticamente en función de cómo se agrega la primera versión del paquete al repositorio; para obtener más información, consulte Configuración de control de origen de paquetes predeterminada. Para añadir o editar los controles de origen de un paquete en un CodeArtifact repositorio, lleve a cabo los pasos del siguiente procedimiento.

Para añadir o editar los controles de origen del paquete (consola)
  1. Abra la AWS CodeArtifact consola en https://console.aws.amazon.com/codesuite/codeartifact/home.

  2. En el panel de navegación, elija Repositorios y elija el repositorio que contiene el paquete que desea editar.

  3. En la tabla Paquetes, busque y seleccione el paquete que desee editar.

  4. En la página de resumen del paquete, en controles de Origin, seleccione Editar.

  5. En Editar controles de origen, seleccione los controles de origen del paquete que desea configurar para este paquete. Los dos ajustes de control de origen del paquete, Publish y Upstream, deben configurarse al mismo tiempo.

    • Para permitir la publicación directa de las versiones de los paquetes, en Publicar, seleccione Permitir. Para bloquear la publicación de versiones de paquetes, seleccione Bloquear.

    • Para permitir la ingesta de paquetes de repositorios externos y la extracción de paquetes de repositorios anteriores, en Recursos ascendentes, seleccione Permitir. Para bloquear la ingestión y extracción de versiones de paquetes desde repositorios externos y ascendentes, seleccione Bloquear.

Para añadir o editar los controles de origen del paquete (AWS CLI)
  1. Si no lo ha hecho, configúrela AWS CLI siguiendo los pasos que se indican enConfiguración con AWS CodeArtifact.

  2. Utilice el comando put-package-origin-configuration para añadir o editar los controles de origen de los paquetes. Sustituya los campos siguientes:

    • Sustituya my_domain por el CodeArtifact dominio que contiene el paquete que desea actualizar.

    • Sustituya my_repo por el CodeArtifact repositorio que contiene el paquete que desea actualizar.

    • Reemplace npm con el formato de paquete que desea actualizar.

    • Reemplace my_package con el nombre del paquete que desea actualizar.

    • Sustituya ALLOW y BLOCK por la configuración de control de origen del paquete que desee.

    aws codeartifact put-package-origin-configuration --domain my_domain \ --repository my_repo --format npm --package my_package \ --restrictions publish=ALLOW,upstream=BLOCK

Repositorios editoriales y originales

CodeArtifact no permite publicar versiones de paquetes que estén presentes en repositorios ascendentes o repositorios públicos accesibles. Por ejemplo, supongamos que desea publicar un paquete de Maven com.mycompany.mypackage:1.0 en un repositorio myrepo y myrepo tiene un repositorio ascendente con una conexión externa al central de Maven. Considere los siguientes escenarios.

  1. Los ajustes de control de origen de los paquetes de com.mycompany.mypackage son Publish: ALLOW y Upstream: ALLOW. Si com.mycompany.mypackage:1.0 está presente en el repositorio principal o en Maven Central, CodeArtifact rechaza cualquier intento de publicación en myrepo él con un error de conflicto 409. Aún puede publicar una versión diferente, por ejemplo com.mycompany.mypackage:1.1.

  2. Los ajustes de control de origen de los paquetes de com.mycompany.mypackage son Publish: ALLOW y Upstream: BLOCK. Puede publicar en su repositorio cualquier versión de com.mycompany.mypackage que aún no exista porque no se puede acceder a las versiones de los paquetes.

  3. Los ajustes de control de origen de los paquetes de com.mycompany.mypackage son Publish: BLOCK y Upstream: ALLOW. No puede publicar ninguna versión del paquete directamente en su repositorio.