Métodos de autenticação

Para se autenticar no Container Registry, você precisa usar o gcloud como auxiliar de credenciais do Docker, conforme descrito abaixo.

Nesta página também são descritos métodos avançados de autenticação.

Antes de começar

Certifique-se de que você:

  1. instalou a versão mais recente do SDK do Cloud, que inclui a ferramenta de linha de comando gcloud;

  2. instalou o Docker.

gcloud como um auxiliar de credenciais do Docker

Para se autenticar no Container Registry, use a gcloud como um auxiliar de credenciais do Docker. Para isso, execute o seguinte comando:

gcloud auth configure-docker

Você precisa executar esse comando uma vez para se autenticar no Container Registry.

É altamente recomendável que você use esse método quando possível. Ele permite o acesso seguro e de curta duração aos recursos do projeto.

Métodos avançados de autenticação

Os métodos avançados nesta página só são recomendados se o uso do gcloud como auxiliar de credenciais do Docker não for ideal e você estiver ciente das implicações de segurança do método avançado.

Os métodos avançados de autenticação são:

Auxiliar de credenciais do Docker independente

É necessário que o Docker tenha acesso ao Container Registry para enviar e receber imagens. Você pode usar a ferramenta auxiliar de credenciais do Docker independente, docker-credential-gcr, para configurar suas credenciais do Container Registry para uso com o Docker.

As credenciais do Container Registry são fornecidas ao auxiliar de credenciais automaticamente ou a partir de uma localização especificada por meio da sinalização --token-source. Em seguida, elas são gravadas no arquivo de configuração do Docker. Dessa maneira, é possível usar a ferramenta de linha de comando docker do Docker para interagir diretamente com o Container Registry.

Para usar o auxiliar de credenciais do Docker:

  1. Faça o download de docker-credential-gcr de uma destas duas maneiras:

    • Com a ferramenta de linha de comando gcloud:

      gcloud components install docker-credential-gcr
      
    • A partir das versões do GitHub de docker-credential-gcr, com a opção de usar o utilitário de linha de comando curl. Por exemplo:

      VERSION=1.5.0
      OS=linux  # or "darwin" for OSX, "windows" for Windows.
      ARCH=amd64  # or "386" for 32-bit OSs
      
      curl -fsSL "https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/download/v${VERSION}/docker-credential-gcr_${OS}_${ARCH}-${VERSION}.tar.gz" \
        | tar xz --to-stdout ./docker-credential-gcr \
        > /usr/bin/docker-credential-gcr && chmod +x /usr/bin/docker-credential-gcr
      
  2. Configure o Docker para usar as credenciais do Container Registry ao interagir com ele. Você só precisa fazer isso uma vez:

    docker-credential-gcr configure-docker
    

Consulte a documentação principal de docker-credential-gcr no GitHub para mais informações.

gcloud docker

Use o comando gcloud docker para injetar as credenciais do Container Registry no cliente do Docker antes de enviar a solicitação ao Docker. Por exemplo, para enviar uma imagem identificada por seu resumo, use o comando:

gcloud docker -- push [HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST]

em que:

  • [HOSTNAME] está listado em Local no console como uma destas quatro opções: gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io;
  • [PROJECT-ID] é o código do projeto do Console do Google Cloud Platform. Se o código do projeto contiver dois pontos (:), veja projetos com escopo de domínio;
  • [IMAGE] é o nome da imagem no Container Registry;
  • [IMAGE_DIGEST] é o valor de hash sha256 do conteúdo da imagem. No console, clique na imagem específica para ver os respectivos metadados. O resumo é listado como Resumo da imagem.

Consulte a documentação do gcloud docker para mais informações.

Token de acesso

Tokens de acesso são tokens de curta duração que fornecem acesso de leitura e gravação aos seus recursos do Google Cloud Platform.

Com o comando gcloud docker, é possível autenticar comandos do Docker passando um token de acesso de curta duração como senha para o Container Registry.

  • Para docker pull e docker search, é preciso que o token de acesso use o escopo devstorage.read_only.
  • Para docker push, é preciso que o token de acesso use o escopo devstorage.read_write.

É possível usar esse mesmo esquema na ausência da ferramenta de linha de comando gcloud criando um token de acesso apropriado, como metadados da instância do Compute Engine.

O acesso concedido por esse token é o mesmo concedido ao usar o comando gcloud docker para autenticação, o que torna essa alternativa o método mais seguro de autenticação.

Para usar um token de acesso, consulte a documentação do Application Default Credentials. Em seguida, use as seguintes credenciais:

Linux / macOS

  • O nome de usuário é oauth2accesstoken.
  • A Senha é o token de acesso. Por exemplo, gcloud auth print-access-token

Por exemplo:

gcloud auth print-access-token | docker login -u oauth2accesstoken --password-stdin https://[HOSTNAME]

em que [HOSTNAME] é gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io.

Ou, para clientes mais antigos do Docker que não são compatíveis com --password-stdin:

docker login -u oauth2accesstoken -p "$(gcloud auth print-access-token)" https://[HOSTNAME]

Windows

  • O nome de usuário é oauth2accesstoken.
  • A senha é o resultado de gcloud auth print-access-token.

Por exemplo:

gcloud auth print-access-token
ya29.8QEQIfY_...

docker login -u oauth2accesstoken -p "ya29.8QEQIfY_..." https://[HOSTNAME]

em que [HOSTNAME] é gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io.

Arquivo de chave JSON

Um arquivo de chave JSON de conta de serviço é uma credencial de longa duração com escopo atribuído a um projeto específico do Console do GCP e aos respectivos recursos.

As contas de serviço criadas automaticamente pelo GCP, como a do Container Registry, recebem o papel Editor com permissão de leitura e gravação no âmbito do projeto. No entanto, convém conceder outras permissões mais específicas da conta de serviço. O documento Como configurar o controle de acesso explica quais papéis podem interagir com o Container Registry.

É possível conceder o acesso da conta de serviço ao registro que contém as imagens do Container Registry.

Como alternativa, se uma conta de serviço for usada somente para extrair e ver imagens, será possível definir o papel para envolvidos no projeto dessa conta como Viewer somente leitura no menu IAM do Console do GCP. No entanto, o papel Viewer tem permissões somente leitura para todo o projeto e respectivos recursos, o que talvez não seja o ideal.

Para usar um arquivo de chave JSON, siga as instruções da conta de serviço na Central de Ajuda do Console do Google Cloud Platform. Em seguida, use as seguintes credenciais:

Linux / macOS

  • O nome de usuário é _json_key (NÃO é o mesmo da conta de serviço).
  • keyfile.json contém a chave JSON da conta de serviço

Por exemplo:

cat keyfile.json | docker login -u _json_key --password-stdin https://[HOSTNAME]

em que [HOSTNAME] é gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io.

Ou, para clientes mais antigos do Docker que não são compatíveis com --password-stdin:

docker login -u _json_key -p "$(cat keyfile.json)" https://[HOSTNAME]

Windows

  • O nome de usuário é _json_key (NÃO é o mesmo da conta de serviço).
  • keyfile.json contém a chave JSON da conta de serviço

Por exemplo:

set /p PASS=<keyfile.json
docker login -u _json_key -p "%PASS%" https://[HOSTNAME]

em que [HOSTNAME] é gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io.

Consulte a documentação sobre contas de serviço para saber mais sobre como configurá-las.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…