Cómo configurar variables de entorno seguras en GitHub Actions
La gestión de credenciales en flujos de integración y despliegue continuo (CI/CD) garantiza la integridad de la infraestructura. En GitHub Actions, la exposición de tokens de API, contraseñas de bases de datos o claves privadas compromete la seguridad de los entornos de producción.
Diferencia entre Secrets y Variables de Entorno
Es fundamental comprender la distinción técnica entre ambos conceptos para aplicar la seguridad de forma correcta:
- GitHub Secrets: Son variables cifradas mediante la biblioteca libsodium. Una vez guardadas, los valores no pueden ser visualizados en la interfaz, ni siquiera por el administrador. GitHub los enmascara automáticamente en los logs (***).
- Variables de Entorno (Variables): Se utilizan para configuraciones no sensibles, como nombres de entornos o rutas de directorios. Son visibles en texto plano y no se cifran.
Implementación Paso a Paso
1. Creación de Secretos en el Repositorio
Para añadir una credencial, el proceso estándar es:
- Navegue a la pestaña Settings de su repositorio.
- En la barra lateral, seleccione Secrets and variables > Actions.
- Haga clic en New repository secret.
- Defina un nombre (ej. API_KEY_PROD) y pegue el valor correspondiente.
2. Uso de Secretos en el Archivo YAML
Es una práctica recomendada asignar el secreto a una variable de entorno local dentro del step específico:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Ejecutar script de despliegue
env:
MY_API_KEY: ${{ secrets.API_KEY_PROD }}
run: |
# El valor de MY_API_KEY está disponible de forma segura
./deploy_script.sh
Niveles de Alcance (Scope)
GitHub permite gestionar la seguridad en tres niveles jerárquicos:
- Organización: Permite compartir secretos entre múltiples repositorios.
- Repositorio: Limitado únicamente a los flujos de trabajo de un proyecto específico.
- Entornos (Environments): La opción más segura. Permite configurar secretos accesibles solo en entornos específicos (como "Producción") con reglas de aprobación manual.
Protocolos de seguridad
El mantenimiento de un entorno confiable requiere la aplicación de los siguientes principios:
- Mínimo privilegio: Los tokens deben poseer únicamente los permisos necesarios.
- Prevención de fugas en logs: Evite comandos que listen variables de entorno (como
envoprintenv). - Restricción en Pull Requests: Los secretos no se transfieren a flujos activados por forks externos para evitar extracciones maliciosas.
- Rotación programada: La renovación periódica limita la validez de una credencial comprometida.
La configuración de variables seguras constituye la base de la protección de datos en procesos automatizados. El uso de GitHub Secrets y Environments permite establecer una arquitectura de despliegue protegida contra accesos no autorizados.
Comentarios
Publicar un comentario