TL;DR — Résumé Rapide
Infisical est un gestionnaire de secrets open source avec chiffrement E2E, CLI, SDKs, Opérateur Kubernetes et rotation — alternative à HashiCorp Vault.
Infisical est une plateforme open source de gestion des secrets qui offre aux équipes un stockage centralisé, audité et chiffré pour les clés API, identifiants de base de données et variables d’environnement. Contrairement aux fichiers .env dans le dépôt ou aux secrets dispersés dans les consoles cloud, Infisical propose un chiffrement bout en bout, un contrôle d’accès granulaire et des intégrations natives avec les principales plateformes CI/CD.
Prérequis
- Docker et Docker Compose ou un cluster Kubernetes avec Helm 3.
- Un nom de domaine (pour TLS sur les déploiements auto-hébergés).
- Familiarité de base avec les variables d’environnement et les pipelines CI/CD.
Architecture d’Infisical
Le serveur Infisical se compose de trois composants:
- Serveur API — Backend Node.js gérant toutes les opérations sur les secrets.
- PostgreSQL — Stocke le texte chiffré, les métadonnées et les journaux d’audit.
- Redis — Gestion des sessions et file d’attente des jobs en arrière-plan.
Le chiffrement bout en bout est la décision de conception clé: lors de l’écriture d’un secret, le client web ou le CLI le chiffre localement en utilisant une clé d’espace de travail dérivée de vos identifiants avant la transmission.
Installation
Option 1: Docker Compose (Auto-hébergé)
git clone https://github.com/Infisical/infisical.git
cd infisical
cp .env.example .env
Modifier .env:
ENCRYPTION_KEY=<32-octets-hex-aléatoire>
AUTH_SECRET=<32-octets-base64-aléatoire>
SITE_URL=https://secrets.votredomaine.com
docker compose -f docker-compose.prod.yml up -d
Option 2: Kubernetes avec 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)"
Option 3: Infisical Cloud
Inscrivez-vous sur app.infisical.com. Sans gestion de serveur, niveau gratuit disponible.
Configuration: Organisations, Projets et Environnements
- Organisations — Conteneur de niveau supérieur pour votre entreprise ou équipe.
- Projets — Correspondent à une application ou service.
- Environnements —
development,staging,productionpar défaut. - Dossiers — Regroupent les secrets liés dans un environnement.
- Versionnage — Chaque modification crée une nouvelle version; retour en arrière possible depuis le tableau de bord.
Utilisation du CLI
# Installation 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 ANCIEN_SECRET --env=staging
# Injecter dans un processus
infisical run --env=dev -- npm run dev
infisical run --env=prod -- python manage.py migrate
# Exporter
infisical export --env=dev > .env
infisical export --env=dev --format=json > secrets.json
SDKs: Accès Programmatique
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",
});
Également disponibles: Python, Go, Java, Ruby et .NET — tous suivent le même pattern d’initialisation avec identifiants et appel à GetSecret().
Machine Identities
| Méthode | Idéal Pour |
|---|---|
| Universal Auth | Tout workload; client ID + secret |
| Kubernetes Auth | Pods avec 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 avec Managed Identity |
| OIDC Auth | GitHub Actions, GitLab CI, tout système OIDC |
Rotation des Secrets
- PostgreSQL / MySQL / MongoDB — Fait tourner le mot de passe de l’utilisateur DB.
- AWS IAM — Crée une nouvelle paire de clés, met à jour Infisical, supprime l’ancienne.
- Rotation personnalisée — Invoque Lambda ou endpoint HTTP arbitraire.
Références et Imports de Secrets
Références: ${DATABASE_HOST}:5432 développe DATABASE_HOST au moment de la lecture.
Imports: Importent tous les secrets d’un autre environnement ou chemin dans la portée actuelle.
Hiérarchie de priorité (plus haute à plus basse): overrides personnels → secrets d’environnement → secrets importés.
Opérateur 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: "/"
L’opérateur crée myapp-synced-secrets comme un Kubernetes Secret standard et le resynchronise toutes les 60 secondes.
Infisical vs Alternatives
| Fonctionnalité | Infisical | HashiCorp Vault | Doppler | AWS Secrets Manager | SOPS | 1Password Connect |
|---|---|---|---|---|---|---|
| Open source | Oui (CE) | Licence BSL | Non | Non | Oui | Non |
| Auto-hébergé | Oui | Oui | Non | Non | Oui | Oui (limité) |
| Chiffrement E2E | Oui | Non | Non | Non | Oui | Oui |
| Interface web | Oui | Oui (basique) | Oui | Console AWS | Non | Oui |
| Rotation | Oui | Oui | Oui | Oui | Non | Non |
| Opérateur K8s | Oui | Vault Agent | Non | Oui (ESO) | Non | Non |
| Niveau gratuit | CE illimité | Open source | Limité | Par secret | Gratuit | Non |
Pièges et Cas Limites
- Perte de la clé de chiffrement — Sans
ENCRYPTION_KEYtous les secrets sont irrécupérables. Sauvegardez dans un stockage séparé. - Disponibilité de Redis — Une interruption Redis rend la connexion impossible même si PostgreSQL est sain.
- Délai de l’Opérateur — L’intervalle de 60 secondes introduit une latence de propagation après une rotation.
- Docker Compose en CI — Les secrets n’atteignent les conteneurs que si vous les passez explicitement via
environment:dansdocker-compose.yml.
Résumé
- Auto-hébergé avec Docker Compose ou Helm — Édition Community gratuite.
- Chiffrement E2E — Le serveur n’a jamais de texte en clair.
- CLI avec
infisical run— Injecte les secrets dans tout processus sans fichiers.env. - Opérateur Kubernetes — Synchronisation automatique avec les Kubernetes Secrets natifs.
- Machine identities — Remplace les tokens statiques par OIDC, AWS IAM, Kubernetes Auth.
- Rotation automatique — Pour les bases de données, AWS IAM et webhooks personnalisés.
- Journal d’audit complet — Chaque accès et modification est enregistré.