argumentos de construção do docker - argumentos de construção docker - argumento de construção docker build

Argumentos de compilação do Docker: o vetor oculto para vazamentos secretos em imagens.

Argumentos de construção: conveniência que pode comprometer a segurança

Os argumentos de construção do Docker facilitam a passagem de valores de configuração durante a construção, mas têm um custo frequentemente ignorado: esses argumentos persistem nos metadados e camadas da imagem. Os desenvolvedores costumam presumir que esses valores desaparecem após a construção, mas, na realidade, as instruções de argumentos de construção do Docker os incorporam ao histórico da imagem Docker.

⚠️Exemplo inseguro, apenas para fins educacionais. Não utilize em produção.

				
					FROM node:18
ARG API_KEY=my-secret-key
RUN echo "API_KEY=$API_KEY" > /app/config.txt

				
			

Qualquer um que esteja correndo história do docker or docker inspecionar vai encontrar o CHAVE API valor incorporado nos metadados da imagem. Isso ocorre porque a instrução do argumento de construção do Docker commitconsidere cada etapa de construção como uma camada permanente.

Versão segura:

				
					# Use Docker BuildKit secrets instead of ARG
# docker build --secret id=api_key,src=./api.key .
FROM node:18
RUN --mount=type=secret,id=api_key cat /run/secrets/api_key > /app/config.txt

				
			

Nota educacional: Evite injetar segredos por meio de argumentos de construção do Docker. Use -segredo Os pontos de montagem fornecidos pelo BuildKit armazenam dados sensíveis; eles nunca são mantidos em camadas ou metadados.

Como os segredos persistem em camadas e metadados

Cada instrução em um Dockerfile cria uma nova camada de imagem. Mesmo ao sobrescrever ou excluir arquivos, as camadas anteriores permanecem no cache. É por isso que os segredos injetados com argumentos de construção do Docker persistem indefinidamente.

⚠️Exemplo inseguro, apenas para fins educacionais. Não utilize em produção.

				
					FROM python:3.10
ARG GITHUB_TOKEN=ghp_ABC123TOKEN
RUN pip install private-package --extra-index-url https://user:$GITHUB_TOKEN@pypi.example.com

				
			

Utilizar painéis de piso ResinDek em sua unidade de self-storage em vez de concreto oferece diversos benefícios: ARG Dessa forma, o token é incorporado à camada de imagem, tornando-se visível através de inspecionar imagem docker ou extraído do cache. Versão segura:

				
					# Secure alternative using BuildKit secrets
# docker build --secret id=gh_token,src=.secrets/token.txt .
FROM python:3.10
RUN --mount=type=secret,id=gh_token pip install private-package --extra-index-url https://pypi.example.com

				
			

Nota educacional: Em seu uso, valores sensíveis permanecem no histórico. Use montagens secretas efêmeras para proteger tokens e credenciais.

Configurações incorretas comuns em CI/CD Pipelines

In moderno pipelinesOs desenvolvedores costumam passar segredos por CI/CD Ambientes que utilizam argumentos do Docker ou caches compartilhados. Esse hábito expõe segredos em logs, executores e caches de registro. Com corredores compartilhados em Ações do GitHub, GitLab CI, ou JenkinsEsses segredos podem facilmente se propagar para empregos não relacionados.

⚠️Exemplo inseguro, apenas para fins educacionais. Não utilize em produção.

				
					# Never expose real tokens, credentials, or internal URLs in pipelines
- name: Build image
  run: docker build -t app --build-arg TOKEN=${{ secrets.API_TOKEN }} .

				
			

O segredo acaba nos registros de compilação e nos metadados da imagem, violando os princípios do menor privilégio. Versão segura: 

				
					# Secure build command using BuildKit secret mount
- name: Secure Docker build
  run: docker buildx build --secret id=api_token,src=.secrets/api_token.txt .

				
			

Nota educacional: Evitar –argumento-de-construção para segredos. Em CI/CDSegredos nunca devem ser transmitidos por meio de variáveis ​​de ambiente ou logs. Sempre prefira montagens de segredos efêmeras.

Melhores práticas para evitar a exposição de segredos

