Novops facilite l'accès aux secrets
Je ne vous apprendrai rien en vous disant que la gestion des
secrets est importante, mais compliqué à
mettre en œuvre. novops
se présente comme un outil innovant qui va vous
faciliter cette tâche. Il fonctionne aussi bien dans votre environnement de
développement que dans les outils de pipeline CI/CD.
Cas d’usage
Vous avez un projet d’infrastructure as Code, tel que Terraform, Ansible ou Pulumi, gérant plusieurs environnements (dev, preprod…). Le code est exécuté soit localement ou, soit dans des pipelines CI/CD, comme GitLab CI CD, GitHub Actions ou Jenkins
Les secrets sont stockés dans un gestionnaire de secrets comme Hashicorp Vault, AWS Secret Manager, AWS STS, AWS SSM, Azure Keys Vault, GCLOUD Secret manager ou encore Bitwarden.
Fonctionnement de Novops
Novops charge les secrets en mémoire, principalement sous forme de variables
d’environnement, mais également sous forme de fichiers. Novops peut générer des
fichiers dans certaines situations - mais ils sont écrits sur un système de
fichiers tmpfs
(système de fichiers en mémoire) et donc pas sur le disque ! De
plus, Novops utilise un répertoire sécurisé auquel seul l’utilisateur exécutant
novops
peut accéder ( XDG_RUNTIME_DIR ou un répertoire sécurisé dans /tmp ).
Installation de la CLI Novops
Dans une fenêtre de terminal, tapez les commandes suivantes :
Remplacez la version par celle de votre choix. La liste des releases ↗.
Création du fichier de configuration novops
Il faut ensuite, dans le dossier où se trouve votre projet nécessitant d’accéder
à des secrets, créer un fichier de configuration se nommant .novops.yml
dont
voici un exemple de contenu :
Chargement de secrets en variables d’environnement
Il suffit de lancer maintenant la commande de chargement :
Lancement de commandes
Pour lancer directement une commande :
On peut imaginer lancer une commande terraform apply
par exemple.
Utilisation dans des pipelines CI/CD
Je limiterai l’exemple avec GITLAB CI/CD. Ici par exemple, on installe la CLI
novops
dans une image terraform
:
Dans les variables d’environnement du projet gitlab, il faudra créer une variable masquée contenant le Token Vault (VAULT_TOKEN)
Utilisation avec Ansible
J’apprécie beaucoup cet outil pour le simple fait qu’il gère facilement plusieurs environnements et, donc plusieurs inventaires Ansible. Voici un exemple de fichier de configuration novops pour Ansible :
Pour lancer un playbook, il suffit d’utiliser la commande suivante :
Conclusion
En conclusion, Novops se révèle être un outil indispensable pour accéder à des secrets dans un contexte possédant de plusieurs environnements. En le stockant dans le projet, il me fait gagner beaucoup de temps, car je n’ai plus besoin de rechercher où se trouvent ces secrets. Autre gain au niveau de la sécurité ils ne sont plus stockés sur le disque. Il suffit juste de charger son token d’accès au gestionnaire de secrets, avec direnv par exemple et le tour est joué. Une pépite donc et en plus la documentation est complète !
Plus d’infos
Le site officiel : https://pierrebeucher.github.io/novops/ ↗