
使用例: プルを許可する選択された(例: としてタグ付け*-public
) Docker イメージを匿名で実行します。それ以外の場合は認証情報が必要です。
最新の Nexus 3.52.0 では、docker login
問題なく LDAP 認証情報で動作します。
試したこと:
- セレクター + 権限 + ロール (すべて docker-images-public という名前) > 同じユーザーとローカル認証レルムで、「匿名」を使用するように付与され、「匿名アクセス」が有効になります。
- 結果: デーモンからのエラー応答: https://HOST/v2/infrastructure/IMAGE/manifests/VERSION-public を取得: 基本認証資格情報がありません 期待されるもの: コンテンツ セレクターに一致するイメージを docker pull する機能 (例: ".*-public")
さらに試したこと:
ログで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'}}
Nginx を前面に使用しない (例: docker pull HOST:5000/IMAGE:VERSION-public、HTTP 経由)
結果: 同じ。理由: Auth ヘッダーの変更について言及している StackOverflow の回答を見た。方程式から Nginx を完全に除外したかった。
セレクタの単純化
セレクタは、
format == "docker" && ( path == "/v2/" || path =~ ".*public" || path == "/v2/.*")
セレクタは、からのアドバイスを含むいくつかの試みで変更されましたhttps://stackoverflow.com/questions/43354352/nexus-docker-and-restricting-access-via-content-selector(おそらくそうではない)しかし、エラーはセレクタに関するものではなく、format == "docker" && path =~ ".*"
anonymous
ユーザーにnx-admin
役割を与えるanonymous
結果: 同じエラーなので、権限に原因はありませんDocker Bearer Token Realm
に従ってアクティブ化します https://help.sonatype.com/repomanager3/nexus-repository-administration/formats/docker-registry/docker-authentication結果: 同じエラー
リポジトリ レベルで匿名アクセスを有効にする (チェックボックス「匿名の docker pull を許可する (Docker Bearer Token Realm が必要)」)
結果: リポジトリ全体に匿名でアクセスできます。これは行いません。
ここで私が見つけた唯一の代替案は、パブリック匿名アクセス専用に、異なるポートに別の Docker リポジトリを作成することです。
答え1
不足していた部分は、リポジトリ全体をプルできるようにする、ユーザーnx-anonymous
からのデフォルトのロールの削除でした。anonymous
一般的な構成:
- セレクター
format == "docker" && path =~ ".*-public"
+ 権限 + ロール (すべて名前付きdocker-images-public
)の作成 - #admin/security/realms - 有効化
Docker Bearer Token Realm
- #admin/repository/repositories:docker-repository、
Allow anonymous docker pull ( Docker Bearer Token Realm required )
dockerリポジトリのチェックボックスを有効にする - #管理者/セキュリティ/ユーザー:匿名
- すべてのイメージをプルするアクセス権を付与した
nx-anonymous
ユーザーからロールを削除します。anonymous
- 新しい
docker-images-public
役割を付与する