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 |
O que o Leavory faz com a credencial
Seção intitulada “O que o Leavory faz com a credencial”- 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.
Escopo mínimo por registry
Seção intitulada “Escopo mínimo por registry”| 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 |
Passo a passo
Seção intitulada “Passo a passo”Docker Hub
Seção intitulada “Docker Hub”- Account settings → Personal access tokens → Generate new token.
- Access permissions: Read-only. Não use Read & Write nem Read, Write, Delete.
- Defina uma data de expiração e gere o token.
- 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.
GitHub Container Registry (ghcr.io)
Seção intitulada “GitHub Container Registry (ghcr.io)”- Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token (classic).
- Marque só
read:packages. Não marquewrite:packages,delete:packagesnemrepo. - Defina uma expiração e gere o token.
- No Image Scan: Username = o usuário do GitHub; Access token = o token.
- Na organização: Robot Accounts → Create Robot Account, com o nome
leavory_image_scan. - Dê permissão Read só nos repositórios que serão escaneados.
- No Image Scan: Username = o nome completo do robot (
<organização>+leavory_image_scan); Access token = o token do robot.
- No projeto que guarda as imagens: Settings → Repository → Deploy tokens → Add token.
- Marque só
read_registrye defina uma data de expiração. - 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.
Azure Container Registry
Seção intitulada “Azure Container Registry”Não use o Admin user do ACR: ele tem acesso total ao registry.
- No ACR: Repository permissions → Scope maps → Add.
- Escolha só os repositórios que serão escaneados e marque, em cada um,
content/reademetadata/read. - Repository permissions → Tokens → Add, com o nome
leavory-image-scane o scope map criado. - Gere uma senha do token com data de expiração.
- 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.
Google Artifact Registry e GCR
Seção intitulada “Google Artifact Registry e GCR”- Crie uma service account dedicada, como
leavory-image-scan. - No repositório do Artifact Registry (não no projeto inteiro), dê a ela o papel Artifact Registry Reader
(
roles/artifactregistry.reader). - Na service account: Keys → Add key → JSON.
- 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.
Trocar ou revogar uma credencial
Seção intitulada “Trocar ou revogar uma credencial”- Crie a credencial nova no registry.
- No Image Scan, salve o login de novo para o mesmo registry: o novo substitui o antigo só depois de passar no teste.
- 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.