Sempre que compartes un ficheiro Compose existen dous artefactos: o que escribiches e o que unha ferramenta renderiza despois de substituír as variables. O segundo adoita ser máis sensible que o primeiro, e é o que a xente pega nun informe de problema sen lelo. Se só revisas o ficheiro de orixe, revisas o documento equivocado.

Compara o que pode conter cada copia antes de decidir que eliminar.

O modelo renderizado é outro documento

Compose resolve as variables de contorno, fusiona os ficheiros de substitución e produce unha configuración efectiva que o lector xa non pode distinguir de valores escritos a man. Unha referencia como o nome dunha variable na orixe convértese no propio token da conta na saída. A estrutura que fai útil o ficheiro para o diagnóstico sobrevive a esa transformación; tamén sobrevive todo o que nunca debería ter estado nel.

Renderiza o ficheiro ti mesmo antes de achegalo e trata esa saída como o artefacto que revisas. Se non podes renderizalo, non podes saber que estás a piques de publicar.

Os segredos están en máis sitios que o campo da chave

Comeza polo obvio: chaves privadas, chaves precompartidas, tokens, contrasinais e URL de conexión que incrustan credenciais. Despois mira todo aquilo ao que apunta o ficheiro, porque unha referencia non é unha redacción. Un ficheiro de contorno montado no servizo, un ficheiro de configuración ligado desde o anfitrión, unha etiqueta que leva un token e un argumento de comando que inclúe un contrasinal viaxan todos co despregamento mesmo cando o YAML parece limpo. Unha chave pegada nunha variable cun nome tranquilizador segue a ser unha chave.

As rutas do anfitrión e os nomes de servizo filtran un segundo tipo de información. O nome dun directorio persoal, un nome de anfitrión interno ou un rango de rede poden identificar unha persoa ou unha organización sen conter nin unha soa credencial, e ese contexto merece eliminarse polo mesmo motivo.

A declaración dun segredo non é o segredo

Os obxectos de segredo de Compose separan a declaración do material: o servizo recibe unha ruta ou un destino, e o contido vive noutro sitio. Manter a declaración mentres se substitúe o material adoita ser o intercambio correcto, porque o revisor necesita ver que un segredo existe e como se monta. O que non debe sobrevivir é o contido mesmo.

As etiquetas e os comentarios merecen o mesmo trato. Un comentario que di que ruta da cámara acorazada garda a chave de produción indica a un atacante onde mirar aínda que non conteña ningunha chave.

Conserva a forma para que o ficheiro aínda diagnostique

Unha redacción que elimina o modo de rede, a versión da imaxe ou os axustes de capacidades produce un ficheiro co que ninguén pode depurar. Substitúe os valores sensibles e conserva as relacións: que servizo monta que, a que rede se une, que dispositivo necesita. Ese é o anaco que o lector usa para explicar unha ruta que falta ou un dispositivo non dispoñible. É tamén a versión que un colega pode comparar co seu propio despregamento en funcionamento.

docker compose -f compose.yaml config > rendered.yaml
grep -nE 'PRIVATE_KEY|PASSWORD|TOKEN|PSK|PrivateKey|passphrase' rendered.yaml
wc -l rendered.yaml

Non despregues a copia redactada como se fose o orixinal en funcionamento. É unha descrición, e unha descrición editada para parecer segura fallará de xeitos que parecen erros de configuración.

Se o material quedou exposto, substitúeo

Eliminar o anexo non elimina as copias que outros xa fixeron, e os espellos e as cachés gardan as súas. Usa o proceso de revogación e substitución do emisor para todo o que se filtrou e despois actualiza o despregamento. A orde importa, porque substituír primeiro e revogar despois deixa unha xanela con dúas credenciais válidas.

Nos fíos de soporte, comeza polo erro exacto, a versión da imaxe, o modo de rede e o único axuste non secreto que importa. Esa combinación explica un dispositivo que falta ou unha ruta rota moito máis a miúdo que a chave.

Artigos relacionados