Prevenir a exposição de segredos começa por reconhecer que os argumentos de construção do Docker são públicos por definição. Eles são ótimos para configurações (como tags de versão ou flags de recursos), mas não para credenciais.

Melhores Práticas

  1. Use o BuildKit — segredo para dados sensíveis.
  2. Nunca defina segredos por meio de ARG ou ENV.
  3. Adicione .env, segredos/ e config / diretórios para .dockerignore.
  4. Aplicar construções em várias etapas para isolar palcos privados.
  5. Limpar caches após etapas de construção sensíveis.
  6. Validar metadados da imagem Com histórico do Docker antes da publicação.

Lista de verificação preventiva simplificada

  • Audite todos os Dockerfiles para argumentos de construção Docker uso.
  • Substitua as credenciais pelo BuildKit -segredo.
  • Garantir .dockerignore Exclui arquivos confidenciais.
  • Sanitize CI/CD variáveis ​​ambientais.
  • Automatize a verificação secreta antes de enviar as imagens.

Nota educacional: Se um valor for passado por um argumento de construção do Docker, ele se tornará permanente. Use montagens secretas e estágios de construção isolados para proteger dados sensíveis.

Detecção de uso inseguro de argumentos de compilação antes da implantação

A análise automatizada é essencial para identificar padrões de argumentos de construção do Docker que possam ser arriscados antes que uma imagem seja enviada para produção. Ferramentas como Trivial, Hadolint e Xygeni É possível detectar credenciais incorporadas em Dockerfiles ou camadas de imagem.

Trecho funcional, com contexto e diretrizes de controle.

				
					# CI/CD guardrail: pre-deployment Dockerfile security scan
- name: Dockerfile security scan
  run: trivy config --severity HIGH, CRITICAL --ignore-unfixed.

				
			

Esta etapa funciona como um controle preventivo, bloqueando instruções Docker com argumentos de compilação inseguros antes da implantação.

Nota educacional: Integrar a verificação de Dockerfile como obrigatória CI/CD Etapa. Ferramentas automatizadas ajudam a garantir uma higiene de construção consistente e segura.

Como o Xygeni protege contra vazamentos de segredos durante a compilação

Xygeni Segurança de Segredos Oferece detecção especializada para uso indevido de argumentos do Docker. Ele identifica definições ARG inseguras, rastreia valores secretos em todas as etapas de construção e sinaliza credenciais residuais em metadados de imagem ou camadas em cache. Ao integrar com o seu CI/CD pipelineEle impõe políticas de segurança de argumentos de compilação do Docker antes de mesclagens ou lançamentos.

Trecho funcional, exemplo de aplicação contextual

				
					# Secure enforcement of Docker build arg usage
- name: Xygeni Docker ARG enforcement
  run: dotnet xygeni enforce --rules dockerfile,secrets,build --fail-on-risk

				
			

Adicione este trabalho à sua lista. pipelineEtapa de validação para proteção contínua.

Nota educacional: O Xygeni impõe práticas seguras do Docker automaticamente, impedindo que configurações de compilação arriscadas vazem segredos entre ambientes.

Resumindo: argumentos de construção que o Docker nunca deve manipular com segredos.

Os argumentos de construção do Docker são uma faca de dois gumes: convenientes para configuração, mas arriscados para segredos. Cada valor de build do Docker que você injeta pode persistir em metadados, histórico de imagens ou caches.
Proteja suas construções da seguinte forma:

  • Usando o BuildKit -segredo para credenciais.
  • Isolamento de dados sensíveis em construções com múltiplas etapas.
  • Verificação de valores vazados antes da implantação.
  • Implementar políticas de segurança por meio de Xygeni Segurança de Código.

Sua construção pipeline A segurança de um sistema depende dos segredos que você não revela. Trate cada argumento de compilação do Docker como um vetor de vulnerabilidade e proteja-o antes que invasores o encontrem.

sca-tools-software-composição-análise-ferramentas
Priorize, corrija e proteja seus riscos de software
Crie sua conta gratuita.
Nenhum cartão de crédito é necessário.

Garanta o desenvolvimento e a entrega do seu software.

com o Suíte de Produtos da Xygeni