Repositório Docker Nexus - acesso anônimo a artefatos selecionados

Repositório Docker Nexus - acesso anônimo a artefatos selecionados

Caso de uso: permitir puxarselecionado(por exemplo, marcado como *-public) Docker Images anonimamente. Caso contrário, serão necessárias credenciais.

Dado: Nexus 3.52.0 mais recente, ele funciona com docker logincredenciais LDAP e sem problemas.

Testado:

  • Seletor + Privilégio + Função (todos nomeados docker-images-public) > fornecido para usar "anônimo", "Acesso anônimo" habilitado, com o mesmo usuário e domínio de autorização local.
  • Resultado: resposta de erro do daemon: Obtenha https://HOST/v2/infraestrutura/IMAGE/manifests/VERSION-public: nenhuma credencial de autenticação básica Esperado: capacidade de docker extrair imagens, que correspondam ao seletor de conteúdo (por exemplo, ".*-public" )

Além disso, tentei:

  1. habilitando o nível de log TRACE no log

    Resultado: muita saída, mas sem motivo específico para negação (pelo menos não vi). Uma das cordas: 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. sem Nginx na frente (por exemplo, docker pull HOST:5000/IMAGE:VERSION-public, via HTTP)

    Resultado: o mesmo. Motivo: vi respostas do StackOverflow mencionando a modificação do cabeçalho Auth. Queria excluir completamente o Nginx da equação.

  3. seletor simples

    Selector is format == "docker" && ( path == "/v2/" || path =~ ".*public" || path == "/v2/.*") Selector foi modificado em poucas tentativas, incluindo aviso dehttps://stackoverflow.com/questions/43354352/nexus-docker-and-restricting-access-via-content-selector(provavelmente não) No entanto, o erro não é sobre o seletor, pois o erro permanece o mesmo mesmo comformat == "docker" && path =~ ".*"

  4. Dando função anonymousao usuárionx-admin

    Resultado: mesmo erro, então o motivo não está nas anonymouspermissões

  5. Ativando Docker Bearer Token Realm, conformehttps://help.sonatype.com/repomanager3/nexus-repository-administration/formats/docker-registry/docker-authentication

    Resultado: mesmo erro

  6. Habilitando o acesso anônimo no nível do repositório (caixa de seleção "Permitir docker pull anônimo (Docker Bearer Token Realm necessário)")

    Resultado: todo o repositório pode ser acessado anonimamente. Não vai fazer.

A única outra alternativa que vejo aqui é criar um repositório docker separado em uma porta diferente SOMENTE para acesso público anônimo.

Responder1

A parte que faltava era: remover nx-anonymousa função padrão do anonymoususuário, o que permitia extrair todo o repositório.

Em geral, configuração:

  1. Criar seletor format == "docker" && path =~ ".*-public"+ privilégio + função (todos nomeados docker-images-public)
  2. #admin/security/realms – ativarDocker Bearer Token Realm
  3. #admin/repository/repositories:docker-repository, habilite a caixa de seleção Allow anonymous docker pull ( Docker Bearer Token Realm required )para o repositório docker
  4. #admin/segurança/usuários:anônimo
  • remova nx-anonymousa função do usuário anonymous, que concedeu acesso para extrair todas as imagens
  • conceder nova docker-images-publicfunção

informação relacionada