Pular para o conteúdo
Skillpedia
Imagens e ícones35 mil · #5856

implementing-container-image-minimal-base-with-distroless

Ensina seu agente de IA a gerar imagens, ícones e diagramas e encontrar e corrigir bugs.

O que ela faz

Essa habilidade ajuda a criar imagens de contêiner mais seguras. Ela usa uma base especial chamada 'distroless' que inclui apenas o necessário para sua aplicação rodar, removendo componentes desnecessários que poderiam ser um risco.

Quando usar

  • ✓Ao querer diminuir a área de ataque de seus contêineres.
  • ✓Ao configurar a segurança de aplicações em contêineres.
  • ✓Ao responder a requisitos de segurança ou avaliações.

Exemplo do que pedir para a IA

“Como posso criar uma imagem de contêiner mais segura usando distroless para minha aplicação Go?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/implementing-container-image-minimal-base-with-distroless/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/implementing-container-image-minimal-base-with-distroless/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela funciona usando um processo de duas etapas. Primeiro, a aplicação é compilada. Depois, ela é copiada para uma imagem base mínima 'distroless' que contém apenas o ambiente de execução necessário.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill implementing-container-image-minimal-base-with-distroless

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/implementing-container-image-minimal-base-with-distroless/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Implementando Imagem de Container Mínima Base com Distroless

Visão Geral

Imagens distroless do Google contêm apenas seu aplicativo e suas dependências de tempo de execução, sem gerenciadores de pacotes, shells ou outros programas encontrados em distribuições Linux padrão. Ao eliminar componentes desnecessários do sistema operacional, as imagens distroless alcançam uma redução de até 95% na superfície de ataque em comparação com imagens base tradicionais como ubuntu ou debian. Grandes projetos, incluindo o próprio Kubernetes, Knative e Tekton, usam imagens distroless em produção. A partir de 2025, o Docker também oferece Imagens Endurecidas (DHI) como uma alternativa de código aberto para bases de contêineres mínimas.

Quando Usar

  • Ao implantar ou configurar a implementação de imagem de container mínima base com recursos distroless em seu ambiente
  • Ao estabelecer controles de segurança alinhados aos requisitos de conformidade
  • Ao construir ou melhorar a arquitetura de segurança para este domínio
  • Ao realizar avaliações de segurança que exigem esta implementação

Pré-requisitos

  • Docker 20.10+ ou ferramenta de build de contêiner compatível (Buildah, Kaniko)
  • Conhecimento de Dockerfile multi-stage
  • Aplicação compilada como um binário estático ou com tempo de execução empacotado
  • Registro de contêiner para armazenamento de imagens

Imagens Distroless Disponíveis

Imagem Caso de Uso Tamanho
gcr.io/distroless/static-debian12 Binários compilados estaticamente (Go, Rust) ~2MB
gcr.io/distroless/base-debian12 Binários dinamicamente vinculados que precisam de glibc ~20MB
gcr.io/distroless/cc-debian12 Aplicações C/C++ que precisam de libstdc++ ~25MB
gcr.io/distroless/java21-debian12 Aplicações Java 21 ~220MB
gcr.io/distroless/python3-debian12 Aplicações Python 3 ~50MB
gcr.io/distroless/nodejs22-debian12 Aplicações Node.js 22 ~130MB

Padrões de Build Multi-Stage

Aplicação Go

# Build stage
FROM golang:1.22-bookworm AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /server ./cmd/server

# Runtime stage - static distroless
FROM gcr.io/distroless/static-debian12:nonroot
COPY --from=builder /server /server
USER nonroot:nonroot
ENTRYPOINT ["/server"]

Aplicação Java

# Build stage
FROM maven:3.9-eclipse-temurin-21 AS builder
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:go-offline
COPY src ./src
RUN mvn package -DskipTests

# Runtime stage - Java distroless
FROM gcr.io/distroless/java21-debian12:nonroot
COPY --from=builder /app/target/app.jar /app.jar
USER nonroot:nonroot
ENTRYPOINT ["java", "-jar", "/app.jar"]

Aplicação Python

# Build stage
FROM python:3.12-bookworm AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir --target=/deps -r requirements.txt
COPY . .

# Runtime stage - Python distroless
FROM gcr.io/distroless/python3-debian12:nonroot
WORKDIR /app
COPY --from=builder /deps /deps
COPY --from=builder /app /app
ENV PYTHONPATH=/deps
USER nonroot:nonroot
ENTRYPOINT ["python3", "/app/main.py"]

Aplicação Node.js

# Build stage
FROM node:22-bookworm AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .

# Runtime stage - Node distroless
FROM gcr.io/distroless/nodejs22-debian12:nonroot
WORKDIR /app
COPY --from=builder /app .
USER nonroot:nonroot
CMD ["server.js"]

Benefícios de Segurança

Comparação da Superfície de Ataque

Componente Ubuntu Alpine Distroless
Shell (bash/sh) Sim Sim Não
Gerenciador de pacotes apt apk Não
coreutils Completo BusyBox Não
curl/wget Sim Sim Não
Gerenciamento de usuários Sim Sim Não
CVEs conhecidos (típico) 50-200+ 5-20 0-5
Tamanho da imagem (base) ~77MB ~7MB ~2-20MB

Implicações de Segurança

  • Sem shell: Atacantes não podem executar comandos em contêineres
  • Sem gerenciador de pacotes: Não é possível instalar ferramentas adicionais ou malware
  • Sem coreutils: Sem cat, ls, find, curl para reconhecimento
  • CVEs mínimos: Menos pacotes significam menos vulnerabilidades para corrigir
  • Não root por padrão: A tag :nonroot é executada como UID 65534

Depurando Contêineres Distroless

Como o distroless não tem shell, use estas técnicas para depuração:

Variante de Imagem de Depuração

# Use debug variant in non-production environments only
FROM gcr.io/distroless/base-debian12:debug
# Includes busybox shell at /busybox/sh
# Executar na variante de depuração

…
Perguntas frequentes

O que são imagens 'distroless'?

São imagens de contêiner que contêm apenas sua aplicação e suas dependências de tempo de execução, sem ferramentas extras como shell ou gerenciador de pacotes.

Quais os benefícios de usar 'distroless'?

Reduz drasticamente a superfície de ataque, pois remove componentes que poderiam ter vulnerabilidades conhecidas ou ser usados para explorar o contêiner.

Como depurar um contêiner 'distroless' se não há shell?

Existem técnicas como usar uma variante de depuração da imagem, contêineres de depuração efêmeros no Kubernetes ou ferramentas como Crane e Dive para inspecionar a imagem.

Detalhes

Descrição original do autor

Reduces container attack surface by building application images on Google distroless base images that ship only the application runtime - no shell, package manager, or OS utilities - using multi-stage build patterns plus debugging and scanning techniques adapted to distroless. Use when hardening container images, cutting attack surface in a container architecture, or answering an assessment findin

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#5856
Licença
Apache-2.0
Atualizada em
31/08/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas