Nexus Docker リポジトリ - 選択された成果物への匿名アクセス

Nexus Docker リポジトリ - 選択された成果物への匿名アクセス

使用例: プルを許可する選択された(例: としてタグ付け*-public) Docker イメージを匿名で実行します。それ以外の場合は認証情報が必要です。

最新の Nexus 3.52.0 では、docker login問題なく LDAP 認証情報で動作します。

試したこと:

  • セレクター + 権限 + ロール (すべて docker-images-public という名前) > 同じユーザーとローカル認証レルムで、「匿名」を使用するように付与され、「匿名アクセス」が有効になります。
  • 結果: デーモンからのエラー応答: https://HOST/v2/infrastructure/IMAGE/manifests/VERSION-public を取得: 基本認証資格情報がありません 期待されるもの: コンテンツ セレクターに一致するイメージを docker pull する機能 (例: ".*-public")

さらに試したこと:

  1. ログでTRACEログレベルを有効にする

    結果: 出力は多いが、拒否の具体的な理由がない (少なくとも私が見た限りでは)。文字列の 1 つ: 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. Nginx を前面に使用しない (例: docker pull HOST:5000/IMAGE:VERSION-public、HTTP 経由)

    結果: 同じ。理由: Auth ヘッダーの変更について言及している StackOverflow の回答を見た。方程式から Nginx を完全に除外したかった。

  3. セレクタの単純化

    セレクタは、format == "docker" && ( path == "/v2/" || path =~ ".*public" || path == "/v2/.*") セレクタは、からのアドバイスを含むいくつかの試みで変更されましたhttps://stackoverflow.com/questions/43354352/nexus-docker-and-restricting-access-via-content-selector(おそらくそうではない)しかし、エラーはセレクタに関するものではなく、format == "docker" && path =~ ".*"

  4. anonymousユーザーにnx-admin役割を与える

    anonymous結果: 同じエラーなので、権限に原因はありません

  5. Docker Bearer Token Realmに従ってアクティブ化します https://help.sonatype.com/repomanager3/nexus-repository-administration/formats/docker-registry/docker-authentication

    結果: 同じエラー

  6. リポジトリ レベルで匿名アクセスを有効にする (チェックボックス「匿名の docker pull を許可する (Docker Bearer Token Realm が必要)」)

    結果: リポジトリ全体に匿名でアクセスできます。これは行いません。

ここで私が見つけた唯一の代替案は、パブリック匿名アクセス専用に、異なるポートに別の Docker リポジトリを作成することです。

答え1

不足していた部分は、リポジトリ全体をプルできるようにする、ユーザーnx-anonymousからのデフォルトのロールの削除でした。anonymous

一般的な構成:

  1. セレクター format == "docker" && path =~ ".*-public"+ 権限 + ロール (すべて名前付きdocker-images-public)の作成
  2. #admin/security/realms - 有効化Docker Bearer Token Realm
  3. #admin/repository/repositories:docker-repository、Allow anonymous docker pull ( Docker Bearer Token Realm required )dockerリポジトリのチェックボックスを有効にする
  4. #管理者/セキュリティ/ユーザー:匿名
  • すべてのイメージをプルするアクセス権を付与したnx-anonymousユーザーからロールを削除します。anonymous
  • 新しいdocker-images-public役割を付与する

関連情報