Skip to main content

Acerca de los permisos para los Paquetes de GitHub

Aprende cómo administrar los permisos de tus paquetes.

¿Quién puede utilizar esta característica?

GitHub Packages está disponible con GitHub Free, GitHub Pro, GitHub Free para organizaciones, GitHub Team, GitHub Enterprise Cloud y GitHub Enterprise Server 3.0 o superior
GitHub Packages no está disponible para repositorios privados que pertenezcan a cuentas que utilicen planes tradicionales por repositorio. Además, las cuentas que usan planes heredados por repositorio no pueden acceder a los registros que admiten permisos granulares, ya que estas cuentas se facturan por repositorio. Enterprise Managed Users no tienen asignación de almacenamiento individual para publicar paquetes dentro del espacio de nombres de su cuenta, pero pueden publicarse en el espacio de nombres de una organización. Para obtener información adicional sobre Enterprise Managed Users, consulte "Acerca de Enterprise Managed Users". Para obtener la lista de registros que admiten permisos granulares, consulte "Acerca de los permisos para los Paquetes de GitHub". Para más información, consulta "Planes de GitHub".

Los permisos de los paquetes se pueden limitar a un usuario u organización o bien a un repositorio.

Permisos granulares para paquetes con alcance de organización/usuario

Los paquetes con permisos granulares tienen como ámbito una cuenta personal u organización. Puedes cambiar el control de accesos y la visibilidad del paquete de forma separada desde un repositorio que esté conectado (o enlazado) a un paquete.

Los siguientes registros de GitHub Packages admiten permisos detallados.

  • Container registry
  • Registro npm
  • Registro de NuGet
  • Registro de RubyGems

Permisos para los paquetes con alcance de repositorio

Un paquete de ámbito de repositorio hereda los permisos y la visibilidad del repositorio en el que se ha publicado. Puede encontrar un paquete con ámbito de repositorio si va a su página principal y hace clic en el vínculo Paquetes de la parte derecha. Para más información, consulta "Conectar un repositorio a un paquete".

Los siguientes registros de GitHub Packages solo admiten permisos del ámbito de repositorio.

  • Registro de Docker (docker.pkg.github.com)
  • Registro de Apache maven
  • Registro de Gradle

Para demás registros, puedes optar por permitir que los paquetes se limiten a un usuario u organización o bien se vinculen a un repositorio.

Visibilidad y permisos de acceso para paquetes

Si un paquete pertenece a un registro que admite permisos granulares, cualquiera que tenga permisos de administrador en el paquete puede establecer que sea privado o público, y puede conceder permisos de acceso al paquete que son independientes de los permisos establecidos en los niveles de organización y repositorio. Para obtener la lista de registros que admiten permisos granulares, consulta "Acerca de los permisos para los Paquetes de GitHub".

En la mayoría de los registros, para extraer un paquete, debes autenticarte con un personal access token o GITHUB_TOKEN, independientemente de que el paquete sea público o privado. Sin embargo, en los datos Container registry, los paquetes públicos permiten el acceso anónimo y se pueden extraer sin autenticación ni inicio de sesión a través de la CLI.

Nota: Si publicas un paquete vinculado a un repositorio, el paquete hereda sus permisos del repositorio vinculado de manera predeterminada. Para acceder a la configuración de permisos granulares del paquete, debes quitar los permisos heredados del paquete. Si eres el propietario de una organización, puedes deshabilitar la herencia automática de permisos para todos los paquetes nuevos cuyo ámbito sea la organización. Para obtener más información, vea «Configurar la visibilidad y el control de accesos de un paquete» y «Configurar la visibilidad y el control de accesos de un paquete».

Al publicar un paquete, obtendrás automáticamente permisos de administrador para el paquete. Si publicas un paquete en una organización, cualquier persona con el rol owner en la organización también obtiene permisos de administrador para el paquete.

Para paquetes con ámbito en una cuenta personal, puedes otorgar un rol de acceso a cualquier persona. Para paquetes con ámbito en una organización, puedes otorgar un rol de acceso a cualquier persona o equipo en la organización.

Si usa un flujo de trabajo de GitHub Actions para administrar los paquetes, puede conceder un rol de acceso al repositorio en el que se almacena el flujo de trabajo en mediante el botón Agregar repositorio en "Administrar el acceso a acciones" en la configuración del paquete. Para obtener más información, vea «Configurar la visibilidad y el control de accesos de un paquete».

PermisoDescripción del acceso
LecturaPuede descargar el paquete.
Puede leer los metadatos del paquete.
EscrituraPuede cargar y descargar este paquete.
Puede leer y escribir metadatos del paquete.
AdministraciónPuede cargar, descargar, borrar y administrar este paquete.
Puede leer y escribir metadatos del paquete.
Puede conceder permisos de paquete.

Nota: La capacidad de los flujos de trabajo de GitHub Actions para eliminar y restaurar paquetes mediante la API de REST está actualmente en versión preliminar pública y está sujeta a cambios.

