Az IT szolgáltatások konfigurációt igényelnek. A konfiguráció részei azok a titkos adatok is, amelyeket nem szeretnénk kiszivárogtatni. Gyakori példák az adatbázis hozzáférési adatai vagy véletlenszerű értékek, amelyek a munkamenet sütiket vagy azonosítási hitelesítő adatokat védik. Ha szoftvert fejlesztünk, a helyzet tovább romlik a build folyamatokkal, terjesztési tanúsítványokkal és hozzáférési kulcsokkal.
A titkos adatok kompromittálása felhasználói fiók feltöréséhez, adatlopáshoz, build lánc elleni támadásokhoz és egyéb költséges problémákhoz vezethet. A rossz hírnév, a szellemi tulajdon elvesztése és a potenciálisan óriási jogi költségek csak a lehetséges következmények töredékei.
A Psono a psonoci legújabb verziójával védett környezeteket kínál. A védett környezetek lehetővé teszik, hogy folyamatokat futtassunk és azokat környezeti változókkal konfiguráljuk anélkül, hogy ezeket az értékeket a rendszer számára elérhetővé tennénk. Ezeket a környezeti változókat biztonságosan tölti be a Psono, és soha nincsenek sehol tárolva a szerveren, kizárólag egyetlen folyamat fér hozzájuk.
Először egy környezeti változó titkos adatot kell létrehozni. Fontos megjegyezni, hogy egyetlen titkos adat több környezeti változót is tartalmazhat, így például környezetenként csoportosíthatjuk őket, vagy csak azért, mert ezek összetartoznak, mint például egy adatbázis felhasználó és annak jelszava.
Ezután létrehozunk egy API kulcsot, és engedélyezzük neki, hogy hozzáférjen az új környezeti változós titkos adatunkhoz.
Jegyezzük fel az API kulcs titkos adatait, mivel ezek azok a paraméterek, amelyek közvetlenül ki vannak téve a rendszernek.
Telepítsük a psono ci-t a szerverünkre vagy a build pipeline-ba egyetlen paranccsal:
curl https://get.psono.com/psono/psono-ci/x86_64-linux/psonoci --output psonoci && chmod +x psonoci
És ahelyett, hogy csak simán futtatnánk a ./some_command parancsot, indítsuk el a folyamatot így:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./some_command
Egyszerűség kedvéért most argumentumként adjuk át például a --api-key-id és --api-secret-key-hex paramétereket, de akár egy konfigurációs fájlt is használhatunk.
A bemutató kedvéért készítettünk egy kis python szkriptet service.py néven, ami kiírja az összes környezeti változót és argumentumot, amelyet neki átadtunk.
#!/usr/bin/python3
import os
import sys
print("args: {}".format(sys.argv))
print("environment: {}".format(os.environ))
Ahelyett például, hogy a ./service.py --whatever=argument_1 parancsot futtatnánk, így hívhatjuk meg:
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
Az alábbi kimenetet kapjuk:
args: ['service.py', '--whatever', 'argument_1']
environment: environ({'db_host': 'prd-db.example.com:5432', 'db_password': 'Df55sr2UQm7Wshv7', 'db_username': 'production'})
Láthatjuk, hogy minden argumentum rendben továbbításra került, és minden előzőleg konfigurált környezeti változó elérhetővé vált a folyamat számára. Vannak flag-ek, amelyekkel az alapértelmezett rendszer környezeti változók is átadhatók, s ezek bővíthetők a Psono-ból származó változókkal. Részletesebb információt itt talál: psonoci dokumentáció.
Reméljük, tetszett ez a rövid kis bemutatónk, ahol megmutattuk, hogyan tudja a Psono megvédeni az infrastruktúrádat. Mindez nem valósulhatott volna meg Bernd nélkül, aki ennek a funkciónak az ötletgazdája, szóval nagyon köszönjük, Bernd!