"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Gestion secrète sans effort pour les projets Laravel et JS avec Secrets Loader

Gestion secrète sans effort pour les projets Laravel et JS avec Secrets Loader

Publié le 2024-11-08
Parcourir:659

Effortless Secret Management for Laravel & JS Projects with Secrets Loader

La gestion des données sensibles telles que les clés API, les jetons et les informations d'identification dans divers environnements peut s'avérer assez délicate, en particulier lors du développement et du déploiement d'applications. S'assurer que les secrets sont stockés en toute sécurité et récupérés en cas de besoin, sans les coder en dur dans le contrôle de version, est crucial pour maintenir la sécurité.

C'est pourquoi j'ai créé Secrets Loader, un script Bash qui récupère dynamiquement les secrets d'AWS SSM et de CloudFormation directement dans votre fichier .env, rendant le développement et le déploiement locaux plus faciles, plus sûrs et plus efficaces.


Qu'est-ce que Secrets Loader ?

Secrets Loader est un outil simple conçu pour récupérer automatiquement les secrets d'AWS SSM Parameter Store et des sorties AWS CloudFormation en fonction de la syntaxe personnalisée de votre fichier .env. Il remplace les espaces réservés par de véritables secrets sans jamais exposer d'informations sensibles dans le contrôle de version.

Par exemple, au lieu de coder en dur vos clés API ou vos informations d'identification, vous les définissez dans votre fichier .env comme ceci :

THIRD_PARTY_API_KEY="ssm:/third-party/api/key"
AWS_ACCESS_KEY_ID="cf:my-stack:AccessKeyId"

Avec une seule commande, Secrets Loader récupérera les valeurs réelles d'AWS et mettra à jour votre fichier .env, gardant les informations sensibles sécurisées et faciles à gérer.


Pourquoi je l'ai construit

Lors du développement et du déploiement local, je me suis retrouvé face à des informations d'identification sensibles que je ne voulais pas coder en dur dans les fichiers du projet. Ayant beaucoup utilisé les services AWS, je cherchais un moyen d'intégrer la gestion des secrets dans mon flux de développement existant sans trop de tracas.

Voici les principaux défis résolus par Secrets Loader :

  1. Éviter les secrets codés en dur : plus besoin de confier des secrets au contrôle de version. Vous pouvez utiliser en toute sécurité des espaces réservés et récupérer dynamiquement les valeurs réelles d'AWS SSM et de CloudFormation.
  2. Réduire l'effort manuel : au lieu de copier et coller manuellement les valeurs secrètes, définissez-les simplement une fois dans votre fichier .env et laissez le script effectuer la récupération.
  3. Simplification de la gestion des secrets : que vous travailliez en développement local, en préparation ou en production, Secrets Loader garantit que les secrets sont chargés automatiquement et en toute sécurité.

Caractéristiques

Secrets Loader est livré avec quelques fonctionnalités clés qui en font un outil pratique pour les environnements de développement et de production locaux :

  • Chargement automatisé des secrets : récupérez les secrets d'AWS SSM Parameter Store et de CloudFormation en spécifiant les chemins dans votre fichier .env.
  • Approche axée sur la sécurité : gardez les données sensibles hors du contrôle de version en les chargeant en toute sécurité au moment de l'exécution.
  • Syntaxe simple : utilisez une syntaxe personnalisée dans votre fichier .env (ssm : pour les paramètres SSM, cf : pour les sorties CloudFormation) pour spécifier d'où doivent provenir les secrets.
  • Gestion des erreurs : le script continue de traiter d'autres secrets même si une récupération échoue, en enregistrant les avertissements sans arrêter votre flux de travail.

Comment ça marche

La magie de Secrets Loader réside dans sa capacité à récupérer des secrets depuis AWS en fonction de préfixes spécifiques (ssm: et cf:). Voici un exemple de flux de travail :

  1. Configurez votre fichier .env :

Ajoutez des espaces réservés pour vos secrets dans votre fichier .env en utilisant le préfixe ssm: pour les paramètres SSM ou le préfixe cf: pour les sorties CloudFormation :

   THIRD_PARTY_API_KEY="ssm:/third-party/api/key"
   AWS_SECRET_ACCESS_KEY="cf:my-stack:SecretAccessKey"
  1. Exécuter le script :

Utilisez la commande suivante pour exécuter le script et récupérer les secrets :

   ./secrets.sh
  1. Fichier .env mis à jour :

