Immen stelt foar om in klant in PostgreSQL-ynlog te jaan sadat in ûnkostenfergoeding fersifere fan begjin oant ein reizget. In databankbehearder hat in echte SQL-sesje nedich, en immen oars stelt ynstee in webformulier foar. Beide foarstellen oplosse it ferkearde probleem, om't gjin fan beide begûn is by de operaasje dy't de klant eins útfiert. Gean de trije besluten yn folchoarder nei en de fraach oft TLS in VPN ferfange kin beantwurdet himsels.

Begjin by de operaasje dy't de klant nedich hat

Skriuw op wat de klant berikke moat. In oanfraach yntsjinje, ien rige fan in rapport lêze en in ad-hoc-fraach útfiere binne trije ferskillende operaasjes mei trije ferskillende risikoprofylen.

Skriuw dan op wa't it fersyk docht. In klant, in stipe-agint en in behearder binne net útwikselber sels as se deselde tabel oanreitsje. It ferskil beselet hoefolle fan de fraachtaal de klant ea sjen moat.

It pear antwurden beselet de ynterface. Alles dêrnei is ymplemintaasje, en de measte diskusjes oer fersifering binne eins diskusjes oer hokker ynterface keazen is.

Trije kontrôles, trije besluten

Autentisearre TLS beskermet de ferbining en beselet hokker TLS-identiteiten akseptearre wurde. Netwurktaangong beselet hokker boarnen de listener ea berikke kinne. Databankautorisaaasje beselet hokker objekten en aksjes in rol brûke mei.

Gjin fan de trije ferfangt de oaren, wat de tabel dúdlik makket.

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

Lês de rige dêr't jo op fertrouwe foardat jo in oare fuortsmite. De measte fan dizze ûntwerpen mislearje om't in kontrôle oannaam waard ynstee fan konfigurearre.

Direkt SQL hâldt it databankbelied oan it roer

Mei in goedkarde direkte ferbining hâldt jo sawol de ferifikaasje fan tsjinstidentiteit as it bedoelde tagongsbelied. TLS oansette makket fersifere ferbiningen beskikber; it wijst net-fersifere net ôf, útsein as de tagongskonfiguraasje dat fia hostssl-ynfieringen seit.

Dat ferskil is it wurdich te kontrolearjen yn de rinnende konfiguraasje en net yn in sjabloan. In server dy't TLS biedt en platte tekst akseptearret is net it ûntwerp dat de measte minsken tinke dat se útrôle hawwe. Lês de tagongsregels en sjoch hokker ynfieringen it echt easkje. Dy iene kontrôle skiedt in fersiferingsmooglike server fan in allinnich-fersifere.

Brûk rollen mei allinnich de privileezjes dy't it wurk nedich hat, en besjoch eigendom, erfd lidmaatskip en breed taparte tastimmingen. It privileezjemodel fan PostgreSQL is de autoriteitsgrins foar databankobjekten.

In VPN kin beheine hokker apparaten de tsjinst berikke foardat databankautentikaasje bart, en in tagongspoarte kin wat ferlykbers dwaan. Gjin fan beide ferwideret de needsaak om it bleatstelde komponint te ûnderhâlden, oanmeldingen te behearjen en boarnegebrûk te beheinen.

Kliïntsertifikaten binne in bewiis, gjin ACL

In kliïntsertifikaat kin in eask tafoegje by it ferbinen. De ynstelling clientcert kin in fertroud sertifikaat easkje en, yn de strangere modus, in relaasje tusken de sertifikaatnamme en de databankbrûker.

Dat is in sterker bewiis. It is gjin autorisaasjelist en it makket de server net ûnsichtber, om't it komponint dat de ferbining akseptearret noch altyd netwurkferkear en in hânskodding ferwurket. In sertifikaat as tagongslijst behannelje lit de werklike tastimmingen ûnoantaast. It hat ek de oanstriid om de sertifikaatdistribúsje te ferbreedzjen, wat it folgjende probleem skept.

In sterk sertifikaat ferbûn oan in rol mei tefolle privileezjes produsearret in goed autentisearre behearder. Kontrolearje de rol foardat jo it sertifikaat fiere.

Kies de smelste ynterface as it past

Foar in ûnkostenfergoeding fertsjintwurdiget in applikaasje-einpunt dat de oanfraach akseptearret, de saaklike regels hanthavet en it tastiene resultaat fan dy brûker weromstjoert de operaasje better as in algemien SQL-akkount.

De applikaasje brûkt dan syn eigen beheinde databankidentiteit, en de klant krijt nea in fraachtaal as funksje. Dat is in lytser oerflak mei minder manieren om ferkeard te wêzen.

Dit is in ûntwerpopsje, gjin bewearing dat applikaasjekoad automatysk feiliger is. Dat koad moat syn oanroppers autentisearje, elke aksje autorisearje en syn ynfier falidearje, en syn eigen databanktastimmingen telle noch altyd.

Direkt SQL bliuwt korrekt foar minsken en ark waans goedkarde wurk it easket. Kwalifisearje dat ûntwerp mei rollen, netwurkberik en operasjonele grinzen, en lit de oare klanten de smellere ynterface hâlde. De twa populaasjes yn ien rol mingen is wêr't de diskusjes begjinne.

Relatearre artikelen