IT-tjenester krever konfigurasjon. En del av konfigurasjonen er hemmeligheter som du ikke ønsker å eksponere. Vanlige eksempler er databaselegitimasjon eller tilfeldige verdier som beskytter sesjonscookies eller autentiseringslegitimasjon. Hvis du utvikler programvare, har ting en tendens til å bli verre med byggpipeline, distribusjonssertifikater og tilgangsnøkler.
Kompromitterte hemmeligheter kan føre til overtakelse av brukerkontoer, datatyveri, angrep på byggkjeden og andre kostbare problemer. Dårlig rykte, tap av intellektuell eiendom og potensielt enorme juridiske gebyrer er bare en brøkdel av de mulige kostnadene.
Psono tilbyr med den nyeste versjonen av psonoci beskyttede miljøer. Beskyttede miljøer lar deg kjøre prosesser og konfigurere dem gjennom miljøvariabler uten å eksponere dem for systemet. Disse miljøvariablene lastes sikkert fra Psono, lagres aldri noen steder på serveren og eksponeres kun for én enkelt prosess.
Først må du opprette en hemmelighet for miljøvariabler. Vær oppmerksom på at en enkelt hemmelighet kan inneholde flere miljøvariabler, slik at du kan gruppere miljøvariabler etter f.eks. et miljø eller bare fordi de hører sammen som en databasebruker og et databasepassord.
Deretter oppretter du en API-nøkkel og tillater denne API-nøkkelen å få tilgang til din nye hemmelighet for miljøvariabler.
Merk deg API-nøkkelhemmelighetene, da disse parameterne er de eneste parameterne som er direkte eksponert for systemet.
Installer psono ci på serveren din eller i byggpipelinen med en enkel kommando:
curl https://get.psono.com/psono/psono-ci/x86_64-linux/psonoci --output psonoci && chmod +x psonoci
Og i stedet for bare å kjøre ./some_command
, starter du prosessen din slik:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./some_command
For enkelhetens skyld sender vi parametere som --api-key-id
eller --api-secret-key-hex
som argumenter, men du kan også konfigurere en konfigurasjonsfil i stedet.
For demonstrasjonsformål har vi laget dette lille python-skriptet service.py
som skriver ut alle miljøvariablene og argumentene som ble sendt til skriptet.
#!/usr/bin/python3
import os
import sys
print("args: {}".format(sys.argv))
print("environment: {}".format(os.environ))
I stedet for å kjøre for eksempel ./service.py --whatever=argument_1
kan vi kjøre det slik:
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
Vi får følgende utgang:
args: ['service.py', '--whatever', 'argument_1']
environment: environ({'db_host': 'prd-db.example.com:5432', 'db_password': 'Df55sr2UQm7Wshv7', 'db_username': 'production'})
Som vi kan se, ble alle argumentene sendt riktig og alle miljøvariablene som vi tidligere konfigurerte var tilgjengelige for prosessen. Det finnes flagg som lar deg sende de vanlige systemmiljøvariablene også og utvide dem med de fra Psono. Mer detaljert informasjon finner du her i vår dokumentasjon for psonoci.
Jeg håper du likte vår lille utflukt som viser hvordan Psono kan hjelpe til med å beskytte infrastrukturen din. Alt dette ville ikke vært mulig uten Bernd, hjernen bak denne funksjonen, så tusen takk Bernd!