performing-container-image-hardening
Ensina seu agente de IA a gerar imagens, ícones e diagramas e colocar projetos no ar e cuidar da infraestrutura.
O que ela faz
Este processo torna suas imagens de contêiner mais seguras, removendo partes desnecessárias e configurando-as para rodar com menos privilégios. O resultado são imagens menores e mais difíceis de serem exploradas por hackers.
Quando usar
- ✓Ao criar imagens para produção.
- ✓Quando regras de segurança exigem conformidade com o CIS Docker Benchmark.
- ✓Para reduzir o tamanho da imagem e diminuir riscos.
Exemplo do que pedir para a IA
“Como posso tornar minhas imagens de contêiner mais seguras?”
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
Mensagem pronta para colar
Como funciona
Ele funciona usando técnicas como 'multi-stage builds' para incluir apenas o necessário, rodando como um usuário sem privilégios e configurando o sistema de arquivos para não ser modificado. Ferramentas de verificação garantem que as melhores práticas de segurança foram aplicadas.
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 performing-container-image-hardeningOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/performing-container-image-hardening/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Endurecimento de Imagens de Container
Quando Usar
- Ao construir imagens de container para produção que precisam de uma superfície de ataque mínima
- Quando a conformidade exige a adesão ao CIS Docker Benchmark para configurações de container
- Ao reduzir o tamanho da imagem para minimizar a exposição a vulnerabilidades de pacotes não utilizados
- Ao implementar defesa em profundidade para cargas de trabalho em container
- Ao migrar de imagens base "gordas" para imagens distroless ou mínimas
Não use para monitoramento de segurança de containers em tempo de execução (use Falco), para endurecimento do daemon Docker no nível do host (use verificações de host do CIS Docker Benchmark) ou para segurança de orquestração de containers (use escaneamento de segurança do Kubernetes).
Pré-requisitos
- Docker ou BuildKit para builds multi-stage
- Opções de imagem base: distroless, Alpine, slim ou scratch
- Ferramenta de escaneamento de container (Trivy) para validação
- Referência do CIS Docker Benchmark
Fluxo de Trabalho
Passo 1: Use Builds Multi-Stage para Minimizar o Tamanho da Imagem
# Build stage with all dependencies
FROM python:3.12-bookworm AS builder
WORKDIR /build
COPY requirements.txt .
RUN pip install --no-cache-dir --prefix=/install -r requirements.txt
COPY src/ ./src/
RUN python -m compileall src/
# Production stage with minimal base
FROM python:3.12-slim-bookworm AS production
RUN apt-get update && \
apt-get install -y --no-install-recommends libpq5 && \
rm -rf /var/lib/apt/lists/* && \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
COPY --from=builder /install /usr/local
COPY --from=builder /build/src /app/src
RUN groupadd -r appuser && useradd -r -g appuser -d /app -s /sbin/nologin appuser
RUN chown -R appuser:appuser /app
USER appuser
WORKDIR /app
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8080/health')" || exit 1
EXPOSE 8080
ENTRYPOINT ["python", "-m", "src.main"]
Passo 2: Use Imagens Base Distroless
# Go application with distroless
FROM golang:1.22 AS builder
WORKDIR /app
COPY go.* ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -o /server .
FROM gcr.io/distroless/static-debian12:nonroot
COPY --from=builder /server /server
USER nonroot:nonroot
ENTRYPOINT ["/server"]
Passo 3: Remova Componentes Desnecessários
# Hardened image checklist
FROM ubuntu:24.04 AS base
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
libssl3 && \
# Remove package manager to prevent runtime package installation
apt-get purge -y --auto-remove apt dpkg && \
rm -rf /var/lib/apt/lists/* \
/var/cache/apt/* \
/tmp/* \
/var/tmp/* \
/usr/share/doc/* \
/usr/share/man/* \
/usr/share/info/* \
/root/.cache
# Remove shells if not needed
RUN rm -f /bin/sh /bin/bash /usr/bin/sh 2>/dev/null || true
# Remove setuid/setgid binaries
RUN find / -perm /6000 -type f -exec chmod a-s {} + 2>/dev/null || true
Passo 4: Configure o Sistema de Arquivos Somente Leitura
# Kubernetes deployment with read-only root filesystem
apiVersion: apps/v1
kind: Deployment
metadata:
name: hardened-app
spec:
template:
spec:
securityContext:
runAsNonRoot: true
runAsUser: 65534
fsGroup: 65534
seccompProfile:
type: RuntimeDefault
containers:
- name: app
image: app:hardened
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
volumeMounts:
- name: tmp
mountPath: /tmp
- name: cache
mountPath: /app/cache
volumes:
- name: tmp
emptyDir:
sizeLimit: 100Mi
- name: cache
emptyDir:
sizeLimit: 50Mi
Passo 5: Fixe a Imagem Base por Digest
# Pin to exact image digest for reproducibility
FROM python:3.12-slim-bookworm@sha256:abcdef1234567890 AS production
# This ensures the exact same base image is used every time
Passo 6: Valide o Endurecimento com Escaneamento Automatizado
# Escaneia a imagem endurecida com Trivy
trivy image --severity HIGH,CRITICAL hardened-app:latest
# Verifica a conformidade com o CIS Docker Benchmark
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
aquasec/docker-bench-security
…
Perguntas frequentes
O que são 'multi-stage builds'?
É uma forma de construir imagens de contêiner em etapas, onde uma etapa prepara o que é necessário e a etapa final cria a imagem com apenas o código e as dependências essenciais, tornando-a menor e mais segura.
Por que rodar como 'non-root user'?
Rodar como um usuário sem privilégios (não-root) limita o que um invasor pode fazer caso consiga comprometer o contêiner, diminuindo o risco de danos maiores ao sistema.
O que é o CIS Docker Benchmark?
É um conjunto de recomendações e melhores práticas para configurar e proteger o Docker, garantindo que ele esteja o mais seguro possível contra ataques.
Detalhes
Descrição original do autor
Harden container images by minimizing attack surface, stripping unnecessary packages, implementing multi-stage builds, configuring non-root users, and applying CIS Docker Benchmark recommendations to produce secure, production-ready images. Use when building production container images, when compliance requires CIS Docker Benchmark adherence, or when shrinking image size to reduce vulnerability ex
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #6045
- Licença
- Apache-2.0
- Atualizada em
- 31/08/2026
Comentários
- …
Mais skills deste repositório
abusing-dpapi-for-credential-access
Dá ao seu agente de IA instruções prontas para uma tarefa específica, para ele fazer melhor e mais rápido.
mukul975/Anthropic-Cybersecurity-Skills
abusing-shadow-credentials-for-privesc
Ensina seu agente de IA a escrever textos claros e bem estruturados.
mukul975/Anthropic-Cybersecurity-Skills
achieving-cmmc-level-2-compliance
Ajuda seu agente a preparar um ambiente para conformidade com CMMC Nível 2. Ele implementa requisitos de segurança e gerencia a documentação necessária.
mukul975/Anthropic-Cybersecurity-Skills
acquiring-disk-image-with-dd-and-dcfldd
Ajuda seu agente a criar cópias exatas de discos rígidos. Isso é útil para garantir que nenhuma informação seja perdida ou alterada durante investigações.
mukul975/Anthropic-Cybersecurity-Skills
Skills parecidas
django-security
Ajuda seu agente a implementar práticas de segurança em aplicações Django. Ele foca em autenticação, autorização e prevenção contra ataques comuns, garantindo um código mais seguro.
affaan-m/ECC
laravel-security
Ajuda seu agente a proteger aplicações Laravel contra ameaças. Implementa práticas de segurança para autenticação, autorização e prevenção de ataques comuns.
affaan-m/ECC
module-regression
Ajuda seu agente a gerenciar mudanças em projetos grandes. Garante que alterações em uma parte do código não quebrem outras partes.
affaan-m/ECC