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 de docker-credential-gcr no GitHub, 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.

  3. Se você pretende usar o comando docker para enviar ou extrair imagens armazenadas em um projeto diferente do Google Cloud Platform, verifique se as permissões e os escopos de acesso estão configurados corretamente.

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 ID do projeto do Console do Google Cloud Platform; Caso o ID do projeto contenha dois pontos (:), consulte 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.

Se você pretende usar o comando docker para enviar ou extrair imagens armazenadas em um projeto diferente do Google Cloud Platform, verifique se as permissões e os escopos de acesso estão configurados corretamente.

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.

Para mais informações sobre as permissões e escopos da conta de serviço necessários para enviar e extrair imagens, consulte os requisitos para usar o Container Registry com o Google Cloud Platform.

O esquema de autenticação do gcloud docker pode ser usado na ausência da ferramenta de linha de comando gcloud, criando um token de acesso apropriado (como os 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 que é atribuída a um projeto específico e aos respectivos recursos do Console do GCP.

A conta de serviço que você usa para enviar ou extrair imagens precisa estar configurada corretamente, com as permissões e escopo de acesso necessários para interagir com o Container Registry.

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 pai. A conta de serviço padrão do Compute Engine é configurada com acesso somente leitura ao armazenamento dentro do mesmo projeto. Convém conceder outras permissões mais específicas da conta de serviço. Para enviar ou extrair imagens entre projetos, é necessário que a conta de serviço tenha as permissões e escopos de acesso corretos configurados para interagir com o Container Registry.

Para mais informações sobre as permissões e escopos da conta de serviço necessários para enviar e extrair imagens, consulte os requisitos para usar o Container Registry com o Google Cloud Platform.

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 do usuário é _json_key (NÃO é o nome da sua 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 do usuário é _json_key (NÃO é o nome da sua 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.

Como usar o Container Registry com o GCP

As instâncias do Compute Engine e os clusters do Google Kubernetes Engine podem enviar e extrair imagens do Container Registry por push ou pull com base nos escopos do Cloud Storage nas instâncias. Consulte Como usar o Container Registry com o GCP.

As imagens armazenadas no Container Registry podem ser implantadas no ambiente flexível do App Engine.

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

Enviar comentários sobre…

Documentação do Container Registry