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.

ControlWhat it decidesWhat it leaves open
Authenticated TLSConnection protection and which TLS identities are acceptedWhich tables a database user may touch
Restricted network entryWhich sources reach the listenerWhether an authenticated user should run a given statement
Database authorizationWhich objects and actions a role may useWhether 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.

Sorodni članki