TL;DR — Resumen Rápido
Infisical es un gestor de secretos open source con cifrado E2E, CLI, SDKs, Operador Kubernetes y rotación automática — alternativa a HashiCorp Vault.
Infisical es una plataforma open source de gestión de secretos que proporciona a los equipos un almacén centralizado, auditado y cifrado para claves de API, credenciales de base de datos y variables de entorno. A diferencia de archivos .env en el repositorio o secretos dispersos en consolas cloud, Infisical ofrece cifrado extremo a extremo, control de acceso granular e integraciones nativas con las principales plataformas CI/CD.
Requisitos Previos
- Docker y Docker Compose o un clúster Kubernetes con Helm 3.
- Un dominio (para TLS en despliegues autoalojados).
- Familiaridad básica con variables de entorno y pipelines CI/CD.
Arquitectura de Infisical
El servidor de Infisical tiene tres componentes:
- Servidor API — Backend Node.js que gestiona todas las operaciones de secretos.
- PostgreSQL — Almacena el texto cifrado, metadatos y registros de auditoría.
- Redis — Gestión de sesiones y cola de trabajos en segundo plano.
El cifrado extremo a extremo es la decisión de diseño clave: cuando escribes un secreto, el cliente web o el CLI lo cifra localmente usando una clave de espacio de trabajo derivada de tus credenciales antes de la transmisión.
Instalación
Opción 1: Docker Compose (Autoalojado)
git clone https://github.com/Infisical/infisical.git
cd infisical
cp .env.example .env
Editar .env:
ENCRYPTION_KEY=<32-bytes-hex-aleatorio>
AUTH_SECRET=<32-bytes-base64-aleatorio>
SITE_URL=https://secretos.tudominio.com
docker compose -f docker-compose.prod.yml up -d
Opción 2: Kubernetes con Helm
helm repo add infisical-helm-charts https://dl.infisical.com/helm-charts
helm repo update
helm install infisical infisical-helm-charts/infisical \
--set infisical.encryptionKey="$(openssl rand -hex 16)" \
--set infisical.authSecret="$(openssl rand -base64 32)"
Opción 3: Infisical Cloud
Regístrate en app.infisical.com. Sin gestión de servidor, nivel gratuito disponible.
Configuración: Organizaciones, Proyectos y Entornos
- Organizaciones — Contenedor de nivel superior para tu empresa o equipo.
- Proyectos — Corresponden a una aplicación o servicio.
- Entornos —
development,staging,productionpor defecto. - Carpetas — Agrupan secretos relacionados dentro de un entorno.
- Versionado — Cada cambio crea una versión nueva; puedes revertir desde el panel.
Uso del CLI
# Instalar en Linux/Debian
curl -1sLf 'https://dl.cloudsmith.io/public/infisical/infisical-cli/setup.deb.sh' | sudo -E bash
sudo apt-get install infisical
# macOS
brew install infisical/get-cli/infisical
infisical login
infisical secrets get DATABASE_URL --env=prod
infisical secrets set API_KEY=sk-abc123 --env=staging
infisical secrets delete SECRETO_VIEJO --env=staging
# Inyectar en proceso
infisical run --env=dev -- npm run dev
infisical run --env=prod -- python manage.py migrate
# Exportar
infisical export --env=dev > .env
infisical export --env=dev --format=json > secretos.json
SDKs: Acceso Programático
Node.js:
import { InfisicalSDK } from "@infisical/sdk";
const client = new InfisicalSDK({ siteUrl: "https://app.infisical.com" });
await client.auth().universalAuth.login({
clientId: process.env.INFISICAL_CLIENT_ID,
clientSecret: process.env.INFISICAL_CLIENT_SECRET,
});
const secret = await client.secrets().getSecret({
secretName: "DATABASE_URL",
projectId: "proj_abc123",
environment: "prod",
});
También disponibles: Python, Go, Java, Ruby y .NET — todos siguen el mismo patrón de inicialización con credenciales y llamada a GetSecret().
Machine Identities
| Método | Ideal Para |
|---|---|
| Universal Auth | Cualquier workload; client ID + secret |
| Kubernetes Auth | Pods con ServiceAccount JWT |
| AWS IAM Auth | Lambda, EC2, ECS via AWS STS |
| GCP IAM Auth | VMs, Cloud Run, Cloud Functions |
| Azure Auth | VMs, AKS, Azure Functions con Managed Identity |
| OIDC Auth | GitHub Actions, GitLab CI, cualquier OIDC |
Rotación de Secretos
Infisical puede rotar automáticamente credenciales según un horario:
- PostgreSQL / MySQL / MongoDB — Rota la contraseña del usuario de base de datos.
- AWS IAM — Crea nuevo par de claves, actualiza Infisical, elimina la antigua.
- Rotación personalizada — Invoca Lambda o endpoint HTTP arbitrario.
Referencias e Importaciones de Secretos
Referencias: ${DATABASE_HOST}:5432 expande DATABASE_HOST en tiempo de lectura.
Importaciones: Traen todos los secretos de otro entorno o ruta al ámbito actual.
Jerarquía de prioridad (mayor a menor): overrides personales → secretos del entorno → secretos importados.
Operador Kubernetes
helm install infisical-operator infisical-helm-charts/secrets-operator \
--namespace infisical-operator-system --create-namespace
apiVersion: secrets.infisical.com/v1alpha1
kind: InfisicalSecret
metadata:
name: myapp-secrets
namespace: default
spec:
hostAPI: https://app.infisical.com/api
resyncInterval: 60
authentication:
universalAuth:
credentialsRef:
name: infisical-machine-identity
namespace: default
managedSecretReference:
secretName: myapp-synced-secrets
secretNamespace: default
infisicalSecret:
environmentSlug: "prod"
projectId: "proj_abc123"
secretsPath: "/"
El operador crea myapp-synced-secrets como un Kubernetes Secret estándar y lo re-sincroniza cada 60 segundos.
Infisical vs Alternativas
| Característica | Infisical | HashiCorp Vault | Doppler | AWS Secrets Manager | SOPS | 1Password Connect |
|---|---|---|---|---|---|---|
| Open source | Sí (CE) | Licencia BSL | No | No | Sí | No |
| Autoalojado | Sí | Sí | No | No | Sí | Sí (limitado) |
| Cifrado E2E | Sí | No | No | No | Sí | Sí |
| Interfaz web | Sí | Sí (básica) | Sí | Consola AWS | No | Sí |
| Rotación | Sí | Sí | Sí | Sí | No | No |
| Operador K8s | Sí | Vault Agent | No | Sí (ESO) | No | No |
| Nivel gratuito | CE ilimitado | Open source | Limitado | Por secreto | Gratis | No |
Precauciones y Casos Extremos
- Pérdida de la clave de cifrado — Sin
ENCRYPTION_KEYtodos los secretos son irrecuperables. Respalda en un almacén separado. - Disponibilidad de Redis — Una interrupción de Redis hace imposible el inicio de sesión.
- Delay del Operador — El intervalo de 60 segundos introduce latencia de propagación tras una rotación.
- Docker Compose en CI — Los secretos solo llegan a contenedores si los pasas explícitamente via
environment:endocker-compose.yml.
Resumen
- Autoalojado con Docker Compose o Helm — Edición Community gratuita.
- Cifrado E2E — El servidor nunca tiene texto plano.
- CLI con
infisical run— Inyecta secretos en cualquier proceso sin archivos.env. - Operador Kubernetes — Sincronización automática con Kubernetes Secrets nativos.
- Machine identities — Reemplaza tokens estáticos con OIDC, AWS IAM, Kubernetes Auth.
- Rotación automática — Para bases de datos, AWS IAM y webhooks personalizados.
- Registro de auditoría completo — Cada acceso y cambio queda registrado.