IT-Dienste erfordern Konfiguration. Teil der Konfiguration sind Geheimnisse, die man nicht preisgeben möchte. Häufige Beispiele sind Datenbankanmeldeinformationen oder zufällige Werte, die Sitzungscookies oder Authentifizierungsdaten schützen. Wenn Sie Software entwickeln, wird die Situation mit Build-Pipelines, Distributionszertifikaten und Zugangsschlüsseln oft noch schlimmer.
Kompromittierte Geheimnisse können zur Übernahme von Benutzerkonten, Datendiebstahl, Angriffen auf die Build-Kette und anderen kostspieligen Problemen führen. Schlechter Ruf, Verlust von geistigem Eigentum und potenziell hohe Anwaltskosten sind nur ein Bruchteil der möglichen Kosten.
Psono bietet mit der neuesten Version von psonoci geschützte Umgebungen. Geschützte Umgebungen ermöglichen es Ihnen, Prozesse zu starten und sie über Umgebungsvariablen zu konfigurieren, ohne sie dem System auszusetzen. Diese Umgebungsvariablen werden sicher von Psono geladen, niemals irgendwo auf dem Server gespeichert und sind nur einem einzigen Prozess zugänglich.
Zuerst müssen Sie ein Geheimnis für Umgebungsvariablen erstellen. Bitte beachten Sie, dass ein einzelnes Geheimnis mehrere Umgebungsvariablen enthalten kann, sodass Sie Umgebungsvariablen z.B. nach einer Umgebung gruppieren können oder einfach weil sie zusammengehören, wie ein Datenbankbenutzer und ein Datenbankpasswort.
Anschließend erstellen Sie einen API-Schlüssel und erlauben diesem API-Schlüssel den Zugriff auf Ihr neues Geheimnis für Umgebungsvariablen.
Notieren Sie sich nun die Geheimnisse des API-Schlüssels, da diese Parameter die einzigen sind, die direkt dem System ausgesetzt werden.
Installieren Sie psono ci auf Ihrem Server oder in Ihrer Build-Pipeline mit einem einzigen Befehl:
curl https://get.psono.com/psono/psono-ci/x86_64-linux/psonoci --output psonoci && chmod +x psonoci
Und anstatt einfach ./some_command
auszuführen, starten Sie Ihren Prozess so:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./some_command
Zur Vereinfachung übergeben wir die Parameter wie --api-key-id
oder --api-secret-key-hex
als Argumente, Sie können jedoch auch eine Konfigurationsdatei einstellen.
Aus Demozwecken haben wir dieses kleine Python-Skript service.py
erstellt, das alle Umgebungsvariablen und Argumente ausgibt, die an das Skript übergeben wurden.
#!/usr/bin/python3
import os
import sys
print("args: {}".format(sys.argv))
print("environment: {}".format(os.environ))
Anstatt zum Beispiel ./service.py --whatever=argument_1
auszuführen, können wir es so ausführen:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./service.py --whatever=argument_1
Wir erhalten die folgende Ausgabe:
args: ['service.py', '--whatever', 'argument_1']
environment: environ({'db_host': 'prd-db.example.com:5432', 'db_password': 'Df55sr2UQm7Wshv7', 'db_username': 'production'})
Wie wir sehen können, wurden alle Argumente ordnungsgemäß übergeben und alle zuvor konfigurierten Umgebungsvariablen waren für den Prozess verfügbar. Es gibt Flags, mit denen man auch die normalen Systemumgebungsvariablen übergeben und mit denen von Psono erweitern kann. Weitere detaillierte Informationen finden Sie hier in unserer Dokumentation für psonoci.
Ich hoffe, Ihnen hat unser kleiner Exkurs gefallen, der demonstriert, wie Psono helfen kann, Ihre Infrastruktur zu schützen. All dies wäre nicht möglich ohne Bernd, das Genie hinter dieser Funktion, daher vielen Dank Bernd!