TLS, omrežni vstop in pravice SQL odgovarjajo na različna vprašanja
Šifriranje povezave, spustitev vira in dodelitev tabele so tri odločitve. Pojdite skoznje po vrsti, preden vprašate, ali lahko TLS nadomesti VPN.
Nekdo predlaga, da bi stranki dali prijavo v PostgreSQL, da bi zahtevek za stroške potoval šifriran od začetka do konca. Skrbnik baze podatkov potrebuje pravo sejo SQL, nekdo drug pa namesto tega predlaga spletni obrazec. Oba predloga rešujeta napačen problem, ker nobeden ni začel pri operaciji, ki jo stranka dejansko izvaja. Pojdite skozi tri odločitve po vrsti in vprašanje, ali lahko TLS nadomesti VPN, se bo odgovorilo samo.
Začnite pri operaciji, ki jo stranka potrebuje
Zapišite, kaj mora stranka doseči. Predložitev zahtevka, branje ene vrstice poročila in izvajanje sprotne poizvedbe so tri različne operacije s tremi različnimi profili tveganja.
Nato zapišite, kdo pošilja zahtevek. Stranka, podporni agent in skrbnik niso zamenljivi, tudi ko se dotikajo iste tabele. Razlika odloča, koliko poizvedovalnega jezika naj bi stranka sploh videla.
Par odgovorov odloči o vmesniku. Vse po tem je izvedba, in večina razprav o šifriranju je v resnici razprav o tem, kateri vmesnik je bil izbran.
Trije nadzori, tri odločitve
Preverjen TLS ščiti povezavo in odloča, katere identitete TLS so sprejete. Omrežni vstop odloča, kateri viri lahko sploh dosežejo poslušalca. Avtorizacija v bazi podatkov odloča, katere objekte in dejanja lahko uporablja vloga.
Nobeden od treh ne nadomešča drugih, kar tabela jasno pokaže.
| Control | What it decides | What it leaves open |
|---|---|---|
| Authenticated TLS | Connection protection and which TLS identities are accepted | Which tables a database user may touch |
| Restricted network entry | Which sources reach the listener | Whether an authenticated user should run a given statement |
| Database authorization | Which objects and actions a role may use | Whether the connection arrived by an approved path |
Preberite vrstico, na katero se zanašate, preden odstranite drugo. Večina teh zasnov propade, ker je bil nadzor predpostavljen, ne pa nastavljen.
Neposredni SQL ohrani politiko baze podatkov odgovorno
Pri odobreni neposredni povezavi ohranite preverjanje identitete storitve in predvideno politiko dostopa. Vklop TLS omogoči šifrirane povezave; ne zavrne nešifriranih, razen če konfiguracija dostopa to zahteva z vnosi hostssl.
To razliko velja preveriti v delujoči konfiguraciji in ne v predlogi. Strežnik, ki ponuja TLS in sprejema golo besedilo, ni zasnova, za katero večina misli, da jo je uvedla. Preberite pravila dostopa in poglejte, kateri vnosi to res zahtevajo. Ta ena preveritev loči strežnik, ki zmore šifriranje, od strežnika, ki je samo šifriran.
Uporabljajte vloge le s pravicami, ki jih delo potrebuje, in pregledujte lastništvo, podedovano članstvo in široko dodeljena dovoljenja. Model pravic PostgreSQL je meja pooblastil za objekte baze podatkov.
VPN lahko omeji, katere naprave dosežejo storitev pred avtentikacijo v bazi podatkov, dostopovni prehod pa lahko naredi nekaj podobnega. Nobeden ne odpravi potrebe po vzdrževanju izpostavljene komponente, upravljanju poverilnic in omejevanju porabe virov.
Odjemalska potrdila so poverilnica, ne ACL
Odjemalsko potrdilo lahko doda zahtevo ob povezavi. Nastavitev clientcert lahko zahteva zaupanja vredno potrdilo in v strožjem načinu razmerje med imenom potrdila in uporabnikom baze podatkov.
To je močnejša poverilnica. Ni seznam avtorizacije in strežnika ne naredi nevidnega, ker komponenta, ki sprejema povezavo, še vedno obdeluje omrežni promet in rokovanje. Obravnavanje potrdila kot seznama dostopa pusti dejanske pravice nedotaknjene. Prav tako rado razširi distribucijo potrdil, kar ustvari naslednji problem.
Močno potrdilo, pritrjeno na vlogo s prevelikimi pravicami, ustvari dobro overjenega skrbnika. Preverite vlogo, preden praznujete potrdilo.
Izberite ožji vmesnik, kadar ustreza
Za zahtevek za stroške aplikacijska končna točka, ki sprejme zahtevek, uveljavi poslovna pravila in vrne dovoljeni rezultat tega uporabnika, predstavlja operacijo bolje kot splošen račun SQL.
Aplikacija nato uporabi lastno omejeno identiteto v bazi podatkov, in stranka nikoli ne prejme poizvedovalnega jezika kot funkcije. To je manjša površina z manj načini za napako.
To je možnost zasnove in ne trditev, da je aplikacijska koda samodejno varnejša. Ta koda mora preverjati svoje klicatelje, avtorizirati vsako dejanje in validirati svoj vnos, njene lastne pravice v bazi podatkov pa so še vedno pomembne.
Neposredni SQL ostaja pravilen za ljudi in orodja, katerih odobreno delo to zahteva. Omejite to zasnovo z vlogami, omrežnim obsegom in operativnimi mejami, drugim odjemalcem pa pustite ožji vmesnik. Mešanje obeh skupin v eni vlogi je tam, kjer se razprave začnejo.