Repositorio acoplable Nexus: acceso anónimo a artefactos seleccionados

Repositorio acoplable Nexus: acceso anónimo a artefactos seleccionados

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 logincredenciales 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:

  1. 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'}}

  2. 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.

  3. 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 =~ ".*"

  4. Darle rol anonymousde usuarionx-admin

    Resultado: mismo error, por lo que el motivo no está en anonymouslos permisos.

  5. Activando Docker Bearer Token Realm, segúnhttps://help.sonatype.com/repomanager3/nexus-repository-administration/formats/docker-registry/docker-authentication

    Resultado: mismo error

  6. 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-anonymousla función predeterminada del anonymoususuario, lo que le permitía extraer todo el repositorio.

En general, configuración:

  1. Crear selector format == "docker" && path =~ ".*-public"+ privilegio + rol (todos con nombre docker-images-public)
  2. #admin/seguridad/reinos - activarDocker Bearer Token Realm
  3. #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
  4. #admin/seguridad/usuarios:anónimo
  • eliminar nx-anonymousel rol del usuario anonymous, que otorga acceso para extraer todas las imágenes
  • otorgar nuevo docker-images-publicrol

información relacionada