
Caso de uso: permitir tirarseleccionado(por ejemplo, etiquetado como *-public
) Imágenes de Docker de forma anónima. De lo contrario, se requieren credenciales.
Dado: último Nexus 3.52.0, funciona con docker login
credenciales LDAP y sin problemas.
Intentó:
- Selector + Privilegio + Rol (todos llamados docker-images-public) > dado para usar "anónimo", "Acceso anónimo" habilitado, con el mismo usuario y Reino de autorización local.
- Resultado: respuesta de error del demonio: obtener https://HOST/v2/infrastructure/IMAGE/manifests/VERSION-public: no hay credenciales de autenticación básicas. Se espera: capacidad para extraer imágenes de la ventana acoplable que coincidan con el selector de contenido (por ejemplo, ".*-public" )
Probé además:
habilitando el nivel de registro TRACE en el registro
Resultado: muchos resultados, pero sin un motivo específico para el rechazo (al menos yo no lo vi). Una de cuerdas:
DEBUG [qtp194038341-106] *UNKNOWN org.sonatype.nexus.repository.view.Router - Response: Response{status=Status{successful=false, code=401, message='null'}, payload=StringPayload{size=113, charset=UTF-8, contentType='application/json'}}
sin Nginx al frente (por ejemplo, Docker pull HOST:5000/IMAGE:VERSION-public, a través de HTTP)
Resultado: mismo. Motivo: se han visto respuestas de StackOverflow que mencionan la modificación del encabezado de autenticación. Quería excluir completamente a Nginx de la ecuación.
selector simplificador
Selector is
format == "docker" && ( path == "/v2/" || path =~ ".*public" || path == "/v2/.*")
Selector se modificó en algunos intentos, incluidos los consejos dehttps://stackoverflow.com/questions/43354352/nexus-docker-and-restricting-access-via-content-selector(lo más probable es que no) Sin embargo, el error no se trata del selector, ya que el error permanece igual incluso conformat == "docker" && path =~ ".*"
Darle rol
anonymous
de usuarionx-admin
Resultado: mismo error, por lo que el motivo no está en
anonymous
los permisos.Activando
Docker Bearer Token Realm
, segúnhttps://help.sonatype.com/repomanager3/nexus-repository-administration/formats/docker-registry/docker-authenticationResultado: mismo error
Habilitar el acceso anónimo en el nivel del repositorio (casilla de verificación "Permitir extracción anónima de Docker (se requiere Docker Bearer Token Realm)")
Resultado: se puede acceder a todo el repositorio de forma anónima. No lo hará.
La única otra alternativa que veo aquí es crear un repositorio acoplable separado en un puerto diferente SÓLO para acceso público anónimo.
Respuesta1
La parte que faltaba era: eliminar nx-anonymous
la función predeterminada del anonymous
usuario, lo que le permitía extraer todo el repositorio.
En general, configuración:
- Crear selector
format == "docker" && path =~ ".*-public"
+ privilegio + rol (todos con nombredocker-images-public
) - #admin/seguridad/reinos - activar
Docker Bearer Token Realm
- #admin/repository/repositories:docker-repository, active la casilla de verificación
Allow anonymous docker pull ( Docker Bearer Token Realm required )
para el repositorio de Docker - #admin/seguridad/usuarios:anónimo
- eliminar
nx-anonymous
el rol del usuarioanonymous
, que otorga acceso para extraer todas las imágenes - otorgar nuevo
docker-images-public
rol