Gestiunea Securizată a Secretelor și Fișierelor de Configurare cu Docker Secrets în Docker

Docker Compose Docker Compose v2 / Swarm

Ghid complet de gestiune a secretelor în Docker: injectarea securizată a parolelor, token-urilor API și certificatelor TLS fără a le stoca în imagini sau variabile de mediu neprotejate.

Sintaxă comandă
compose.yaml: secrets: [db_password] | docker secret create <nume> <fisier>

Una dintre cele mai periculoase greșeli de securitate în containerizare este stocarea parolelor de baze de date, a cheilor API sau a certificatelor private în variabile de mediu simple (ENV sau fișiere .env comise în Git). Variabilele de mediu pot fi citite de orice proces din container, apar în jurnalele de depanare (docker inspect) și sunt vizibile în dump-urile de memorie la incidente. Docker Secrets oferă un mecanism securizat prin care informațiile confidențiale sunt montate exclusiv în memorie ca fișiere în /run/secrets/.

Definirea și consumarea secretelor în compose.yaml
services:
  database:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: app_admin
      # Spunem lui PostgreSQL să citească parola direct din fișierul secret montat:
      POSTGRES_PASSWORD_FILE: /run/secrets/db_root_password
    secrets:
      - db_root_password

  api:
    image: my-node-api:latest
    environment:
      DB_PASSWORD_FILE: /run/secrets/db_root_password
    secrets:
      - db_root_password

# Definirea sursei secretelor (locale sau externe):
secrets:
  db_root_password:
    file: ./secrets/db_password.txt

Cum citește aplicația un secret în cod (exemplu Node.js / Python):

// Exemplu Node.js:
const fs = require('fs');

function getSecret(secretName) {
  try {
    return fs.readFileSync(`/run/secrets/${secretName}`, 'utf8').trim();
  } catch (err) {
    return process.env[secretName]; // Soluție de rezervă pentru medii dev locale
  }
}

const dbPassword = getSecret('db_root_password');
De ce este mai sigur: Fișierele din /run/secrets/ sunt montate ca un sistem de fișiere tmpfs în memoria RAM. Ele nu sunt scrise niciodată pe disc în straturile containerului și dispar automat la oprirea serviciului.