TLS, võrgupääs ja SQL-i õigused vastavad erinevatele küsimustele
Ühenduse krüptimine, allika lubamine ja tabeli andmine on kolm otsust. Käige need järjekorras läbi enne, kui küsida, kas TLS võib VPN-i asendada.
Keegi pakub välja anda kliendile PostgreSQL-i sisselogimine, et kulukinnitus liiguks otsast otsani krüptitult. Andmebaasi administraatoril on vaja tõelist SQL-i sessiooni ja keegi teine pakub selle asemel veebivormi. Mõlemad ettepanekud lahendavad vale probleemi, sest kumbki ei alanud toimingust, mida klient tegelikult teeb. Käige kolm otsust järjekorras läbi ja küsimus, kas TLS võib VPN-i asendada, vastab ise.
Alustage toimingust, mida klient vajab
Kirjutage üles, mida klient peab saavutama. Kinnituse esitamine, aruande ühe rea lugemine ja hetkepäringu käivitamine on kolm erinevat toimingut kolme erineva riskiprofiiliga.
Seejärel kirjutage üles, kes päringu teeb. Klient, tugitöötaja ja administraator ei ole vahetatavad ka siis, kui nad puudutavad sama tabelit. Erinevus otsustab, kui palju päringukeelt klient üldse nägema peaks.
Vastuste paar otsustab liidese. Kõik pärast seda on teostus ja enamik krüptimisvaidlusi on tegelikult vaidlused selle üle, milline liides valiti.
Kolm kontrolli, kolm otsust
Autenditud TLS kaitseb ühendust ja otsustab, millised TLS-i identiteedid vastu võetakse. Võrgupääs otsustab, millised allikad üldse kuulajat jõuda võivad. Andmebaasi autoriseerimine otsustab, milliseid objekte ja toiminguid roll kasutada tohib.
Ükski neist kolmest ei asenda teisi, mida tabel selgelt näitab.
| 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 |
Lugege rida, millele toetute, enne kui eemaldate teise. Enamik neist kavadest ebaõnnestub, sest kontroll eeldati, mitte ei seadistatud.
Otsene SQL jätab andmebaasi poliitika vastutajaks
Kinnitatud otsese ühenduse korral hoidke alles nii teenuse identiteedi kontroll kui ka kavandatud juurdepääsupoliitika. TLS-i sisselülitamine teeb krüptitud ühendused kättesaadavaks; see ei lükka tagasi krüptimata ühendusi, kui juurdepääsukonfiguratsioon ei nõua seda hostssl-kirjete kaudu.
Seda erinevust tasub kontrollida töötavas konfiguratsioonis, mitte mallis. Server, mis pakub TLS-i ja võtab vastu lihtteksti, ei ole see kava, mille enamik inimesi arvab end juurutanud olevat. Lugege juurdepääsureeglid läbi ja vaadake, millised kirjed seda tegelikult nõuavad. See üks kontroll eraldab krüptimisvõimelise serveri ainult krüptitud serverist.
Kasutage rolle, millel on ainult tööks vajalikud õigused, ja vaadake üle omandiõigus, päritud liikmelisus ja laialt antud load. PostgreSQL-i õiguste mudel on andmebaasiobjektide volituste piir.
VPN saab piirata, millised seadmed jõuavad teenuseni enne andmebaasi autentimist, ja juurdepääsulüüs saab teha midagi sarnast. Kumbki ei kõrvalda vajadust hooldada avatud komponenti, hallata mandaate ja piirata ressursikasutust.
Kliendisertifikaadid on mandaat, mitte ACL
Kliendisertifikaat saab ühenduse loomisel lisada nõude. Seade clientcert saab nõuda usaldusväärset sertifikaati ja rangemas režiimis seost sertifikaadi nime ja andmebaasi kasutaja vahel.
See on tugevam mandaat. See ei ole autoriseerimisnimekiri ja see ei muuda serverit nähtamatuks, sest ühendust vastu võttev komponent töötleb endiselt võrguliiklust ja kätlust. Sertifikaadi käsitlemine juurdepääsunimekirjana jätab tegelikud load puutumata. See kipub ka sertifikaatide levikut laiendama, mis loob järgmise probleemi.
Üleliigsete õigustega rolli külge kinnitatud tugev sertifikaat annab hästi autenditud administraatori. Kontrollige rolli enne, kui sertifikaati tähistate.
Valige kitsam liides, kui see sobib
Kulukinnituse jaoks esindab rakenduse lõpp-punkt, mis võtab kinnituse vastu, rakendab ärireeglid ja tagastab selle kasutaja lubatud tulemuse, toimingut paremini kui üldine SQL-i konto.
Seejärel kasutab rakendus oma kitsendatud andmebaasi identiteeti ja klient ei saa kunagi päringukeelt funktsioonina. See on väiksem pind, millel on vähem võimalusi eksida.
See on disainivalik, mitte väide, et rakenduse kood on automaatselt turvalisem. See kood peab autentima oma kutsujaid, autoriseerima iga toimingu ja valideerima sisendi, ja selle enda andmebaasiõigused loevad endiselt.
Otsene SQL jääb õigeks inimestele ja tööriistadele, kelle kinnitatud töö seda nõuab. Piiritlege see kava rollide, võrguulatuse ja tööpiirangutega ning laske teistel klientidel hoida kitsamat liidest. Kahe rühma segamine ühes rollis on koht, kus vaidlused algavad.