Die Verwaltung vertraulicher Daten wie API-Schlüssel, Token und Anmeldeinformationen in verschiedenen Umgebungen kann ziemlich schwierig sein, insbesondere bei der Entwicklung und Bereitstellung von Anwendungen. Für die Aufrechterhaltung der Sicherheit ist es von entscheidender Bedeutung, sicherzustellen, dass Geheimnisse sicher gespeichert und bei Bedarf abgerufen werden, ohne sie fest in die Versionskontrolle zu codieren.
Deshalb habe ich Secrets Loader erstellt, ein Bash-Skript, das Geheimnisse dynamisch von AWS SSM und CloudFormation direkt in Ihre .env-Datei abruft und so die lokale Entwicklung und Bereitstellung einfacher, sicherer und effizienter macht.
Secrets Loader ist ein einfaches Tool zum automatischen Abrufen von Geheimnissen aus AWS SSM Parameter Store und AWS CloudFormation-Ausgaben basierend auf benutzerdefinierter Syntax in Ihrer .env-Datei. Es ersetzt Platzhalter durch tatsächliche Geheimnisse, ohne jemals vertrauliche Informationen in der Versionskontrolle preiszugeben.
Anstatt Ihre API-Schlüssel oder Anmeldeinformationen beispielsweise fest zu codieren, definieren Sie sie in Ihrer .env-Datei wie folgt:
THIRD_PARTY_API_KEY="ssm:/third-party/api/key" AWS_ACCESS_KEY_ID="cf:my-stack:AccessKeyId"
Mit einem einzigen Befehl ruft Secrets Loader die tatsächlichen Werte von AWS ab und aktualisiert Ihre .env-Datei, sodass vertrauliche Informationen sicher und einfach zu verwalten sind.
Während der lokalen Entwicklung und Bereitstellung musste ich mit vertraulichen Anmeldeinformationen umgehen, die ich nicht fest in die Projektdateien codieren wollte. Nachdem ich AWS-Services ausgiebig genutzt hatte, suchte ich nach einer Möglichkeit, die Geheimverwaltung ohne allzu großen Aufwand in meinen bestehenden Entwicklungsworkflow zu integrieren.
Hier sind die wichtigsten Herausforderungen, die Secrets Loader löst:
Secrets Loader verfügt über einige wichtige Funktionen, die ihn zu einem praktischen Tool sowohl für lokale Entwicklungs- als auch Produktionsumgebungen machen:
Die Magie von Secrets Loader liegt in seiner Fähigkeit, Geheimnisse von AWS basierend auf bestimmten Präfixen (ssm: und cf:) abzurufen. Hier ist ein Beispiel-Workflow:
Fügen Sie Platzhalter für Ihre Geheimnisse in Ihrer .env-Datei hinzu, indem Sie das Präfix ssm: für SSM-Parameter oder das Präfix cf: für CloudFormation-Ausgaben verwenden:
THIRD_PARTY_API_KEY="ssm:/third-party/api/key" AWS_SECRET_ACCESS_KEY="cf:my-stack:SecretAccessKey"
Verwenden Sie den folgenden Befehl, um das Skript auszuführen und die Geheimnisse abzurufen:
./secrets.sh
Nach der Ausführung des Skripts wird Ihre .env-Datei mit den tatsächlichen Werten aktualisiert, die von AWS abgerufen wurden:
THIRD_PARTY_API_KEY=actual-api-key-value AWS_SECRET_ACCESS_KEY=actual-access-key-value
Keine Hardcodierungsgeheimnisse mehr und keine manuellen Suchvorgänge mehr!
Bereit, loszulegen? So können Sie Secrets Loader in Ihrem Projekt einrichten:
git clone https://github.com/Thavarshan/secretst-loader.git cd secretst-loader
chmod x secrets.sh
Wenn Sie die AWS CLI nicht installiert haben, folgen Sie der AWS CLI-Installationsanleitung. Konfigurieren Sie nach der Installation Ihre AWS-Anmeldeinformationen:
aws configure
Verwenden Sie die Präfixe ssm: und cf:, um zu definieren, woher Geheimnisse kommen sollen:
THIRD_PARTY_API_KEY="ssm:/third-party/api/key" AWS_ACCESS_KEY_ID="cf:my-stack:AccessKeyId"
Sehen wir uns ein einfaches Beispiel an:
# 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"
./secrets.sh
# 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
Wenn Sie bei der Verwendung von Secrets Loader auf Probleme stoßen, sollten Sie Folgendes überprüfen:
AWS-Berechtigungen: Stellen Sie sicher, dass die AWS CLI richtig konfiguriert ist und dass Ihre IAM-Rolle oder Ihr IAM-Benutzer über ausreichende Berechtigungen für den Zugriff auf AWS SSM- und CloudFormation-Geheimnisse verfügt.
Syntaxfehler: Überprüfen Sie die Syntax in Ihrer .env-Datei noch einmal, um sicherzustellen, dass die Präfixe ssm: und cf: korrekt sind.
Skriptfehler: Wenn das Skript bestimmte Geheimnisse nicht abrufen kann, protokolliert es Warnungen, ruft die anderen jedoch weiterhin ab. Überprüfen Sie die Protokolle auf etwaige Fehlermeldungen und stellen Sie sicher, dass die AWS-Ressourcen vorhanden und zugänglich sind.
Das Skript ist erweiterbar konzipiert. Wenn Sie andere Secret-Management-Systeme (wie Azure Key Vault oder HashiCorp Vault) integrieren möchten, können Sie das Skript einfach ändern, um neue Präfixe und Abruflogik zu unterstützen.
Sie könnten beispielsweise ein azkv:-Präfix hinzufügen, um Geheimnisse aus Azure Key Vault abzurufen und den Abruf über die Azure-CLI abzuwickeln.
Secrets Loader ist Open Source und Beiträge sind immer willkommen! Wenn Sie Funktionen hinzufügen, Fehler beheben oder Verbesserungen vorschlagen möchten, können Sie Folgendes tun:
Wenn Sie es satt haben, Secrets umgebungsübergreifend manuell zu verwalten, ist Secrets Loader ein einfaches, effektives Tool zur Rationalisierung des Prozesses. Durch das dynamische Abrufen von Geheimnissen aus AWS SSM und CloudFormation können Sie Ihre Anmeldeinformationen sicher verwalten, ohne das Risiko einer Offenlegung bei der Versionskontrolle einzugehen.
Schauen Sie sich das Projekt auf GitHub an, probieren Sie es aus, und wenn Sie es nützlich finden, geben Sie uns ein ⭐ auf GitHub! Ihre Unterstützung trägt zum Wachstum des Projekts bei, und wir würden uns freuen, von Ihrer Unterstützung zu hören Feedback oder sehen Sie sich Ihre Beiträge zur Weiterentwicklung an.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3