Pular para o conteúdo

Credenciais de registry

Para escanear uma imagem privada, o Image Scan precisa de um login no registry. Ele só baixa a imagem (pull): nunca envia, altera ou apaga nada. Por isso a credencial deve permitir apenas isso.

Regra Por quê
Só leitura (pull). Nada de push, delete ou admin Se a credencial vazar, ninguém consegue publicar uma imagem adulterada no seu registry
Só os repositórios que serão escaneados, quando o registry permitir Limita o que fica exposto ao que o Leavory realmente precisa
Credencial dedicada ao Leavory, com um nome como leavory-image-scan Dá para revogar sem afetar mais nada e saber de onde veio cada acesso nos logs do registry
Nunca a sua senha pessoal, o usuário admin do registry ou o token que a sua pipeline usa para fazer push Essas credenciais permitem muito mais do que baixar imagens
Com data de validade, quando o registry permitir Uma credencial esquecida para de funcionar sozinha
Revogue quando tirar o registry do Image Scan Credencial que ninguém usa é só risco
  • Testa o login antes de salvar. Se o registry recusar, nada é guardado.
  • Guarda a senha ou o token cifrado. A tela nunca mostra o valor de novo.
  • Usa a credencial só para baixar as imagens que você cadastrou, no scan inicial, no scan diário e no Rescan.
Registry Credencial Escopo mínimo Dá para limitar a repositórios?
Docker Hub Personal access token Read-only Não no token pessoal; sim no organization access token (planos Team e Business)
GitHub (ghcr.io) Personal access token (classic) só read:packages Não: lê todos os pacotes que o usuário enxerga. Use um usuário de máquina
Quay Robot account Read Sim, por repositório
GitLab Deploy token só read_registry Sim: crie no projeto, não no grupo
Azure Container Registry Token content/read + metadata/read Sim, com um scope map próprio
Google Artifact Registry / GCR Chave JSON de service account papel Artifact Registry Reader Sim: dê o papel no repositório, não no projeto
  1. Account settings → Personal access tokens → Generate new token.
  2. Access permissions: Read-only. Não use Read & Write nem Read, Write, Delete.
  3. Defina uma data de expiração e gere o token.
  4. No Image Scan: Username = seu usuário do Docker Hub; Access token = o token.

Se a sua empresa tem Docker Team ou Business, prefira um organization access token com leitura só nos repositórios que serão escaneados.

  1. Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token (classic).
  2. Marque só read:packages. Não marque write:packages, delete:packages nem repo.
  3. Defina uma expiração e gere o token.
  4. No Image Scan: Username = o usuário do GitHub; Access token = o token.
  1. Na organização: Robot Accounts → Create Robot Account, com o nome leavory_image_scan.
  2. Dê permissão Read só nos repositórios que serão escaneados.
  3. No Image Scan: Username = o nome completo do robot (<organização>+leavory_image_scan); Access token = o token do robot.
  1. No projeto que guarda as imagens: Settings → Repository → Deploy tokens → Add token.
  2. Marque só read_registry e defina uma data de expiração.
  3. No Image Scan: Username = o usuário gerado do deploy token; Access token = o token.

Prefira o deploy token do projeto. Um deploy token de grupo lê o registry de todos os projetos do grupo.

Não use o Admin user do ACR: ele tem acesso total ao registry.

  1. No ACR: Repository permissions → Scope maps → Add.
  2. Escolha só os repositórios que serão escaneados e marque, em cada um, content/read e metadata/read.
  3. Repository permissions → Tokens → Add, com o nome leavory-image-scan e o scope map criado.
  4. Gere uma senha do token com data de expiração.
  5. No Image Scan: Username = o nome do token; Access token = a senha gerada.

O scope map pronto _repositories_pull também é só leitura, mas vale para todos os repositórios do registry. Use-o só se todos devem ser escaneados.

  1. Crie uma service account dedicada, como leavory-image-scan.
  2. No repositório do Artifact Registry (não no projeto inteiro), dê a ela o papel Artifact Registry Reader (roles/artifactregistry.reader).
  3. Na service account: Keys → Add key → JSON.
  4. No Image Scan: Username = _json_key; Password = o conteúdo inteiro do arquivo JSON.

A chave JSON não expira sozinha. Anote a data e troque a chave periodicamente.

  1. Crie a credencial nova no registry.
  2. No Image Scan, salve o login de novo para o mesmo registry: o novo substitui o antigo só depois de passar no teste.
  3. Revogue a credencial antiga no registry.

Para deixar de escanear imagens de um registry, remova o login no Image Scan e revogue a credencial no registry.