Privatno umrežavanje i domene .internal na platformi Dockup
Privatno umrežavanje na platformi Dockup povezuje servise i baze podataka unutar projekta putem naziva .internal, izolira projekte i previewjima omogućuje pristup bazi podataka samo za čitanje.
Privatno umrežavanje omogućuje servisima i upravljanim bazama podataka unutar jednog projekta na platformi Dockup komunikaciju bez slanja prometa unutar istog projekta preko javnog interneta. Svaki resurs dobiva stabilan naziv hosta u obliku <slug>.internal, dok odvojeni projekti ostaju izolirani jedni od drugih.
Mreža se uključuje po izboru. Uključivanjem se postojeći resursi projekta povezuju bez potrebe da se aplikacijski promet odmah prebaci na novu konfiguraciju, a servisi nakon ponovnog deploymenta dobivaju interne connection varijable.
Kako umrežavanje između servisa smanjuje izloženost javnosti?
Javna krajnja točka baze podataka dostupna je s interneta čak i kada autentikacija blokira neovlaštenu upotrebu. Privatna ruta uklanja tu izloženost za aplikacijski promet i servisima daje stabilan interni naziv koji ne ovisi o javnoj adresi.
Isto se načelo primjenjuje na pozive između servisa. API može pozvati worker, interni administrativni servis ili backend putem mreže projekta, umjesto putem javne prilagođene domene.
| Putanja prometa | Javna ruta | Privatna ruta |
|---|---|---|
| API prema PostgreSQL-u | Javni host i port | main-db.internal |
| Web prema API-ju | Javna prilagođena domena | api.internal |
| Worker prema Redisu | Javni host i port | app-redis.internal |
| Preview prema produkcijskoj bazi | Javne vjerodajnice baze | Interni korisnik samo za čitanje |
| Poziv između projekata | Potrebna javna krajnja točka | Blokirano izolacijom projekta |
Privatno ne znači bez autentikacije. Nastavite koristiti korisnike baze podataka, autorizaciju servisa i secrets. Mreža određuje dostupnost, a vjerodajnice ovlasti.
Kako uključiti privatno umrežavanje projekta?
Uključite mrežu za slug projekta:
dockup network enable production --json
Ova operacija povezuje servise i upravljane baze podataka s mrežom projekta. Postojeći javni listeneri prema zadanim postavkama ostaju dostupni, pa usvajanje možete provoditi postupno.
Ponovno deployajte svaki aplikacijski servis koji treba primiti interne environment varijable:
dockup deploy production/api --wait --json
dockup deploy production/worker --wait --json
Dockup ubacuje podatke za povezivanje kao što su DATABASE_URL_INTERNAL, interne URL i host varijable specifične za bazu podataka te vrijednosti hosta/porta servisa. Pregledajte ključeve environmenta servisa bez izlaganja secretsa:
dockup env list -s production/api --json
Nemojte ručno sastavljati URL iz prikaznog naziva. Slugovi resursa određuju naziv hosta <slug>.internal.
Prije promjene konfiguracije aplikacije provjerite nalazi li se svaka ovisnost u istom projektu. Odvojeni projekti imaju odvojene mreže i ne mogu razrješavati ni dosezati jedni druge internom putanjom.
Kako domene .internal mijenjaju konfiguraciju servisa?
Interni DNS daje stabilan naziv dok se kontejneri i čvorovi u pozadini mijenjaju. API servis sa slugom api dostupan je kao api.internal servisima iz istog projekta, a baza podataka sa slugom main-db dostupna je kao main-db.internal.
Kada su dostupne, prednost dajte ubacenim connection varijablama. One sadrže ispravan protokol, vjerodajnice, naziv baze podataka i format hosta. Ručno sastavljenom nizu mogu nedostajati TLS, kodiranje lozinke ili parametri baze podataka.
Migrirajte jednu ovisnost po jednu:
- Uključite mrežu.
- Ponovno deployajte servis koji koristi ovisnost.
- Potvrdite da interna varijabla postoji.
- Promijenite aplikaciju tako da je koristi.
- Deployajte uz
--wait. - Provjerite nove connections.
- Pratite runtime logove i vrijeme odziva.
- Prijeđite na sljedeću ovisnost.
Servis može zadržati svoju javnu prilagođenu domenu za korisnički promet, a za pozive prema backendu koristiti privatne nazive hostova. Javne i privatne putanje služe različitim granicama povjerenja.
Vodič environment varijable i secrets objašnjava zašto promjene povezivanja zahtijevaju ponovni deployment.
Kako upravljanu bazu podataka učiniti dostupnom samo privatno?
Nakon što svaki potrebni korisnik koristi internu putanju, uklonite javni listener:
dockup db private production/main-db --json
Kada je potrebno, vratite javni i privatni pristup:
dockup db private production/main-db --off --json
Ova operacija nad bazom podataka ponovno stvara kontejner uz očuvanje podataka. Planirajte maintenance window primjeren opterećenju, potvrdite da postoji nedavna sigurnosna kopija i testirajte ponovno povezivanje aplikacije.
Prije nego što bazu učinite dostupnom samo privatno, provjerite:
- Svaki produkcijski servis koji koristi bazu nalazi se u istom projektu.
- Operativni alati ne zahtijevaju javnu krajnju točku.
- Preview pristup koristi podržanu privatnu putanju.
- Sigurnosna kopija postoji i oporavak je razumljiv.
- Connection poolovi sigurno ponavljaju pokušaje.
- Zabilježena je točna meta
project/db.
Bazi podataka koja je dostupna samo privatno ne može se izravno pristupiti s operatorskog prijenosnog računala putem javnog interneta. Koristite podržani pristup platformi i dijagnostiku na razini aplikacije, umjesto da nepromišljeno ponovno otvarate listener.
Za operacije nad bazom podataka pogledajte upravljani PostgreSQL.
Kako PR previewji sigurno pristupaju produkcijskim podacima?
Svaki Dockup PR ili branch preview dobiva vlastiti izolirani deployment i URL. U projektu s privatnim umrežavanjem preview se priključuje mreži projekta i može razrješavati <slug>.internal.
Dockup automatski stvara korisnika samo za čitanje za upravljanu produkcijsku bazu podataka koju preview koristi. Preview može dohvaćati podatke oblikovane kao u produkciji, ali pomoću tog korisnika ne može zapisivati podatke.
Ovaj dizajn smanjuje rizik da feature branch izmijeni korisničke zapise, ali pristup za čitanje i dalje ima posljedice:
- Osobni ili osjetljivi podaci mogu se pojaviti u previewju.
- Novi aplikacijski kod može zapisivati dohvaćene podatke u logove.
- Raniva preview URL adresa može izložiti rezultate čitanja.
- Skupi upiti mogu utjecati na opterećenje produkcije.
- Pretpostavke o shemi mogu se razlikovati između brancha i produkcije.
Deployment previewja uključite samo u skladu s provjerenom politikom:
dockup pr-preview production/api --on --json
dockup preview branch feature/search production/api --json
Za feature flagove i secrets koji nisu povezani s bazom podataka koristite izolirani environment previewja. Automatske vjerodajnice samo za čitanje nemojte zamijeniti produkcijskim vjerodajnicama za pisanje.
Kako pratiti i otklanjati poteškoće u privatnom umrežavanju?
Započnite topologijom i konfiguracijom, umjesto pretpostavkom da je platforma nedostupna.
| Simptom | Vjerojatno područje | Provjera |
|---|---|---|
| Naziv nije pronađen | Pogrešan slug/projekt ili servis nije ponovno deployan | Popis servisa i ključevi env-a |
| Veza odbijena | Resurs je zaustavljen ili je port pogrešan | Status i logovi baze/servisa |
| Autentikacija nije uspjela | Pogrešna vjerodajnica | Rotacija secreta i korisnik |
| Javno radi, privatno ne radi | Interna varijabla ili usvajanje mreže | Uključivanje mreže, ponovni deployment |
| Preview može čitati, ali ne i pisati | Očekivana politika samo za čitanje | Nemojte zamijeniti vjerodajnicu |
| Poziv između projekata ne uspijeva | Očekivana izolacija | Koristite javni autentificirani API |
Pregledajte runtime logove aplikacije:
dockup logs production/api --json
Pregledajte veličinu baze podataka i pogreške aplikacije pri povezivanju:
dockup db size production/main-db --json
dockup logs production/api --json
Nemojte ispisivati pune interne URL-ove za povezivanje u bilješkama o incidentu. Mogu sadržavati vjerodajnice, iako sam naziv hosta nije secret.
Plan migracije i vraćanja na prethodno stanje
Javni listener zadržite tijekom prve faze. Ako interni deployment ne uspije, vratite prethodnu konfiguraciju aplikacije i ponovno je deployajte. Bazu podataka učinite dostupnom samo privatno tek nakon što interna putanja bude stabilna.
Za isključivanje mreže cijelog projekta:
dockup network disable production --json
To treba biti promišljena radnja vraćanja na prethodno stanje, a ne prvi korak u otklanjanju poteškoća. Isključivanje mreže utječe na svaki povezani resurs u projektu.
Promjene mreže bilježite putem audit loga:
dockup audit --writes --json
Kontrolni popis za privatno umrežavanje u produkciji
Potpuni runbook za privatno umrežavanje uključuje slug projekta, slugove servisa i baza podataka, interne nazive hostova, nazive ubacenih varijabli, politiku javnih listenera, politiku pristupa previewja, status sigurnosnih kopija, redoslijed ponovnog deploymenta i putanju vraćanja na prethodno stanje.
CPU, RAM i disk i dalje se obračunavaju prema upotrebi i mjere po minuti; privatno usmjeravanje arhitekturni je odabir, a ne fiksna klasa instance. Za modeliranje troškova koristite Objašnjenje PaaS naplate.
Referenca Dockup CLI-ja sadrži aktualne naredbe za mrežu i baze podataka. Za opću izolaciju deploymenta pogledajte najbolje sigurnosne prakse.
Autorizaciju servisa modelirajte odvojeno od dostupnosti
Interni naziv hosta dokazuje samo da se pozivatelj nalazi na mreži projekta. Ne dokazuje koji je servis poslao zahtjev ni smije li taj servis izvršiti određenu radnju. Zadržite autentikaciju aplikacije za osjetljive interne API-je i vjerodajnice baze podataka za pristup podacima.
Koristite secrets specifične za servis, a ne jedan zajednički interni token. Ako preview dobiva pristup bazi podataka samo za čitanje, nemojte mu istodobno dati produkcijski token servisa koji putem API-ja može pokrenuti upise.
Izmjerite učinak prebacivanja
Usporedite latenciju povezivanja, stopu pogrešaka i p95 vrijeme odziva prije i nakon prebacivanja na interne krajnje točke. Primarni cilj su izolacija i stabilna privatna putanja; svako poboljšanje latencije treba izmjeriti, a ne unaprijed obećati.
dockup uptime production/api --hours 24 --json
Sačuvajte razdoblje promatranja i ID deploymenta. Time promjena privatnog umrežavanja dobiva mjerljiv kriterij dovršetka, umjesto da završi na “DNS je razriješen”.
Dokumentirajte iznimku javne putanje
Neka vanjska integracija, operatorski alat ili servis iz drugog projekta možda i dalje zahtijeva javnu krajnju točku. Navedite svaku iznimku, njezinu autentikaciju, vlasnika i uvjet uklanjanja. Tako javni listener neće ostati trajno otvoren zato što se nitko ne sjeća zašto postoji.
Potpuno uvođenje privatnog umrežavanja može biti djelomično, ali svaka javna putanja treba biti namjerna.
Ponovno pregledajte interne ovisnosti nakon preimenovanja
Preimenovanje ili zamjena resursa može promijeniti slug koji se koristi za .internal adresiranje. Prije promjene naziva evidentirajte korisnike, ponovno ih deployajte s ažuriranim ubacenim varijablama i provjerite svaku privatnu vezu.
Time privatno umrežavanje ostaje stabilno kako se projekt razvija.
Započnite provjerljivim deploymentom
Uključite umrežavanje u neprodukcijskom projektu, migrirajte jednu ovisnost na njezinu .internal krajnju točku i provjerite putanju vraćanja na prethodno stanje prije uklanjanja bilo kojeg javnog listenera.
Započnite besplatno na app.dockup.ai. Free plan iznosi 0 USD mjesečno, uključuje početni kredit od 10 USD te podržava jedan workspace, tri baze podataka i tri deploymenta.
Česta pitanja
Koji naziv hosta koriste resursi Dockupa na privatnoj mreži?
Svaki servis i upravljana baza podataka iz istog projekta dostupni su putem stabilnog naziva hosta u obliku <slug>.internal.
Uklanja li uključivanje privatnog umrežavanja javni pristup bazi podataka?
Ne. Mreža se prema zadanim postavkama nadograđuje na postojeću konfiguraciju. Za uklanjanje javnog listenera upotrijebite zasebnu naredbu private za bazu podataka nakon što korisnici prijeđu na internu putanju.
Mogu li različiti projekti na platformi Dockup privatno pristupati jedni drugima?
Ne. Svaki projekt ima izoliranu mrežu, pa komunikacija između projekata mora koristiti odgovarajuće javno i autentificirano sučelje.
Može li PR preview pisati u produkcijsku bazu podataka?
U projektu s privatnim umrežavanjem Dockup automatski omogućuje korisnika baze podataka samo za čitanje za preview, što dopušta čitanje, ali putem te vjerodajnice sprječava upis.
Zašto se servisi moraju ponovno deployati nakon uključivanja umrežavanja?
Ponovni deployment novom kontejneru daje interne connection varijable i omogućuje aplikaciji pokretanje s konfiguracijom privatne krajnje točke.