Après avoir exécuté le script, votre fichier .env sera mis à jour avec les valeurs réelles extraites d'AWS :

   THIRD_PARTY_API_KEY=actual-api-key-value
   AWS_SECRET_ACCESS_KEY=actual-access-key-value

Plus de secrets de codage en dur et plus de recherches manuelles !


Installation et configuration

Prêt à commencer ? Voici comment configurer Secrets Loader dans votre projet :

  1. Cloner le dépôt :
   git clone https://github.com/Thavarshan/secretst-loader.git
   cd secretst-loader
  1. Rendre le script exécutable :
   chmod  x secrets.sh
  1. Assurez-vous qu'AWS CLI est installé et configuré :

Si l'AWS CLI n'est pas installée, suivez le guide d'installation de l'AWS CLI. Après l'installation, configurez vos informations d'identification AWS :

   aws configure
  1. Définissez vos secrets dans .env :

Utilisez les préfixes ssm: et cf: pour définir d'où doivent provenir les secrets :

   THIRD_PARTY_API_KEY="ssm:/third-party/api/key"
   AWS_ACCESS_KEY_ID="cf:my-stack:AccessKeyId"

Exemple d'utilisation

Prenons un exemple simple :

Fichier .env.exemple :

# Application settings
APP_NAME=MyApp
APP_ENV=production

# Secrets fetched from AWS SSM and CloudFormation
THIRD_PARTY_API_KEY="ssm:/third-party/api/key"
AWS_SECRET_ACCESS_KEY="cf:my-stack:SecretAccessKey"

Exécution du chargeur de secrets :

./secrets.sh

Fichier .env mis à jour :

# Application settings
APP_NAME=MyApp
APP_ENV=production

# Fetched secrets
THIRD_PARTY_API_KEY=actual-api-key-value
AWS_SECRET_ACCESS_KEY=actual-secret-access-key

Dépannage

Si vous rencontrez des problèmes lors de l'utilisation de Secrets Loader, voici quelques points à vérifier :

  1. Autorisations AWS : assurez-vous que l'AWS CLI est correctement configurée et que votre rôle ou utilisateur IAM dispose des autorisations suffisantes pour accéder aux secrets AWS SSM et CloudFormation.

  2. Erreurs de syntaxe : revérifiez la syntaxe de votre fichier .env pour vous assurer que les préfixes ssm: et cf: sont corrects.

  3. Erreurs de script : si le script ne parvient pas à récupérer certains secrets, il enregistrera les avertissements mais continuera à récupérer les autres. Consultez les journaux pour détecter tout message d'erreur et assurez-vous que les ressources AWS existent et sont accessibles.


Extension du chargeur de secrets

Le script est conçu pour être extensible. Si vous souhaitez intégrer d'autres systèmes de gestion des secrets (comme Azure Key Vault ou HashiCorp Vault), vous pouvez facilement modifier le script pour prendre en charge de nouveaux préfixes et une logique de récupération.

Par exemple, vous pouvez ajouter un préfixe azkv: pour récupérer les secrets d'Azure Key Vault et gérer la récupération à l'aide d'Azure CLI.


Contribuer

Secrets Loader est open source et les contributions sont toujours les bienvenues ! Si vous souhaitez ajouter des fonctionnalités, corriger des bugs ou suggérer des améliorations, n'hésitez pas à :

  • Ouvrir un problème : partagez vos commentaires ou rapports de bogues.
  • Soumettre une pull request : contribuez au code en suivant nos directives de CONTRIBUTION.

Conclusion

Si vous en avez assez de gérer manuellement les secrets dans tous les environnements, Secrets Loader est un outil simple et efficace pour rationaliser le processus. En récupérant les secrets de manière dynamique depuis AWS SSM et CloudFormation, vous pouvez gérer vos informations d'identification en toute sécurité sans risquer d'être exposé au contrôle de version.

Découvrez le projet sur GitHub, essayez-le, et si vous le trouvez utile, donnez-nous un ⭐ sur GitHub ! Votre soutien aide le projet à se développer et nous serions ravis d'entendre votre commentaires ou consultez vos contributions à son développement continu.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/thavarshan/effortless-secret-management-for-laravel-js-projects-with-secrets-loader-59be?1 En cas de violation, veuillez contacter study_golang@163 .com pour le supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3