Varijable okruženja i tajne na Dockupu
Varijable okruženja i tajne na Dockupu: sigurno postavite, uvezite, maskirajte, rotirajte i ponovno implementirajte konfiguraciju za servise i autonomne agente.
Varijable okruženja i tajne povezuju kôd aplikacije s produkcijskom konfiguracijom, ali imaju različite zahtjeve za otkrivanje i životni ciklus. Javni osnovni URL API-ja može se sigurno prikazati u zapisnicima, dok lozinka baze podataka ili ključ za potpisivanje ne smiju. Dockup tu razliku izričito predstavlja i maskira pohranjene vrijednosti tajni u izlazu naredbi za čitanje.
Promjene konfiguracije zahtijevaju i ponovnu implementaciju. Postavljanjem nove vrijednosti ažurira se željena konfiguracija servisa, ali već pokrenuti proces zadržava okruženje koje je primio pri pokretanju.
Koja je razlika između varijable i tajne?
Obje vrijednosti ulaze u proces aplikacije kao podaci okruženja, ali se operativno tretiraju različito.
| Vrsta | Primjer | Smije li se pojaviti u izlazu za čitanje? | Preporučeni način rukovanja |
|---|---|---|---|
| Obična varijabla | NODE_ENV=production | Da | Konfiguracija koju je moguće pregledati |
| Obična varijabla | PUBLIC_API_URL=https://... | Da | Može se nalaziti u dockup.yaml |
| Tajna | DATABASE_URL=postgres://... | Pohranjena vrijednost ne | Naredba za tajne ili CI spremište |
| Tajna | JWT_SIGNING_KEY=... | Pohranjena vrijednost ne | Rotirati i ograničiti |
| Tajna | DOCKUP_TOKEN=... | Nikad je ne pohranjujte kao konfiguraciju aplikacije, osim ako je potrebna | Autentikacija na razini procesa |
Označite vrijednost kao tajnu kada bi njezino otkrivanje omogućilo pristup, lažno predstavljanje, dešifriranje, potpisivanje ili lateralno kretanje. Tvrdnja „frontend je već sadrži” znak je da je riječ o javnoj konfiguraciji, a ne o tajni.
Ne stavljajte tajne u sustav za kontrolu verzija, dockup.yaml, ogledni izlaz, snimke zaslona, upite agentima ni opise problema. Redigirani rezervirani tekst sigurniji je od tokena koji izgleda stvarno jer kopirani primjeri često postanu produkcijska praksa.
Kako postaviti i pregledati konfiguraciju okruženja?
Izlistajte trenutne ključeve za točno određeni cilj:
dockup env list -s production/api --json
Odgovor sadrži svaki ključ, informaciju o tome je li tajna te vrijednost samo kada nije zaštićena.
Postavite običnu varijablu:
dockup env set NODE_ENV=production \
-s production/api \
--json
Postavite tajnu iz varijable okruženja trenutačne ljuske:
dockup env set DATABASE_URL="$DATABASE_URL" \
--secret \
-s production/api \
--json
Uklonite zastarjelu vrijednost:
dockup env remove OLD_FEATURE_FLAG \
-s production/api \
--json
Skupno uvezite datoteku u stilu .env:
dockup env import .env.production \
-s production/api \
--json
Opciju --secret pri uvozu koristite samo kada svaku uvezenu vrijednost treba tretirati kao tajnu. Miješane datoteke teže je pregledati i često potiču pretjerano označavanje bezopasne konfiguracije kao tajne ili nedovoljno označavanje vjerodajnica. Kad god je moguće, razdvojite ih.
Točan skup naredbi održava se u referentnoj dokumentaciji za Dockup CLI.
Zašto je nakon promjena konfiguracije potrebna ponovna implementacija?
Varijable okruženja čitaju se pri pokretanju procesa. Ažuriranje konfiguracije platforme ne mijenja memoriju već pokrenutog procesa u Node.jsu, Pythonu, Gou ili nekom drugom runtimeu. Servis mora pokrenuti novi container s novim okruženjem.
Ispravan slijed je:
dockup env set FEATURE_FLAG=on \
-s production/api \
--json
dockup deploy production/api --wait --json
--wait omogućuje provjeru drugog koraka. Zadano je vremensko ograničenje 900 sekundi, izlaz 0 znači uspjeh, a neuspjesi vraćaju vrijednost različitu od nule zajedno sa strukturiranim kodovima.
Dockupov blue-green proces bez prekida rada pokreće novu verziju, primjenjuje provjeru ispravnosti i tek tada preusmjerava promet. Time se izbjegava ponovno pokretanje trenutačnog containera na mjestu s neprovjerenom konfiguracijom.
Ako rotacija tajne mijenja i producenta i potrošača, planirajte kompatibilnost. Rotiranje lozinke baze podataka prije nego što aplikacija primi novu vrijednost može uzrokovati prekid rada. Upotrijebite razdoblje preklapanja, podršku za dva ključa ili promjenu pravilnim redoslijedom kada je to dopušteno u vanjskom sustavu.
Mehanika implementacije objašnjena je u vodiču implementacije bez prekida rada.
Kako maskiranje tajni smanjuje rizik za agente?
Coding agenti često sažimaju izlaz naredbi. Alat koji vraća pohranjene tajne bezazleni zahtjev „prikaži trenutačnu konfiguraciju” pretvara u izlaganje vjerodajnica.
Dockup maskira vrijednosti tajni. Agent može vidjeti da DATABASE_URL postoji i da je označen kao tajna, ali ne može pročitati pohranjeni connection string. Vrijednost može zamijeniti kada korisnik novu vrijednost proslijedi kroz sigurno okruženje.
To omogućuje sigurniju uputu:
Potvrdi da potrebni ključevi tajni postoje, ali nikad ne ispisuj njihove vrijednosti. Ako se vrijednost mora promijeniti, pročitaj je samo iz okruženja procesa i vrati naziv ključa, a ne tajnu.
Maskiranje tajni treba obuhvatiti i dijagnostiku. Izbjegavajte:
printenv
u transkriptu agenta, iako naredba PRO exec može pokretati jednokratne naredbe u containeru. Umjesto toga koristite ciljanu provjeru aplikacije koja prijavljuje prisutnost, kategoriju duljine ili uspješnost povezivanja bez otkrivanja vrijednosti.
Vodič zaštitne mjere za AI agente u produkciji zajedno obrađuje granice prompta i alata.
Kako rotirati i revidirati tajne?
Rotacija je kontrolirana produkcijska promjena, a ne uređivanje teksta. Koristite ovaj slijed:
- Izradite ili dohvatite novu vjerodajnicu u sustavu koji je nad njom nadležan.
- Pohranite je u odobreno CI ili operatorsko okruženje.
- Postavite novu tajnu u Dockupu bez njezina ispisivanja.
- Implementirajte je pomoću
--wait. - Provjerite ispravnost i ponašanje aplikacije.
- Opozovite staru vjerodajnicu nakon što je nova verzija aktivna.
- Pregledajte Dockupov audit log.
- Zabilježite datum rotacije i vlasnika, ali ne i vrijednost.
dockup audit --writes --json
Revizijski trag treba pokazati da je konfiguracija promijenjena i da je nakon toga uslijedila implementacija. Ne smije sadržavati vrijednost tajne.
Za vjerodajnice baze podataka uzmite u obzir connection poolove. Postojeće veze mogu ostati autentificirane nakon rotacije, dok nove veze koriste novu lozinku. Provjera treba uključivati novu vezu, a ne samo zahtjeve koje poslužuje stari pool.
Za API ključeve s ograničenim dozvolama sigurno zabilježite generiranu vrijednost tijekom izrade. Odmah je pohranite u odobreni sustav tajni, ograničite je na potrebne dozvole i rotirajte bez ponovnog ispisivanja u izlazu implementacije.
Koja konfiguracijska pravila sprječavaju drift?
Definirajte koje vrijednosti pripadaju kojem izvoru:
| Izvor | Odgovarajući sadržaj |
|---|---|
| Kôd repozitorija | Zadane vrijednosti koje ne ovise o okruženju |
dockup.yaml | Konfiguracija implementacije koju je moguće pregledati |
| Dockupove varijable tajni | Runtime vjerodajnice |
| CI spremište tajni | Token za implementaciju i ubrizgane vrijednosti za rotaciju |
| Izlaz upravljane baze podataka | Podaci za povezivanje proslijeđeni servisu koji ih koristi |
Lokalni .env | Vrijednosti samo za razvoj, isključene iz Gita |
Primjena dockup.yaml prema zadanim je postavkama aditivna. Obične vrijednosti okruženja koje nisu u datoteci ostaju dok se izričito ne upotrijebi --prune, a tajne se tim putem nikad ne uklanjaju. Prije prihvaćanja čišćenja manifesta pregledajte dockup.yaml kao konfiguraciju u kôdu.
Koristite dosljedne nazive ključeva u svim okruženjima, ali nemojte pretpostaviti da su vrijednosti međusobno zamjenjive. Staging ključ ne smije omogućiti pristup produkciji. Preview implementacije u projektu s privatnim umrežavanjem automatski dobivaju read-only korisnika baze podataka za pristup produkcijskim podacima; prema zadanim postavkama ne bi smjele naslijediti write vjerodajnice.
Odgovor na incident s procurenom tajnom
Ako se tajna pojavi u transkriptu, zapisniku, commitu ili snimci zaslona, naknadno maskiranje nije dovoljno. Tretirajte je kao kompromitiranu:
- Opozovite je ili rotirajte u izvornom sustavu.
- Ažurirajte tajnu u Dockupu.
- Ponovno implementirajte i provjerite.
- Uklonite izloženi materijal gdje je to moguće.
- Pretražite revizijske i pristupne zapisnike radi moguće zlouporabe.
- Dokumentirajte uzrok i promjenu kojom se sprječava ponavljanje.
Prepisivanje Git povijesti može smanjiti mogućnost budućeg pronalaska, ali ne može dokazati da je kopirana vjerodajnica nestala. Opoziv je odlučujuća mjera.
Kontrolni popis za pregled okruženja
Prije svakog produkcijskog izdanja provjerite postoje li potrebni ključevi, jesu li ključevi tajni označeni kao tajne, nijedna tajna nije commitana, obične vrijednosti odgovaraju predviđenom okruženju i ponovna je implementacija dio promjene. Zatim provjerite status i dostupnost:
dockup status production/api --json
dockup uptime production/api --hours 24 --json
Nadzor se izvršava svake minute i uključuje p95 vrijeme odgovora. Uspješnu implementaciju konfiguracije i dalje treba pratiti radi regresija tijekom rada.
Za izradu servisa i početno postavljanje slijedite vodič od Git repozitorija do produkcije.
Provjerite konfiguraciju bez njezina otkrivanja
Aplikacije trebaju jasno prijaviti nedostajući obavezni ključ, ali dijagnostika ne smije ispisivati njegovu vrijednost. Provjera pri pokretanju može prijaviti popis poput missing: ["DATABASE_URL"] ili invalid format: ["PUBLIC_URL"], a zatim završiti s vrijednošću različitom od nule.
Za neobaveznu vrijednost definirajte rezervnu vrijednost u kôdu i dokumentirajte je li ta vrijednost sigurna za produkciju. Tihi razvojni zadani parametri — lokalni hostovi baze podataka, debug načini rada, permisivni CORS ili testne vjerodajnice — ne bi se smjeli aktivirati samo zato što produkcijski ključ nedostaje.
Ta provjera čini varijable okruženja i tajne vidljivima bez pretvaranja zapisnika u popis vjerodajnica.
Namjerno upravljajte s više servisa i dijeljenim vjerodajnicama
Kopiranje jedne tajne u više servisa stvara ovisnost o rotaciji. Kad god vanjski sustav to podržava, prednost dajte vjerodajnicama specifičnima za servis. Kompromitirani token workera ne bi trebao omogućiti isti pristup kao javni API.
Kada je dijeljenje vrijednosti neizbježno, vodite popis vlasnika i potrošača. Rotirajte sve potrošače u usklađenom terminu i nakon svake ponovne implementacije provjerite nove veze. Nemojte tražiti od agenta da „pronađe svaki servis koji vjerojatno koristi ovaj ključ” na temelju sličnosti naziva; koristite izričit inventar i revizijske dokaze.
Privatno umrežavanje može smanjiti izloženost prometa baze podataka, ali ne uklanja potrebu za vjerodajnicama. Interni hostnames određuju put, a autentikacija određuje tko smije koristiti bazu podataka.
Započnite provjerljivom implementacijom
Klasificirajte svaki ključ prije postavljanja, provjerite jesu li čitanja tajni maskirana i uključite potrebnu ponovnu implementaciju u istu pregledanu promjenu.
Započnite besplatno na app.dockup.ai. Plan Free košta 0 USD mjesečno, uključuje početni kredit od 10 USD te podržava jedan workspace, tri baze podataka i tri implementacije.
Česta pitanja
Vraća li Dockup pohranjene vrijednosti tajni?
Ne. Vrijednosti tajni maskirane su u izlazu za čitanje. Ključevi i oznake tajni ostaju vidljivi kako bi operatori mogli provjeriti postoji li potrebna konfiguracija.
Zašto moram ponovno implementirati servis nakon promjene varijable okruženja?
Pokrenuti je proces primio svoje okruženje pri pokretanju. Nova implementacija stvara novi container s ažuriranim vrijednostima i provjerava ga kroz provjeru ispravnosti.
Mogu li staviti tajne u dockup.yaml?
Ne. Koristite dockup.yaml za običnu konfiguraciju koju je moguće pregledati, a naredbe za tajne u okruženju ili ubrizgavanje tajni putem CI-ja za vjerodajnice.
Kako uvesti više varijabli okruženja?
Koristite dockup env import s datotekom u stilu .env i točno određenim ciljem servisa. Opciju import --secret koristite samo kada su sve uvezene vrijednosti tajne.
Što trebam učiniti ako se tajna otkrije u zapisniku?
Odmah je opozovite ili rotirajte, ažurirajte tajnu u Dockupu, ponovno implementirajte, istražite pristupne zapisnike i popravite proces koji je omogućio otkrivanje.
