Ympäristömuuttujat ja salaisuudet Dockupissa
Dockupin ympäristömuuttujat ja salaisuudet: määritä, tuo, peitä, kierrätä ja ota palveluiden ja autonomisten agenttien määritykset turvallisesti uudelleen käyttöön.
Ympäristömuuttujat ja salaisuudet yhdistävät sovelluskoodin tuotantoympäristön määrityksiin, mutta niiden paljastumiseen ja elinkaareen liittyvät vaatimukset ovat erilaiset. Julkinen API:n perus-URL-osoite voidaan näyttää lokissa, mutta tietokannan salasanaa tai allekirjoitusavainta ei. Dockup tekee tämän eron näkyväksi ja peittää tallennettujen salaisuuksien arvot lukutulosteessa.
Määritysten muutokset edellyttävät myös uudelleenkäyttöönottoa. Uuden arvon asettaminen päivittää palvelun halutun määrityksen, mutta jo käynnissä oleva prosessi jatkaa käynnistyessään saamallaan ympäristöllä.
Mikä ero on muuttujalla ja salaisuudella?
Molemmat arvot välitetään sovellusprosessille ympäristötietoina, mutta niitä käsitellään tuotannossa eri tavoin.
| Tyyppi | Esimerkki | Voiko näkyä lukutulosteessa? | Suositeltu käsittely |
|---|---|---|---|
| Tavallinen muuttuja | NODE_ENV=production | Kyllä | Tarkistettava määritys |
| Tavallinen muuttuja | PUBLIC_API_URL=https://... | Kyllä | Voidaan säilyttää tiedostossa dockup.yaml |
| Salaisuus | DATABASE_URL=postgres://... | Tallennettua arvoa ei näytetä | Salaisuuskomento tai CI-säilö |
| Salaisuus | JWT_SIGNING_KEY=... | Tallennettua arvoa ei näytetä | Kierrätä ja rajoita käyttöä |
| Salaisuus | DOCKUP_TOKEN=... | Älä koskaan tallenna sovelluksen määrityksenä, ellei se ole välttämätöntä | Prosessitason autentikointi |
Merkitse arvo salaisuudeksi, kun sen paljastuminen mahdollistaisi pääsyn, toisena esiintymisen, salauksen purkamisen, allekirjoittamisen tai sivuttaisliikkumisen. ”Frontend sisältää sen jo” on merkki siitä, että kyseessä on julkinen määritys eikä salaisuus.
Älä lisää salaisuuksia versionhallintaan, tiedostoon dockup.yaml, esimerkkitulosteisiin, kuvakaappauksiin, agenttien kehotteisiin tai ongelmakuvauksiin. Peitetty paikkamerkki on turvallisempi kuin aidolta näyttävä token, sillä kopioiduista esimerkeistä tulee helposti tuotantokäytäntöjä.
Miten ympäristömäärityksiä asetetaan ja tarkastellaan?
Listaa täsmällisen kohteen nykyiset avaimet:
dockup env list -s production/api --json
Vastaus sisältää jokaisen avaimen, tiedon siitä, onko se salaisuus, sekä arvon vain silloin, kun arvoa ei ole suojattu.
Aseta tavallinen muuttuja:
dockup env set NODE_ENV=production \
-s production/api \
--json
Aseta salaisuus nykyisestä shell-ympäristöstä:
dockup env set DATABASE_URL="$DATABASE_URL" \
--secret \
-s production/api \
--json
Poista vanhentunut arvo:
dockup env remove OLD_FEATURE_FLAG \
-s production/api \
--json
Tuo arvot massana .env-tyylisestä tiedostosta:
dockup env import .env.production \
-s production/api \
--json
Käytä tuonnissa --secret-valitsinta vain, kun jokainen tuotu arvo on käsiteltävä salaisuutena. Sekatiedostoja on vaikeampi tarkistaa, ja ne johtavat usein joko harmittomien määritysten luokittelemiseen salaisuuksiksi tai tunnistetietojen puutteelliseen luokitteluun. Erottele ne toisistaan aina kun mahdollista.
Tarkat komennot löytyvät Dockup CLI -viitteestä.
Miksi määritysten muutosten jälkeen on tehtävä uudelleenkäyttöönotto?
Ympäristömuuttujat luetaan prosessin käynnistyessä. Alustan määritysten päivittäminen ei muuta käynnissä olevan Node.js-, Python-, Go- tai muun prosessin muistia. Palvelun on käynnistettävä uusi säilö uuden ympäristön kanssa.
Oikea järjestys on:
dockup env set FEATURE_FLAG=on \
-s production/api \
--json
dockup deploy production/api --wait --json
--wait tekee toisesta vaiheesta varmennettavan. Oletusaikakatkaisu on 900 sekuntia, poistumiskoodi 0 tarkoittaa onnistumista, ja virheet palauttavat nollasta poikkeavan koodin sekä rakenteiset koodit.
Dockupin blue-green-prosessi ilman käyttökatkoa käynnistää uuden version, suorittaa health gate -tarkistuksen ja siirtää liikenteen vasta sen jälkeen. Näin nykyistä säiliötä ei käynnistetä uudelleen paikallaan vahvistamattomalla määrityksellä.
Jos salaisuuden kierrätys muuttaa sekä tuottajaa että kuluttajaa, suunnittele yhteensopivuus etukäteen. Tietokannan salasanan kierrättäminen ennen kuin sovellus saa uuden arvon voi aiheuttaa käyttökatkon. Käytä päällekkäistä siirtymäaikaa, kahden avaimen tukea tai järjestyksessä tehtävää muutosta, jos ulkoinen järjestelmä sallii sen.
Käyttöönoton tekninen toteutus kuvataan artikkelissa käyttökatkottomat käyttöönotot.
Miten salaisuuksien peittäminen vähentää agenttien riskiä?
Koodausagentit tiivistävät usein komentojen tulosteita. Työkalu, joka palauttaa tallennetut salaisuudet, muuttaa harmittoman ”näytä nykyinen määritys” -pyynnön tunnistetietojen paljastumiseksi.
Dockup peittää salaisuuksien arvot. Agentti näkee, että DATABASE_URL on olemassa ja merkitty salaisuudeksi, mutta se ei voi lukea tallennettua yhteysmerkkijonoa. Agentti voi korvata arvon, kun käyttäjä antaa uuden arvon suojatun ympäristön kautta.
Tämä mahdollistaa turvallisemman ohjeen:
Vahvista, että vaaditut salaisuusavaimet ovat olemassa, mutta älä koskaan tulosta niiden arvoja. Jos arvoa on muutettava, lue se vain prosessiympäristöstä ja palauta salaisuuden sijaan avaimen nimi.
Salaisuuksien peittämisen on ulotuttava myös diagnostiikkaan. Vältä seuraavaa:
printenv
agentin keskustelulokissa, vaikka PRO-tilauksen exec-komennolla voidaan suorittaa kertaluonteisia säilökomentoja. Suosi kohdennettua sovellustarkistusta, joka ilmoittaa arvon olemassaolosta, pituusluokasta tai yhteyden onnistumisesta paljastamatta itse arvoa.
AI-agenttien tuotannon suojakaiteet -opas käsittelee kehotteiden ja työkalujen rajoja yhdessä.
Miten salaisuuksia pitäisi kierrättää ja auditoida?
Kierrätys on hallittu tuotantomuutos, ei tekstin muokkaus. Käytä seuraavaa järjestystä:
- Luo tai hanki uusi tunnistetieto sen omistavassa järjestelmässä.
- Tallenna se hyväksyttyyn CI- tai operaattoriympäristöön.
- Aseta uusi salaisuus Dockupiin tulostamatta sitä.
- Ota käyttöön
--wait-valitsimella. - Vahvista palvelun tila ja sovelluksen toiminta.
- Peruuta vanha tunnistetieto, kun uusi versio on aktiivinen.
- Tarkista Dockupin audit-loki.
- Kirjaa kierrätyspäivä ja omistaja, mutta älä kirjaa arvoa.
dockup audit --writes --json
Auditointitodisteista pitäisi näkyä, että määritys muuttui ja sitä seurasi käyttöönotto. Ne eivät saa sisältää salaisuuden arvoa.
Tietokannan tunnistetietojen yhteydessä on otettava huomioon connection poolit. Olemassa olevat yhteydet voivat säilyä autentikoituina kierrätyksen jälkeen, kun taas uudet yhteydet käyttävät uutta salasanaa. Varmistukseen on sisällytettävä uusi yhteys, ei vain vanhasta poolista palveltavia pyyntöjä.
Oikeutettujen API-avainten yhteydessä tallenna luotu arvo turvallisesti heti luomisen aikana. Tallenna se välittömästi hyväksyttyyn salaisuusjärjestelmään, rajaa sen oikeudet tarpeellisiin ja kierrätä se toistamatta sitä käyttöönoton tulosteessa.
Millainen määrityskäytäntö estää ajautumisen?
Määritä, mitkä arvot kuuluvat kuhunkin lähteeseen:
| Lähde | Sopiva sisältö |
|---|---|
| Repository-koodi | Oletusarvot, jotka eivät riipu ympäristöstä |
dockup.yaml | Tarkistettava tavallinen käyttöönottomääritys |
| Dockupin salaisuusmuuttujat | Ajon aikaiset tunnistetiedot |
| CI-salaisuussäilö | Käyttöönottotoken ja injektoitavat kierrätysarvot |
| Hallitun tietokannan tuloste | Kuluttavalle palvelulle välitettävät yhteystiedot |
Paikallinen .env | Vain kehittäjien arvot, joita ei lisätä Gitiin |
dockup.yaml apply on oletusarvoisesti additiivinen. Tiedostossa olevat tavalliset ympäristöarvot säilyvät, kunnes --prune-valitsinta käytetään nimenomaisesti, eikä salaisuuksia koskaan karsita tätä reittiä pitkin. Lue artikkeli dockup.yaml määrityksenä koodina ennen manifestin siivouksen käyttöönottoa.
Käytä ympäristöissä yhdenmukaisia avainnimiä, mutta älä oleta, että arvot ovat keskenään vaihdettavissa. Staging-avain ei saa antaa pääsyä tuotantoon. Yksityisen verkkoyhteyden projektin preview-käyttöönotot saavat automaattisesti luodun vain luku -oikeuksisen tietokantakäyttäjän tuotantotietojen käyttöä varten; niiden ei pitäisi periä kirjoitusoikeuksisia tunnistetietoja oletusarvoisesti.
Vuotaneen salaisuuden käsittely
Jos salaisuus näkyy keskustelulokissa, lokissa, commitissa tai kuvakaappauksessa, sen myöhempi peittäminen ei riitä. Käsittele sitä vaarantuneena:
- Peruuta tai kierrätä se lähdejärjestelmässä.
- Päivitä Dockupin salaisuus.
- Ota uusi versio käyttöön ja varmista se.
- Poista paljastunut materiaali mahdollisuuksien mukaan.
- Etsi väärinkäyttöä auditointi- ja käyttöoikeuslokeista.
- Kirjaa syy ja ehkäisevä muutos.
Git-historian uudelleenkirjoittaminen voi vähentää myöhempää löytymisen riskiä, mutta se ei todista kopioidun tunnistetiedon kadonneen. Peruuttaminen on ratkaiseva toimenpide.
Ympäristön tarkistuslista
Varmista ennen jokaista tuotantojulkaisua, että vaaditut avaimet ovat olemassa, salaisuusavaimet on merkitty salaisuuksiksi, salaisuuksia ei ole commitattu, tavalliset arvot vastaavat aiottua ympäristöä ja että uudelleenkäyttöönotto kuuluu muutokseen. Tarkista sitten tila ja käyttöaika:
dockup status production/api --json
dockup uptime production/api --hours 24 --json
Valvonta suoritetaan minuutin välein, ja se sisältää p95-vasteajan. Onnistunutta määritysten käyttöönottoa on silti seurattava ajonaikaisten regressioiden varalta.
Palvelun luontia ja alkuasetuksia varten seuraa opasta Git-repositorystä tuotantoon.
Vahvista määritys paljastamatta sitä
Sovellusten tulee epäonnistua selkeästi, jos vaadittu avain puuttuu, mutta diagnostiikka ei saa tulostaa arvoa. Käynnistystarkistus voi ilmoittaa esimerkiksi missing: ["DATABASE_URL"] tai invalid format: ["PUBLIC_URL"] ja lopettaa sen jälkeen nollasta poikkeavalla poistumiskoodilla.
Määritä valinnaiselle arvolle fallback koodissa ja dokumentoi, onko fallback turvallinen tuotannossa. Hiljaiset kehitysoletusarvot — paikalliset tietokantaisännät, debug-tilat, salliva CORS tai testitunnistetiedot — eivät saa aktivoitua vain siksi, että tuotantoavain puuttui.
Tämä validointi tekee ympäristömuuttujista ja salaisuuksista havaittavia muuttamatta lokeja tunnistetietoluetteloksi.
Käsittele useita palveluita ja jaettuja tunnistetietoja harkiten
Yhden salaisuuden kopioiminen useaan palveluun luo kierrätysriippuvuuden. Suosi palvelukohtaisia tunnistetietoja, jos ulkoinen järjestelmä tukee niitä. Vaarantunut worker-token ei saa antaa samaa pääsyä kuin julkinen API.
Kun jaettua arvoa ei voida välttää, ylläpidä omistaja- ja kuluttajaluetteloa. Kierrätä kaikkien kuluttajien tunnistetiedot koordinoidussa aikaikkunassa ja varmista uudet yhteydet jokaisen uudelleenkäyttöönoton jälkeen. Älä pyydä agenttia ”etsimään kaikkia palveluita, jotka todennäköisesti käyttävät tätä avainta” nimen samankaltaisuuden perusteella, vaan käytä eksplisiittistä inventaariota ja auditointitietoja.
Yksityinen verkkoyhteys voi vähentää tietokantaliikenteen altistumista, mutta se ei poista tunnistetietojen tarvetta. Sisäiset isäntänimet hallitsevat reittiä, kun taas autentikointi hallitsee sitä, kuka saa käyttää tietokantaa.
Aloita varmennettavasta käyttöönotosta
Luokittele jokainen avain ennen sen asettamista, varmista salaisuuksien lukemisen peittäminen ja sisällytä vaadittu uudelleenkäyttöönotto samaan tarkistettuun muutokseen.
Aloita ilmaiseksi osoitteessa app.dockup.ai. Free-sopimus maksaa 0 $ kuukaudessa, sisältää 10 $ aloitussaldoa ja tukee yhtä työtilaa, kolmea tietokantaa ja kolmea käyttöönottoa.
Usein kysytyt kysymykset
Palauttaako Dockup tallennettujen salaisuuksien arvot?
Ei. Salaisuuksien arvot peitetään lukutulosteessa. Avaimet ja salaisuusmerkinnät jäävät näkyviin, jotta operaattorit voivat varmistaa vaaditun määrityksen olemassaolon.
Miksi ympäristömuuttujan muuttamisen jälkeen on tehtävä uusi käyttöönotto?
Käynnissä oleva prosessi sai ympäristönsä käynnistyessään. Uusi käyttöönotto luo päivitetyt arvot sisältävän uuden säilön ja varmistaa sen health gate -tarkistuksella.
Voinko sijoittaa salaisuuksia tiedostoon dockup.yaml?
Et. Käytä dockup.yaml-tiedostoa tavalliseen tarkistettavaan määritykseen ja käytä tunnistetietoihin salaisuusympäristökomentoja tai CI-salaisuuksien injektointia.
Miten tuon useita ympäristömuuttujia?
Käytä dockup env import -komentoa .env-tyylisen tiedoston ja täsmällisen palvelukohteen kanssa. Käytä import-komennon --secret-valitsinta vain, kun kaikki tuodut arvot ovat salaisuuksia.
Mitä teen, jos salaisuus paljastuu lokissa?
Peruuta tai kierrätä se heti, päivitä Dockupin salaisuus, ota uusi versio käyttöön, tutki käyttöoikeuslokit ja korjaa paljastumisen mahdollistanut prosessi.
