IT servisi zahtijevaju konfiguraciju. Dio konfiguracije su tajne koje ne želite da budu otkrivene. Uobičajeni primjeri su vjerodajnice za baze podataka ili nasumične vrijednosti koje štite sesijske kolačiće ili vjerodajnice za autentifikaciju. Ako razvijate softver, stvari postaju još gore s build pipeline-ovima, certifikatima za distribuciju i pristupnim ključevima.
Kompromitirane tajne mogu dovesti do preuzimanja korisničkih računa, krađe podataka, napada na build sustave i drugih skupih problema. Loša reputacija, gubitak intelektualnog vlasništva i potencijalno veliki pravni troškovi samo su djelić mogućih posljedica.
Psono u najnovijoj verziji psonoci nudi zaštićena okruženja. Zaštićena okruženja omogućuju pokretanje procesa i njihovu konfiguraciju putem environment varijabli bez izlaganja tih podataka sustavu. Ove environment varijable sigurno se učitavaju iz Psona, nikad se ne pohranjuju na poslužitelju i izložene su samo jednom procesu.
Prvo morate kreirati tajnu s environment varijablama. Molimo da obratite pozornost da jedna tajna može sadržavati više environment varijabli kako biste ih mogli grupirati prema, primjerice, okruženju ili ih grupirati zajedno ako su povezane, poput korisničkog imena i lozinke za bazu podataka.
Nakon toga kreirate API ključ i dopuštate tom API ključu pristup vašoj novoj tajni s environment varijablama.
Zabilježite tajne API ključa jer su ti parametri jedini koji se izravno izlažu sustavu.
Instalirajte psono ci na svoj poslužitelj ili u build pipeline s jednom naredbom:
curl https://get.psono.com/psono/psono-ci/x86_64-linux/psonoci --output psonoci && chmod +x psonoci
Umjesto da jednostavno pokrenete ./some_command, proces pokrećete ovako:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./some_command
Radi jednostavnosti, parametre poput --api-key-id ili --api-secret-key-hex prosljeđujemo kao argumente, no možete ih konfigurirati i u konfiguracijskoj datoteci.
Za potrebe demonstracije kreirali smo malu python skriptu service.py koja ispisuje sve environment varijable i argumente proslijeđene skripti.
#!/usr/bin/python3
import os
import sys
print("args: {}".format(sys.argv))
print("environment: {}".format(os.environ))
Umjesto da primjerice izvršite ./service.py --whatever=argument_1, možete je izvršiti ovako:
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
Dobit ćete sljedeći ispis:
args: ['service.py', '--whatever', 'argument_1']
environment: environ({'db_host': 'prd-db.example.com:5432', 'db_password': 'Df55sr2UQm7Wshv7', 'db_username': 'production'})
Kao što vidite, svi argumenti su ispravno proslijeđeni i sve environment varijable koje smo prije konfigurirali dostupne su procesu. Postoje zastavice koje omogućuju da se normalne sistemske environment varijable također proslijede i prošire onima iz Psona. Više informacija možete pronaći ovdje u našoj dokumentaciji za psonoci.
Nadam se da vam se svidio naš kratki izlet koji pokazuje kako Psono može pomoći zaštititi vašu infrastrukturu. Sve ovo ne bi bilo moguće bez Bernda, genija iza ove funkcionalnosti, pa veliko hvala Bernde!