IT-diensten vereisen configuratie. Onderdeel van de configuratie zijn geheimen die je niet blootgesteld wilt zien. Vaak voorkomende voorbeelden zijn database-inloggegevens of willekeurige waarden die sessie-cookies of authenticatie-inloggegevens beschermen. Als je software ontwikkelt, wordt het vaak erger met build-pijplijnen, distributiecertificaten en toegangssleutels.
Gecompromitteerde geheimen kunnen leiden tot gebruikersaccountovernames, datadiefstal, aanvallen op de build-keten en andere kostbare problemen. Slechte reputatie, verlies van intellectuele eigendom en mogelijk enorme juridische kosten zijn slechts een fractie van de mogelijke kosten.
Psono biedt met de nieuwste versie van psonoci beschermde omgevingen. Beschermde omgevingen stellen je in staat processen uit te voeren en ze te configureren via omgevingsvariabelen zonder ze bloot te stellen aan het systeem. Deze omgevingsvariabelen worden veilig geladen vanuit Psono, nergens op de server opgeslagen en worden slechts aan één proces blootgesteld.
Eerst moet je een geheim voor omgevingsvariabelen aanmaken. Let op dat één geheim meerdere omgevingsvariabelen kan bevatten, zodat je omgevingsvariabelen kunt groeperen bijvoorbeeld per omgeving of simpelweg omdat ze bij elkaar horen zoals een databasegebruiker en een databasewachtwoord.
Daarna maak je een API-sleutel aan en geef je deze API-sleutel toegang tot je nieuwe geheim voor omgevingsvariabelen.
Noteer nu de API-sleutelgeheimen, aangezien deze parameters de enige parameters zijn die direct aan het systeem worden blootgesteld.
Installeer psono ci op je server of in je build-pijplijn met een enkel commando:
curl https://get.psono.com/psono/psono-ci/x86_64-linux/psonoci --output psonoci && chmod +x psonoci
En in plaats van simpelweg ./some_command
uit te voeren, start je je proces als volgt:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./some_command
Voor de eenvoud geven we de parameters zoals --api-key-id
of --api-secret-key-hex
als argumenten door, maar je kunt ook een configuratiebestand gebruiken.
Voor demodoeleinden hebben we dit kleine pythonscript service.py
gemaakt, dat alle omgevingsvariabelen en argumenten weergeeft die aan het script zijn doorgegeven.
#!/usr/bin/python3
import os
import sys
print("args: {}".format(sys.argv))
print("environment: {}".format(os.environ))
In plaats van bijvoorbeeld ./service.py --whatever=argument_1
uit te voeren, kunnen we het als volgt uitvoeren:
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
We krijgen de volgende uitvoer:
args: ['service.py', '--whatever', 'argument_1']
environment: environ({'db_host': 'prd-db.example.com:5432', 'db_password': 'Df55sr2UQm7Wshv7', 'db_username': 'production'})
Zoals we kunnen zien, werden alle argumenten correct doorgegeven en waren alle omgevingsvariabelen die we eerder hadden geconfigureerd beschikbaar voor het proces. Er zijn vlaggen aanwezig die je in staat stellen om de normale systeemomgevingsvariabelen ook door te geven en ze uit te breiden met die van Psono. Meer gedetailleerde informatie is hier te vinden in onze documentatie voor psonoci.
Ik hoop dat je onze kleine excursie leuk vond, waarin we demonstreerden hoe Psono kan helpen om je infrastructuur te beschermen. Dit alles zou niet mogelijk zijn zonder Bernd, het brein achter deze functie, dus heel erg bedankt Bernd!