En esta guía de estudio veremos los Roles y Permisos en Nexus Repository, donde explicaremos cada uno y mencionaremos la documentación oficioal
Conceptos Fundamentales
Seguridad en Nexus
Nexus Repository utiliza un modelo de control de acceso basado en roles (RBAC) para brindar acceso a funcionalidades específicas para autenticar a los usuarios.
- Privileges (privilegios específicos): Nexus Repistory viene con un conjunto predeterminado de permisos o privilegios para cada característica y función. Estos cubren los casos de uso de la mayoría de las implementaciones. Se pueden crear privilegios personalizados para un grupo de privilegios juntos o para limitarlos a una ubicación específica en un repositorio.
- Roles: Los roles son una forma de agrupar permisos relacionados para que puedan asignarse fácilmente a los usuarios. Piense en ello como un puesto de trabajo o un conjunto de responsabilidades dentro de un sistema u organización. Los roles pueden asignarse a usuarios específicos, pero la mayoría de las veces representan un grupo de usuarios. A un usuario se le puede asignar cualquier número de roles.
- Usuarios: Los usuarios son individuos o sistemas que interactúan con la aplicación Nexus Repository a través de la interfaz de usuario web o la API REST. La mayoría de los usuarios se conectan a Nexus Repository a través de su sistema de gestión de paquetes durante el desarrollo.
La relación es jerárquica:
Permisos → Roles → Usuarios
Un usuario no recibe permisos directamente (en buenas prácticas), sino a través de roles.
Modelo Mental Correcto
Piensa así:
| Nivel | Qué define | Ejemplo |
|---|---|---|
| Privilege | Acción concreta | "read maven-releases" |
| Role | Agrupación lógica | "backend-developer" |
| User | Persona o servicio | "oscar.dev" |
¿Qué es un Privilege en Nexus?
Un privilege define una acción específica sobre un recurso específico.
Ejemplos:
- Leer un repositorio Maven
- Subir artefactos a un repositorio
- Administrar repositorios
- Ver logs
- Administrar usuarios
Acciones privilegiadas
Las acciones de privilegio son las operaciones básicas que se pueden realizar en el contenido de un repositorio.
*(asterisco): Esta acción es un comodín que agrupa las acciones disponibles.add:Acción para agregar contenido a un repositorio.browse:Acción para ver el contenido de los repositorios en la interfaz de usuario o una búsqueda. No puedes descargar ni abrir el contenido con la acción de exploración.create:Acción para crear un nuevo 'elemento' en la configuración del administrador de repositorios. Normalmente asociado con el tipo de privilegio de la aplicación. Tenga en cuenta que esta acción no proporciona permisos para ver los elementos creados después de crearlos.delete:Acción para eliminar configuraciones del administrador de repositorios, contenidos del repositorio y scripts.edit:Acción para modificar el contenido del repositorio y cambiar la configuración del repositorio.read:Acción para descargar contenido de un repositorio. Tenga en cuenta que esto no permite al usuario explorar el contenido del repositorio.- Esta acción se utiliza para ver elementos de la aplicación desde la interfaz de usuario y acceder al contenido de las API.
update:Acción para actualizar las configuraciones del administrador de repositorios a través de la interfaz de usuario y las API.
Tipos principales de Privileges
Documentación de los tipos de privilegios
- Application: Privilegios integrados que controlan el acceso a las funciones de la interfaz de usuario.
- Repository Admin: Controlar la administración de la configuración para repositorios o formatos de repositorio específicos.
- Repository Content Selector: Los privilegios del selector de contenido del repositorio proporcionan un control detallado sobre el acceso al contenido dentro de un repositorio a través de un selector de contenido.
- Repository View: Los privilegios de vista de repositorio controlan el acceso general a todo el contenido contenido dentro de repositorios o formatos de repositorio específicos.
- Script: Los privilegios de script controlan el acceso al uso de las API REST relacionadas con Groovy Script. Estos privilegios no controlan el acceso general a la API REST.
- Wildcard: Los privilegios comodín permiten crear una cadena de privilegios utilizando una serie de segmentos de forma libre.
¿Qué es un Role?
Un Role agregan privilegios en un contexto relacionado y, a su vez, pueden agruparse para crear roles más complejos.
Ejemplo conceptual:
Role: developer
- browse repo-maven-releases
- read repo-maven-releases
- add repo-maven-snapshots
Acciones con los roles
- https://help.sonatype.com/en/roles.html#creating-roles
- https://help.sonatype.com/en/roles.html#managing-roles
- https://help.sonatype.com/en/roles.html#deleting-roles
Roles Integrados por Defecto
Nexus trae roles preconfigurados, por ejemplo:
- nx-admin (administrador total)
- nx-developer
- nx-anonymous
- nx-deployment
⚠️ Buenas prácticas: Nunca uses nx-admin para pipelines o desarrolladores.
¿Qué son los usuarios en Nexus?
Nexus Repository determina los usuarios que pueden acceder al servidor a través de varios ámbitos de seguridad y proveedores de identidad.
El repositorio Nexus incluye dos usuarios en el ámbito local de forma predeterminada. Estos son los admin y anonymous usuarios
- Usuario administrador: tiene privilegios administrativos completos
- Usuario anónimo: Este usuario otorga acceso y privilegios a cualquier persona no autenticada en el servidor
Tipos de repositorios y permisos
En Nexus Repository, los permisos se aplican por repositorio y por formato:
- maven2
- npm
- docker
- raw
- proxy
- hosted
- group
Un privilege típico tiene esta estructura: nx-repository-view-<format>-<repo>-<action>
Ejemplo real: nx-repository-view-maven2-maven-releases-read
Eso significa:
- formato: maven2
- repositorio: maven-releases
- acción: read
Buenas prácticas en entornos reales
Separar roles por función
Ejemplo:
- role-dev-read
- role-dev-deploy-snapshot
- role-ci-deploy-release
- role-admin-repo
Separar SNAPSHOT y RELEASE
- Developers → pueden subir a snapshots
- Solo CI/CD → puede subir a releases
Esto evita:
- Versiones sobrescritas
- Releases no controlados
Usar cuentas de servicio para CI/CD
Si usas Jenkins, GitLab o GitHub Actions:
- Crea usuario técnico
- Asigna rol mínimo necesario