Para obtener más información, vea «Configurar la visibilidad y el control de accesos de un paquete».

Administrar paquetes

GitHub Packages solo admite la autenticación mediante un personal access token (classic). Para obtener más información, vea «Administración de tokens de acceso personal».

Para utilizar o administrar un paquete que hospede un registro de paquete, debes utilizar un personal access token (classic) con el alcance adecuado y tu cuenta personal debe tener los permisos adecuados.

Por ejemplo:

  • Para descargar e instalar los paquetes desde un repositorio, el personal access token (classic) debe tener el ámbito read:packages y la cuenta de usuario debe tener permisos de lectura.
  • Para eliminar un paquete en GitHub Enterprise Cloud, el personal access token (classic) debe tener al menos el ámbito delete:packages y read:packages. El ámbito repo también es necesario para los paquetes con ámbito de repositorio. Para obtener más información, vea «Borrar y restablecer un paquete».
ÁmbitoDescripciónPermiso necesario
read:packagesDescarga e instala paquetes de GitHub Packagesleer
write:packagesCarga y publica paquetes en GitHub Packagesescritura
delete:packagesEliminar paquetes de GitHub Packagesadmin
repoCarga y eliminación de paquetes (junto con write:packages, o delete:packages)escritura o admin

Nota: La capacidad de los flujos de trabajo de GitHub Actions para eliminar y restaurar paquetes mediante la API de REST está actualmente en versión preliminar pública y está sujeta a cambios.

Al crear un flujo de trabajo de GitHub Actions, puede usar GITHUB_TOKEN para publicar, instalar, eliminar y restaurar paquetes en GitHub Packages sin necesidad de almacenar y administrar un personal access token.

Para obtener más información, consulta:

Acerca de las transferencias de repositorios

Puedes transferir un repositorio a otra cuenta personal u organización. Para obtener más información, vea «Transferir un repositorio».

Al transferir un repositorio, GitHub puede transferir los paquetes asociados al repositorio, en función del registro al que pertenecen los paquetes.

  • En el caso de los registros que admiten permisos granulares, los paquetes se limitan a una cuenta personal u organización, y la cuenta asociada al paquete no cambia al transferir un repositorio. Si has vinculado un paquete a un repositorio, el vínculo se ha eliminado al transferir el repositorio a otro usuario. Cualquier espacio de código o flujos de trabajo de GitHub Actions asociados al repositorio perderán el acceso al paquete. Si el paquete heredó sus permisos de acceso del repositorio vinculado, los usuarios perderán el acceso al paquete. Para obtener la lista de estos registros, consulta "Permisos granulares para paquetes de ámbito de usuario o organización" más arriba.
  • En el caso de los registros que solo admiten permisos con ámbito de repositorio, los paquetes se publican directamente en los repositorios y GitHub transfiere los paquetes asociados a un repositorio como parte de la transferencia del repositorio. Todo el uso facturable asociado a los paquetes se facturará posteriormente al propietario nuevo del repositorio. Si el propietario del repositorio anterior se quita como colaborador del repositorio, es posible que ya no puedan acceder a los paquetes asociados al repositorio. Para obtener la lista de estos registros, consulte "Permisos para paquetes de ámbito de repositorio" más arriba.

Mantener el acceso a los paquetes en los flujos de trabajo de GitHub Actions

Para garantizar que tus flujos de trabajo mantendrán el acceso a tus paquetes, asegúrate de que estás utilizando el token de acceso correcto en tu flujo de trabajo y de haber habilitado el acceso a las GitHub Actions para tu paquete.

Para obtener más información conceptual sobre GitHub Actions o ejemplos de uso de paquetes en flujos de trabajo, consulta "Administrar los paquetes de GitHub utilizando flujos de trabajo de GitHub Actions".

Tokens de acceso

Nota: La capacidad de los flujos de trabajo de GitHub Actions para eliminar y restaurar paquetes mediante la API de REST está actualmente en versión preliminar pública y está sujeta a cambios.

  • Para publicar, instalar, eliminar y restaurar los paquetes asociados con el repositorio del flujo de trabajo, use GITHUB_TOKEN.
  • Para instalar paquetes asociados con otros repositorios privados a los que GITHUB_TOKEN no puede acceder, usa un personal access token (classic).

Para obtener más información sobre el uso de GITHUB_TOKEN en flujos de trabajo de GitHub Actions, consulta "Autenticación automática de tokens".

Acceso de GitHub Actions para paquetes con permisos granulares

Para asegurarse de que los flujos de trabajo tienen acceso a los paquetes almacenados en registros que admiten permisos granulares, debes conceder a GitHub Actions acceso a los repositorios donde se ejecuta el flujo de trabajo. Puedes encontrar este ajuste en la página de configuración de tu paquete. Para obtener más información, vea «Configurar la visibilidad y el control de accesos de un paquete».