Indeks dnevnikaDockup / bilješka s terena
Note / private-networking-internal-domains

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 prometaJavna rutaPrivatna ruta
API prema PostgreSQL-uJavni host i portmain-db.internal
Web prema API-juJavna prilagođena domenaapi.internal
Worker prema RedisuJavni host i portapp-redis.internal
Preview prema produkcijskoj baziJavne vjerodajnice bazeInterni korisnik samo za čitanje
Poziv između projekataPotrebna javna krajnja točkaBlokirano 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:

  1. Uključite mrežu.
  2. Ponovno deployajte servis koji koristi ovisnost.
  3. Potvrdite da interna varijabla postoji.
  4. Promijenite aplikaciju tako da je koristi.
  5. Deployajte uz --wait.
  6. Provjerite nove connections.
  7. Pratite runtime logove i vrijeme odziva.
  8. 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.

SimptomVjerojatno područjeProvjera
Naziv nije pronađenPogrešan slug/projekt ili servis nije ponovno deployanPopis servisa i ključevi env-a
Veza odbijenaResurs je zaustavljen ili je port pogrešanStatus i logovi baze/servisa
Autentikacija nije uspjelaPogrešna vjerodajnicaRotacija secreta i korisnik
Javno radi, privatno ne radiInterna varijabla ili usvajanje mrežeUključivanje mreže, ponovni deployment
Preview može čitati, ali ne i pisatiOčekivana politika samo za čitanjeNemojte zamijeniti vjerodajnicu
Poziv između projekata ne uspijevaOčekivana izolacijaKoristite 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.