Secretos: nunca hacerlos transitar, nunca mostrarlos en claro
Un secreto pegado en una conversación, aunque sea brevemente, permanece después presente en los registros y en cualquier relectura automática del historial, y un comando de configuración lanzado por un motivo preciso puede mostrar un secreto vecino en claro si su filtro es demasiado amplio.
Un secreto pegado en una conversación nunca desaparece realmente. Permanece en los registros del servicio que recibió el mensaje, y cualquier relectura automática de ese historial, la tuya o la de una herramienta externa, puede volver a mostrarlo meses después. La regla más simple sigue siendo la primera: una contraseña, una clave de API o un token de acceso nunca se pega en una conversación, ni siquiera para una pregunta rápida o una corrección puntual.
El mínimo privilegio, antes que todo lo demás
El mínimo privilegio es el principio que consiste en dar a una herramienta, un agente o una persona solo el acceso mínimo necesario para la tarea en curso, nunca un acceso más amplio por comodidad. Un agente encargado de renombrar archivos en una carpeta no necesita ningún derecho sobre una base de datos vecina, aunque esa base sea técnicamente accesible desde el mismo puesto. Restringir el acceso desde el principio cuesta menos que descubrir, después, todo lo que un acceso demasiado amplio permitió leer.
El filtro demasiado amplio, un canal de fuga discreto
Un comando que lista variables o consulta una tabla de configuración por un motivo preciso puede mostrar, junto al valor buscado, todo lo que se encuentre justo al lado. El riesgo no viene del comando en sí, viene de la amplitud de su filtro. El siguiente ejemplo crea sus propios datos de demostración, sin tocar nada real de tu puesto:
echo "CLE_API=ax92kQ" > fixture.txt
echo "NOM_SERVEUR=serveur-principal" >> fixture.txt
grep NOM fixture.txt
grep -i "e" fixture.txt
El primer comando, filtrado por NOM, solo devuelve la línea esperada. El segundo, filtrado únicamente por la letra e, devuelve las dos líneas, incluida la clave. Nada ha cambiado en la intención entre los dos comandos, solo la precisión del filtro cambió el resultado mostrado en la pantalla.
Filtrar por lo esperado, nunca por un patrón genérico
Antes de lanzar un comando que muestra una configuración, la pregunta que hay que hacerse no es qué hace el comando, es qué muestra realmente en la pantalla. Filtrar por los nombres esperados, o por una longitud precisa, reduce este riesgo mucho mejor que un filtro de una sola letra o un patrón demasiado corto. Este reflejo vale tanto para un comando local como para una petición confiada a un agente: pídele que filtre por nombres precisos, nunca por un patrón amplio que arrastre todo un conjunto de columnas o variables. La lección siguiente trata lo que ocurre cuando un secreto termina, a pesar de todo, escrito en un repositorio seguido por una herramienta de control de versiones.
Tres canales de fuga, y su remedio
| Canal | Lo que se fuga | Remedio |
|---|---|---|
| Secreto pegado en una conversación | Permanece en los registros del servicio y en cualquier relectura automática del historial | Nunca pegar un secreto en claro, ni siquiera para una pregunta rápida |
| Comando que lista variables | Un filtro demasiado amplio muestra un secreto vecino en claro | Filtrar por los nombres esperados, nunca por una letra o un patrón corto |
| Consulta sobre una tabla de configuración | Sube una columna entera, secreto incluido, por un motivo sin relación | Seleccionar las columnas útiles, nunca el conjunto de la tabla |
Para verificar una variable de configuración llamada NOM_SERVEUR antes de una intervención técnica, un administrador lanza un comando que muestra todas las variables de entorno cuyo nombre contiene la letra e.
Escribe en una frase lo que esta situación establece, y en una frase lo que no establece.
Lo que esto establece: Establece que el filtro utilizado, la letra e, es lo bastante amplio como para devolver cualquier variable cuyo nombre contenga esa letra, secreta o no.
Lo que esto no establece: No establece la lista exacta de las variables realmente mostradas por este comando en este puesto concreto.
Los tres calibrados falsos más frecuentes
- Demasiado amplio Este comando forzosamente mostró todos los secretos almacenados en este puesto, sea cual sea su nombre.
- Demasiado estrecho Esta situación no muestra nada más que un comando lanzado antes de una intervención técnica.
- Fuera de lugar Muestra que la intervención técnica se refería al servidor nombrado en NOM_SERVEUR.
- Un secreto pegado en una conversación permanece después en los registros del servicio y en cualquier relectura automática del historial, incluso meses después.
- El mínimo privilegio limita el acceso de una herramienta o un agente a lo estrictamente necesario de su tarea, nunca a un acceso más amplio por comodidad.
- El riesgo de un comando de configuración rara vez viene de su intención, casi siempre viene de la amplitud de su filtro.
- Filtrar por los nombres esperados, nunca por una letra o un patrón demasiado corto, evita que un secreto vecino se muestre por accidente.
Elige, hoy, un comando de configuración que uses regularmente en tu puesto, lista de variables, exportación o consulta de una tabla, y ejecútalo observando con precisión lo que muestra en la pantalla en vez de lo que se supone que hace. Si aparece también un campo vecino al que buscabas, cierra el filtro antes de volver a lanzarlo.