Gérez vos secrets avec Infisical
Mise à jour :
Désormais la sécurité des données est primordiale, la gestion efficace des secrets - tels que les mots de passe, les clés API et les tokens d’accès - est devenue une nécessité absolue pour les équipes de développement. C’est là qu’Infisical entre en jeu. En tant que plateforme open source de SecretOps, Infisical offre une solution complète pour gérer de manière sécurisée les secrets et les configurations.
Infisical est une solution open source qui peut être installée dans vos infrastructures. Infisical propose en effet plusieurs options de déploiement, y compris des déploiements sur des clusters Kubernetes, ce qui renforce sa flexibilité et sa fiabilité.
À propos d’Infisical
Infisical se présente comme une plateforme end-to-end dédiée à la gestion sécurisée des secrets et des configurations. Cette plateforme est conçue pour les équipes de toutes tailles.
Le cœur de l’offre d’Infisical réside dans son tableau de bord centralisé. Grâce à cette interface, les utilisateurs peuvent gérer efficacement l’ensemble de leurs secrets - qu’il s’agisse de mots de passe, de tokens d’API ou de clés d’accès - pour différents environnements comme le développement, le staging, et la production. Cette approche centralisée simplifie la complexité habituellement associée à la gestion des secrets, rendant le processus plus transparent et facilement contrôlable pour les équipes de développement.
Fonctionnalités d’Infisical
Infisical est doté de plusieurs fonctionnalités clés qui le rendent particulièrement efficace et adapté aux besoins modernes de gestion des secrets.
Vue d’ensemble de l’environnement
Cette fonctionnalité permet aux utilisateurs de comparer et de gérer les secrets entre différents environnements. Elle est essentielle pour maintenir la cohérence et assurer que rien n’est manquant ou différent dans les environnements de développement, de staging et de production, augmentant ainsi la sécurité et la fiabilité des déploiements.
Compatibilité Universelle
Infisical est conçu pour être utilisé sur n’importe quelle plateforme et avec une grande variété de frameworks. Cette universalité facilite l’intégration d’Infisical dans des environnements de travail diversifiés, permettent ainsi aux développeurs de travailler avec les outils et les technologies qu’elles préfèrent.
Intégration avec l’Infrastructure
Infisical se distingue par sa capacité à s’intégrer de manière native avec l’infrastructure existante. Avec plus de 50 intégrations disponibles, la plateforme peut synchroniser les secrets avec des services de CI/CD et des services tiers, garantissant ainsi une gestion des secrets cohérente et sécurisée à travers toute l’infrastructure. Infisical propose des intégrations aux principaux outils DevOps dont : Docker, Kubernetes, Terraform, Ansible, AWS, Digital Ocean, GitHub Actions, GitLab CI/CD, CircleCI, React… Le reste de la liste est disponible sur le site d’infisical ↗.
Test d’Infisical avec Docker
Pour tester localement infisical, je fais le choix de la simplicité avec Docker-Compose, mais rassurez-vous la documentation ↗ du produit explique comment l’installer via Docker-Compose, Kubernetes ou sur des instances AWS EC2 ou Digital Ocean.
Il faut dans un premier temps créer un répertoire qui va recevoir les fichiers nécessaires à son paramétrage :
mkdir infisical && cd infisicalwget -O .env https://raw.githubusercontent.com/Infisical/infisical/main/.env.examplewget -O docker-compose.yml https://raw.githubusercontent.com/Infisical/infisical/main/docker-compose.ymlmkdir nginx && wget -O ./nginx/default.conf https://raw.githubusercontent.com/Infisical/infisical/main/nginx/default.dev.conf
Vous pouvez ensuite éditer le fichier d’environnement pour ajouter les informations d’intégration avec Gitlab par exemple ↗ par exemple.
Une fois ces paramètres remplis, on peut lancer la stack Infisical :
docker-compose -f docker-compose.yml up -d
[+] Running 3/3 ✔ Container infisical-mongo Started 0.6s ✔ Container infisical-backend Started 0.7s ✔ Container infisical-dev-redis Started
Après le lancement, vérifiez l’installation en accédant à http://localhost
depuis votre navigateur. Créez ensuite votre premier compte utilisateur.
Avec ces étapes, vous pouvez facilement déployer Infisical en local, profitant d’une solution pour tester ce gestionnaire de secrets depuis votre infrastructure. Par la suite, vous pourrez passer à un autre type d’hébergement comme sur un cluster kubernetes par exemple.
La CLI Infisical
L’utilisation de la CLI d’Infisical permet de gérer efficacement les secrets dans divers environnements, allant du développement local aux scénarios de CI/CD et de production. Voici un aperçu des principales fonctionnalités et de l’utilisation de la CLI Infisical :
Installation de la CLI Infisical
La CLI d’infisical peut être installé sur la plupart des distributions Linux, MacOS et Windows
Installation sur Linux
Je vais détailler l’installation sur une machine tournant sur Ubuntu, mais pour les autres plateformes tout est très bien expliqué dans la documentation ↗.
curl -1sLf \'https://dl.cloudsmith.io/public/infisical/infisical-cli/setup.deb.sh' \| sudo -E bash
Executing the setup script for the 'infisical/infisical-cli' repository ...
OK: Checking for required executable 'curl' ... OK: Checking for required executable 'apt' ... OK: Detecting your OS distribution and release using system methods ... ^^^^: ... Detected/provided for your OS/distribution, version and architecture: >>>>: >>>>: ... distro=pop version=22.04 codename=jammy arch=x86_64 >>>>: OK: Checking for apt dependency 'apt-transport-https' ... OK: Checking for apt dependency 'ca-certificates' ... OK: Checking for apt dependency 'gnupg' ... OK: Checking for apt signed-by key support ... OK: Importing 'infisical/infisical-cli' repository GPG keys ... OK: Checking if upstream install config is OK ... OK: Installing 'infisical/infisical-cli' repository via apt ... OK: Updating apt repository metadata cache ... OK: The repository has been installed successfully - You're ready to rock!
sudo apt update && sudo apt install -y infisicalinfisical --versioninfisical version 0.14.3
Voilà tout est prêt pour se connecter à notre installation locale. Mais avant jetons un coup d’oeil à la documentation de la CLI.
man inifisical
INFISICAL(1) Infisical CLI is used to inject environment variables into any process INFISICAL(1)
NAME infisical - Infisical CLI is used to inject environment variables into any process
SYNOPSIS infisical [options...] [argument...]
DESCRIPTION Infisical is a simple, end-to-end encrypted service that enables teams to sync and manage their environment variables across their development life cycle.
OPTIONS --domain Point the CLI to your own backend [can also set via environment variable name: INFISICAL_API_URL]
--l --log-level log level (trace, debug, info, warn, error, fatal)
--telemetry Infisical collects non-sensitive telemetry data to enhance features and improve user experience. Participation is voluntary
COMMANDS export...
infisical login --helpLogin into your Infisical account
Usage: infisical login
Flags: -h, --help help for login -i, --interactive login via the command line
Global Flags: --domain string Point the CLI to your own backend [can also set via environment variable name: INFISICAL_API_URL] (default "https://app.infisical.com/api") -l, --log-level string log level (trace, debug, info, warn, error, fatal) (default "info") --telemetry Infisical collects non-sensitive telemetry data to enhance features and improve user experience. Participation is voluntary (default true)
C’est déjà un excellent signe de la qualité du produit.
Connexion à notre installation locale d’Infisical
On tente la connexion :
infisical login --domain http://localhost/api✔ Self HostingDomain: http://localhostLogging in via browser... To login via interactive mode run [infisical login -i]Ouverture dans une session de navigateur existante.>>>> Welcome to Infisical! You are now logged in as robert.stephane.28@gmail.com <<<<
Quick links- Learn to inject secrets into your application at https://infisical.com/docs/cli/usage- Stuck? Join our slack for quick support https://infisical.com/slack
Lors de la première invocation la CLI demande à quel type d’instance doit-il se
connecter. J’ai donc répondu self-hosted
. Une fenêtre s’est ouverte dans mon
navigateur, la CLI a récupéré les infos de connexion. Ces informations sont
enregistrées localement dans un fichier ~/.infisical/infisical-config.json
dont voici le contenu :
{ "loggedInUserEmail": "robert.stephane.28@gmail.com", "LoggedInUserDomain": "http://localhost/api", "loggedInUsers": [ { "email": "robert.stephane.28@gmail.com", "domain": "http://localhost/api" } ]}
Aucune information compromettante !
Une autre méthode de connexion plus directe consiste à créer une variable
d’environnement dans votre fichier de shell. Par exemple dans mon fichier
.zshrc
j’ai ajouté ceci :
# Set backend hostexport INFISICAL_API_URL="http://localhost/api"
Enregistrement de secrets dans un projet
Pour ajouter des secrets à un projet infisical, il faut initialiser le dossier du projet.
infisical init✔ Example Project
Il récupère les projets existants dans l’instance. Cela crée un fichier
.infisical.json
contenant les paramètres locaux du projet, sans données
sensibles.
Pour enregistrer des secrets, on utilise la commande secrets
, qui permet les
opérations CRUD habituelles : create, read, update et delete.
Un petit tour dans l’aide :
infisical secrets --helpUsed to create, read update and delete secrets
Usage: infisical secrets infisical secrets [command]
Examples:infisical secrets
Available Commands: delete Used to delete secrets by name generate-example-env Used to generate a example .env file get Used to retrieve secrets by name set Used set secrets
Flags: --env string Used to select the environment name on which actions should be taken on (default "dev") --expand Parse shell parameter expansions in your secrets (default true) -h, --help help for secrets --include-imports Imported linked secrets (default true) --path string get secrets within a folder path (default "/") --secret-overriding Prioritizes personal secrets, if any, with the same name over shared secrets (default true) -t, --tags string filter secrets by tag slugs --token string Fetch secrets using the Infisical Token
Global Flags: --domain string Point the CLI to your own backend [can also set via environment variable name: INFISICAL_API_URL] (default "https://app.infisical.com/api") -l, --log-level string log level (trace, debug, info, warn, error, fatal) (default "info") --telemetry Infisical collects non-sensitive telemetry data to enhance features and improve user experience. Participation is voluntary (default true)
Use "infisical secrets [command] --help" for more information about a command.
On tente la création de plusieurs secrets
infisical secrets set API_KEY=sjdgwkeudyjwe DOMAIN=bob.com HASH=jebhfbwe
┌─────────────┬───────────────┬────────────────┐│ SECRET NAME │ SECRET VALUE │ STATUS │├─────────────┼───────────────┼────────────────┤│ API_KEY │ sjdgwkeudyjwe │ SECRET CREATED ││ DOMAIN │ bob.com │ SECRET CREATED ││ HASH │ jebhfbwe │ SECRET CREATED │└─────────────┴───────────────┴────────────────┘
On tente la récupération :
infisical secrets get API_KEY┌─────────────┬───────────────┬─────────────┐│ SECRET NAME │ SECRET VALUE │ SECRET TYPE │├─────────────┼───────────────┼─────────────┤│ API_KEY │ sjdgwkeudyjwe │ shared │└─────────────┴───────────────┴─────────────┘
On tente la création de la clé d’API dans l’environnement staging
infisical secrets set --env staging API_KEY=dsdsfsfsffsf
Petit tour dans l’interface :
On voit bien que la variable a été défini pour l’environnement staging.
Scan d’un dossier de projet
Infisical possède une commande pour scanner la présence de secrets dans un projet Git.
infisical scan -v # En mode verbose8:46AM INF scanning for exposed secrets...8:46AM INF 18 commits scanned.8:46AM INF scan completed in 1.14s8:46AM WRN leaks found: 24
Finding: "private_key_id": "cxcxcxcxcxcx",Secret: cxcxcxcxcxcxcxcxcxcxRuleID: generic-api-keyEntropy: 3.727567File: gitlab-runner-sr-dbfa12bf9353.jsonLine: 4Commit: aac3ac32a2646702da63f1b6afc9622ef2263f8cAuthor: Stéphane ROBERTEmail: stephane.robert@test.comDate: 2023-10-04T05:44:13ZFingerprint: aac3ac32a2646702da63f1b6afc9622ef2263f8c:gitlab-runner-sr-dbfa12bf9353.json:generic-api-key:4...
Je l’ai lancé sur mon projet qui héberge cette documentation. À lancer dans vos projets avant de commiter et à ajouter dans vos pipelines CI/CD.
Conclusion
Cette exploration, certes incomplète d’Infisical met en lumière une plateforme de gestion des secrets innovante et robuste, parfaitement adaptée aux exigences de sécurité des environnements de développement modernes. Que ce soit pour une utilisation on-premise ou dans le cloud, Infisical se distingue par sa facilité d’intégration dans divers environnements et avec de multiples technologies.
L’approche open source d’Infisical et son engagement envers la communauté de développeurs en font non seulement un outil fiable, mais aussi un produit en constante évolution, s’adaptant aux défis changeants de la cybersécurité.
En somme, Infisical se présente comme une belle alternative à HashiCorp Vault pour les développeurs à la recherche d’une gestion sécurisée, efficace et souple de leurs secrets.