
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 login
credenciais 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:
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'}}
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.
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 =~ ".*"
Dando função
anonymous
ao usuárionx-admin
Resultado: mesmo erro, então o motivo não está nas
anonymous
permissõesAtivando
Docker Bearer Token Realm
, conformehttps://help.sonatype.com/repomanager3/nexus-repository-administration/formats/docker-registry/docker-authenticationResultado: mesmo erro
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-anonymous
a função padrão do anonymous
usuário, o que permitia extrair todo o repositório.
Em geral, configuração:
- Criar seletor
format == "docker" && path =~ ".*-public"
+ privilégio + função (todos nomeadosdocker-images-public
) - #admin/security/realms – ativar
Docker Bearer Token Realm
- #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 - #admin/segurança/usuários:anônimo
- remova
nx-anonymous
a função do usuárioanonymous
, que concedeu acesso para extrair todas as imagens - conceder nova
docker-images-public
função