¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Mantén las claves de API fuera del código

Después de esta lección: Puedo mantener una clave fuera de mi código y de mi historial de Git.

Lección de 60 min3 comandosLaboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

Una clave de API filtrada cuesta dinero

Una clave de API es una cadena secreta que prueba que una petición viene de ti. Un proveedor de modelos suele cobrar a tu cuenta cada llamada que la lleva.

Hay desarrolladores que filtran claves al escribirlas en el código y subirlo a Git. Hay programas automáticos que buscan justo eso: una clave filtrada es una factura y un riesgo.

Al final de esta lección

Nota

Puedo mantener una clave fuera de mi código y de mi historial de Git.

Palabras clave

PalabraQué significaEjemplo
Clave de APIuna cadena secreta que prueba que una petición es tuya
Variable de entornoun valor con nombre que recibe un programa desde fuera de su códigoMY_API_KEY
El archivo .envun archivo de texto con líneas NOMBRE=valor para tu equipo
El archivo .gitignoreuna lista de archivos que Git nunca debe seguir
Rotarcrear una clave nueva y cancelar la antigua

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

En este laboratorio tu código no lleva clave

Tu script envía la cabecera authorization: Bearer lab. La palabra lab es un marcador, no una clave. Al salir, la plataforma lo cambia por tu token real y elige el modelo.

Así que la clave nunca está en tu código y nunca la ves. En un proyecto real, la clave la guardas tú.

Llama a un modelo sin clave

Comando
docker exec -w /home/node/project agent node -e "const u=(process.env.AI_URL||'http://ai:4000')+'/v1/chat/completions';(async()=>{const headers={'content-type':'application/json',authorization:'Bearer lab'};console.log('Cabecera de autorización en mi código: '+headers.authorization);try{const r=await fetch(u,{method:'POST',headers,body:JSON.stringify({model:'lab',messages:[{role:'user',content:'En una frase, ¿por qué una clave de API debe quedar fuera del código?'}],max_tokens:60})});const j=await r.json();if(r.ok===false)throw new Error(r.status+' '+j.error.message);console.log('Modelo: '+j.choices[0].message.content)}catch(e){console.log('Sin respuesta ('+e.message+'). Muestra grabada:');console.log('Modelo: Quien lea el código puede usar la clave y gastar tu dinero.')}})()"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Una clave real vive en el entorno

Un proveedor real te da una clave larga. No la escribas nunca en un archivo que Git sigue. Ponla en una variable de entorno y léela en el código con process.env.MY_API_KEY.

En tu equipo, guarda las variables en un archivo .env y anota ese archivo en .gitignore, para que Git no lo vea nunca.

Escribe un .env y un .gitignore de prueba

Comando
docker exec -w /home/node/project agent sh -c "mkdir -p demo-claves && printf 'EXAMPLE_API_KEY=no-es-una-clave-real-123\n' > demo-claves/.env && printf '.env\n' > demo-claves/.gitignore"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Lee el .env y oculta el valor

Comando
docker exec -w /home/node/project agent node -e "const fs=require('fs');const nl=String.fromCharCode(10);for(const line of fs.readFileSync('demo-claves/.env','utf8').trim().split(nl)){const i=line.indexOf('=');const v=line.slice(i+1);console.log(line.slice(0,i)+' está definida, '+v.length+' caracteres, valor oculto')}console.log('.env está en .gitignore: '+(fs.readFileSync('demo-claves/.gitignore','utf8').split(nl).includes('.env')?'sí':'no'))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

La misma idea en un despliegue real

Tu servicio de alojamiento tiene un lugar para los secretos y los entrega a tu programa como variables de entorno. El código es el mismo en tu portátil y en el servidor.

Sube un archivo .env.example con los nombres y valores falsos. Le dice a una compañera nueva qué debe configurar.

Ejemplo resuelto: qué hacer tras una fuga

Qué pasóQué hacer
La clave está en el código, sin commitPasarla a una variable de entorno
Está en un commit, sin subirRotar la clave y reescribir el commit
Está subida a un repositorio públicoRotar la clave ya y limpiar el historial
Se pegó en un chat o en un promptRotar la clave

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que borrar la clave en un commit nuevo la elimina. Git conserva todos los commits antiguos, así que la clave sigue en el historial para quien la copió. Rota la clave, porque solo una clave nueva deja inútil la antigua.

Sobre este laboratorio y su código: Laboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.