Comparteixes un fitxer Compose de VPN? Redacta la còpia renderitzada
Una clau privada pot ser al YAML, en un valor d’entorn o a la sortida resolta que ningú ha mirat. Revisa la còpia que adjuntes de veritat.
Sempre que comparteixes un fitxer Compose existeixen dos artefactes: el que has escrit i el que una eina renderitza després de substituir les variables. El segon sovint és més sensible que el primer, i és el que la gent enganxa en una incidència sense llegir-lo. Si només revises el fitxer d’origen, revises el document equivocat.
Compara què pot contenir cada còpia abans de decidir què cal eliminar.
El model renderitzat és un document diferent
Compose resol les variables d’entorn, fusiona els fitxers de substitució i produeix una configuració efectiva que el lector ja no pot distingir dels valors escrits a mà. Una referència com el nom d’una variable a l’origen es converteix en el mateix testimoni del compte a la sortida. L’estructura que fa útil el fitxer per al diagnòstic sobreviu a aquesta transformació; també hi sobreviu tot el que no hi hauria d’haver estat mai.
Renderitza el fitxer tu mateix abans d’adjuntar-lo i tracta aquesta sortida com l’artefacte que revises. Si no el pots renderitzar, no pots saber què estàs a punt de publicar.
Els secrets són en més llocs que el camp de la clau
Comença pel que és obvi: claus privades, claus prèviament compartides, testimonis, contrasenyes i URL de connexió que incrusten credencials. Després mira tot allò a què apunta el fitxer, perquè una referència no és una redacció. Un fitxer d’entorn muntat al servei, un fitxer de configuració enllaçat des de l’amfitrió, una etiqueta que porta un testimoni i un argument de comanda que inclou una contrasenya viatgen amb el desplegament encara que el YAML sembli net. Una clau enganxada en una variable amb un nom tranquil·litzador continua sent una clau.
Les rutes de l’amfitrió i els noms de servei filtren un segon tipus d’informació. El nom d’un directori personal, un nom d’amfitrió intern o un rang de xarxa poden identificar una persona o una organització sense contenir cap credencial, i aquest context val la pena eliminar-lo pel mateix motiu.
La declaració d’un secret no és el secret
Els objectes de secret de Compose separen la declaració del material: el servei rep una ruta o un objectiu, i el contingut viu en un altre lloc. Mantenir la declaració mentre se substitueix el material sol ser l’intercanvi correcte, perquè el revisor ha de veure que un secret existeix i com es munta. El que no ha de sobreviure és el contingut mateix.
Les etiquetes i els comentaris mereixen el mateix tracte. Un comentari que diu quina ruta de la cambra forta guarda la clau de producció indica a un atacant on mirar encara que no contingui cap clau.
Conserva la forma perquè el fitxer encara diagnostiqui
Una redacció que elimina el mode de xarxa, la versió de la imatge o els paràmetres de capacitats produeix un fitxer amb què ningú no pot depurar. Substitueix els valors sensibles i conserva les relacions: quin servei munta què, a quina xarxa s’uneix, quin dispositiu necessita. Aquesta és la part que el lector fa servir per explicar una ruta que falta o un dispositiu no disponible. És també la versió que un col·lega pot comparar amb el seu propi desplegament en funcionament.
docker compose -f compose.yaml config > rendered.yaml
grep -nE 'PRIVATE_KEY|PASSWORD|TOKEN|PSK|PrivateKey|passphrase' rendered.yaml
wc -l rendered.yaml
No despleguis la còpia redactada com si fos l’original en funcionament. És una descripció, i una descripció editada per semblar segura fallarà de maneres que semblen errors de configuració.
Si el material s’ha exposat, substitueix-lo
Eliminar l’adjunt no elimina les còpies que altres ja han fet, i els miralls i les memòries cau guarden les seves. Fes servir el procés de revocació i substitució de l’emissor per a tot el que s’ha filtrat i després actualitza el desplegament. L’ordre importa, perquè substituir primer i revocar després deixa una finestra amb dues credencials vàlides.
En els fils de suport, comença per l’error exacte, la versió de la imatge, el mode de xarxa i l’únic paràmetre no secret que importa. Aquesta combinació explica un dispositiu que falta o una ruta trencada molt més sovint que la clau.