segreti di docker - segreti di docker compose

Segreti di Docker in CI/CD: Stop alla fuga di dati sensibili

Come funzionano i segreti di Docker e dove gli sviluppatori ne fanno un uso improprio

I segreti Docker sono stati introdotti per gestire in modo sicuro dati sensibili come chiavi API, password di database e token. Funzionano montando i segreti come file in /esegui/segreti all'interno di un container, accessibile solo al servizio containerizzato. Questo meccanismo mantiene segreti i dati delle variabili d'ambiente e dei log, almeno in teoria. Il problema inizia quando gli sviluppatori aggirano questo meccanismo. Invece di utilizzare i segreti di Docker Compose funzionalità correttamente, i segreti sono spesso codificati in modo rigido Dockerfile, committrasferiti a Git o iniettati tramite variabili d'ambiente. Queste scorciatoie rendono i segreti vulnerabili all'esposizione accidentale tramite log, livelli di container o cronologia delle versioni.

# Risky
ENV DB_PASSWORD=mysecretpassword

⚠️ Esempio non sicuro, non utilizzare in produzione

Una volta aggiunta questa riga, questa viene inserita nell'immagine. Chiunque abbia accesso all'immagine (cache di build, registro o CI/CD log) possono estrarlo. Ancora peggio, questo schema spesso passa inosservato durante le revisioni perché "semplicemente funziona".

Segreti di Docker Compose e rischi nascosti nelle configurazioni condivise

Docker Compose semplifica le app multi-contenitore, ma Segreti di Docker Compose presentano rischi nascosti. Gli sviluppatori spesso condividono Docker Compose. yml or .env file tra team e ambienti diversi, tramite Git, Slack o unità condivise.

services:
app:
image: myapp
secrets:
- db_password

secrets:
db_password:
file: ./secrets/db_password.txt

⚠️ Esempio dimostrativo, non includere segreti reali nei file con versione

Il problema? Questi Docker Compose segreti i riferimenti presuppongono file locali, ma in pratica, questi file vengono sottoposti a versioning o distribuiti in modo non sicuro. I segreti si insinuano nei repository Git e compaiono in pull requests, o vengono copiati in altre cartelle. Il presupposto che "sappiamo tutti di non commit "segreti" non è una politica di sicurezza.

Peggio ancora, ambienti come staging e produzione possono riutilizzare lo stesso finestra mobile-compose.yml, creando un falso senso di separazione. Uno mal configurato .env file e i segreti di produzione vengono iniettati in un ambiente di test.

CI/CD Pipelines: Dove si interrompe la gestione dei segreti di Docker

In CI/CD, Segreti Docker crollano se non sono isolati. I segreti spesso trapelano in tre punti: registri, livelli immagine e runner condivisi.

Registri: Stampa dei passaggi CI echo $CHIAVE_SEGRETA per risolvere i problemi. Ma questi registri vengono archiviati, a volte pubblicamente. Strumenti come Azioni GitHub or GitLab conservare i registri per giorni o settimane.

Livelli di immagine: Se un Dockerfile aggiunge un segreto durante la compilazione:

RUN echo "$SECRET_KEY" > /app/config.txt

⚠️ Esempio non sicuro, questo espone i segreti nei livelli dell'immagine

Quel Segreto Docker ora fa parte di un livello immagine. Anche se in seguito elimini il file, il livello precedente rimane nella cronologia dell'immagine.

Corridori condivisi: Molti CI/CD Le piattaforme utilizzano runner condivisi. Se i segreti non sono correttamente definiti o ripuliti, altre build possono accedervi. Peggio ancora, i segreti vengono talvolta passati come variabili d'ambiente a tutti i passaggi per impostazione predefinita.

Proteggere Docker nel codice, Pipelines, e Registri

Per bloccare Segreti Docker, i team di sviluppo hanno bisogno di difese a più livelli:

  • Utilizzare gestori segreti Come AWS Secrets Manager, HashiCorp Vault o Doppler. Questi strumenti ruotano e iniettano i segreti in modo sicuro nei container in fase di esecuzione.
  • Limitare gli ambiti: Non esporre mai i segreti di produzione in ambienti di sviluppo/test. Utilizza il controllo degli accessi basato sui ruoli (RBAC) per limitare chi può iniettare o leggere i segreti.
  • Evitare le variabili ENV per i segreti. Utilizzare Segreto Docker volumi o montare segreti come file in modo esplicito.
  • Pulisci le build: Assicurarsi che i segreti non vengano incorporati nelle immagini o lasciati nei file intermedi.
  • Scansiona contenitori e repository: Utilizza strumenti che ispezionano le immagini, la cronologia git e CI/CD configurazioni per segreti trapelati.

Migliori pratiche per prevenire l'esposizione dei segreti Docker

  • Segreti effimeri: Genera segreti monouso durante le esecuzioni di CI. Questi scadono e non possono essere riutilizzati se rubati.
  • Segreti sigillati: Utilizza Kubernetes Sealed Secrets o SOPS per crittografare i segreti in Git. Questo garantisce che i segreti siano sottoposti a versioning sicuro.
  • CI/CD Termini e Condizioni: Applicare politiche come nessun segreto in Dockerfile, blocca le build sul rilevamento dei segreti e registra l'utilizzo di Segreti Docker per pipeline.
  • Pre-commit hooks: Blocco commitcon segreti usando strumenti come git-secret or rilevare-segreti.
  • Infrastruttura immutabile: Non modificare i segreti nei contenitori. Ricostruisci e ridistribuisci con nuovi Segreti Docker anziché.

Conclusione

Quando usato in modo improprio, Segreti Docker diventare una passività invece di una caratteristica di sicurezza. Da Segreti di Docker Compose trapelare attraverso i file YAML per CI/CD pipelineQuando si rivelano segreti in registri o livelli, i rischi sono reali e prevenibili.

Utilizzando strumenti come Xygeni, i team possono rilevare gli esposti segreti in anticipo, applicare politiche di gestione dei segreti ed eseguire la scansione per rilevare deviazioni di sicurezza nel codice, nei contenitori e pipelines. Tratta il tuo Dsegreto di Ocker strategia come infrastruttura critica. Proteggila con convinzione.

sca-tools-software-strumenti-di-analisi-della-composizione
Dai priorità, risolvi e proteggi i rischi del tuo software
Prova gratuita 7-day
Nessuna carta di credito richiesta

Proteggi lo sviluppo e la consegna del tuo software

con la suite di prodotti Xygeni