Nexus Docker-Repository – anonymer Zugriff auf ausgewählte Artefakte

Nexus Docker-Repository – anonymer Zugriff auf ausgewählte Artefakte

Anwendungsfall: Ziehen zulassenausgewählt(z. B. markiert als *-public) Docker-Images anonym. Andernfalls sind Anmeldeinformationen erforderlich.

Gegeben: neuestes Nexus 3.52.0, es funktioniert docker loginohne Probleme mit LDAP-Anmeldeinformationen.

Versucht:

  • Selektor + Berechtigung + Rolle (alle mit dem Namen „docker-images-public“) > zur Verwendung „anonym“, „Anonymer Zugriff“ aktiviert, mit demselben Benutzer und lokalem Autorisierungsbereich.
  • Ergebnis: Fehlerantwort vom Daemon: Get https://HOST/v2/infrastructure/IMAGE/manifests/VERSION-public: keine grundlegenden Authentifizierungsdaten. Erwartet: Möglichkeit zum Docker-Pull von Images, die dem Inhaltsselektor entsprechen (z. B. „.*-public“).

Zusätzlich versucht:

  1. Aktivieren der TRACE-Protokollebene im Protokoll

    Ergebnis: eine Menge Ausgabe, aber ohne konkreten Grund für die Ablehnung (zumindest habe ich keinen gesehen). Einer der Strings: 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. ohne Nginx davor (zB docker pull HOST:5000/IMAGE:VERSION-public, über HTTP)

    Ergebnis: dasselbe. Grund: Habe Antworten von StackOverflow gesehen, in denen die Änderung des Auth-Headers erwähnt wird. Wollte Nginx vollständig aus der Gleichung ausschließen.

  3. Vereinfachender Selektor

    Selector ist format == "docker" && ( path == "/v2/" || path =~ ".*public" || path == "/v2/.*") Selector wurde in mehreren Versuchen geändert, einschließlich Ratschlägen vonhttps://stackoverflow.com/questions/43354352/nexus-docker-and-restricting-access-via-content-selector(höchstwahrscheinlich nicht) Der Fehler liegt jedoch nicht am Selektor, da der Fehler auch beiformat == "docker" && path =~ ".*"

  4. anonymousBenutzerrolle zuweisennx-admin

    Ergebnis: derselbe Fehler, der Grund liegt also nicht in anonymousden Berechtigungen

  5. Aktivieren Docker Bearer Token Realmgemäßhttps://help.sonatype.com/repomanager3/nexus-repository-administration/formats/docker-registry/docker-authentication

    Ergebnis: gleicher Fehler

  6. Anonymen Zugriff auf Repository-Ebene aktivieren (Kontrollkästchen „Anonymen Docker Pull zulassen (Docker Bearer Token Realm erforderlich)“)

    Ergebnis: Auf das gesamte Repository kann anonym zugegriffen werden. Wird NICHT gemacht.

Die einzige andere Alternative, die ich hier sehe, ist die Erstellung eines separaten Docker-Repository auf einem anderen Port NUR für den öffentlichen anonymen Zugriff.

Antwort1

Der fehlende Teil war: Die Standardrolle nx-anonymousdes anonymousBenutzers wurde entfernt, wodurch das gesamte Repository abgerufen werden konnte.

Generelle Konfiguration:

  1. Selector format == "docker" && path =~ ".*-public"+ Privileg + Rolle erstellen (alle benannt docker-images-public)
  2. #admin/security/realms - aktivierenDocker Bearer Token Realm
  3. #admin/repository/repositories:docker-repository, Kontrollkästchen Allow anonymous docker pull ( Docker Bearer Token Realm required )für Docker-Repository aktivieren
  4. #admin/Sicherheit/Benutzer:anonymous
  • Entfernen Sie nx-anonymousdie Rolle des Benutzers anonymous, der den Zugriff zum Abrufen aller Bilder gewährt hat.
  • neue docker-images-publicRolle gewähren

verwandte Informationen