{"id":81884,"date":"2020-05-17T13:42:18","date_gmt":"2020-05-17T11:42:18","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/bezopasnost-i-subd-o-chyom-nado-pomnit-podbiraya-sredstva-zashhity"},"modified":"2020-05-17T13:42:18","modified_gmt":"2020-05-17T11:42:18","slug":"bezopasnost-i-subd-o-chyom-nado-pomnit-podbiraya-sredstva-zashhity","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/bezopasnost-i-subd-o-chyom-nado-pomnit-podbiraya-sredstva-zashhity","title":{"rendered":"Biztons\u00e1g \u00e9s DBMS: amit szem el\u0151tt kell tartani a v\u00e9delmi eszk\u00f6z\u00f6k kiv\u00e1laszt\u00e1sakor","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1><img decoding=\"async\" alt=\"Biztons\u00e1g \u00e9s DBMS: amit szem el\u0151tt kell tartani a v\u00e9delmi eszk\u00f6z\u00f6k kiv\u00e1laszt\u00e1sakor\" src=\"\/wp-content\/uploads\/2020\/05\/ac49253838e36336af127d71394139d8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/h1>\n<p>\nA nevem Denis Rozsikov, a \u201eGazinformservis\u201c v\u00e1llalat szoftverfejleszt\u00e9si vezet\u0151je vagyok, a term\u00e9kcsapatban. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gaz-is.ru\/produkty\/inform-sistemy\/subd-jatoba.html\">Jatoba<\/a><\/noindex>. A jogszab\u00e1lyok \u00e9s a v\u00e1llalati norm\u00e1k bizonyos k\u00f6vetelm\u00e9nyeket t\u00e1masztanak az adatok biztons\u00e1gos t\u00e1rol\u00e1s\u00e1val kapcsolatban. Senki sem szeretn\u00e9, ha harmadik felek hozz\u00e1f\u00e9rn\u00e9nek bizalmas inform\u00e1ci\u00f3khoz, ez\u00e9rt b\u00e1rmely projekt szempontj\u00e1b\u00f3l fontosak a k\u00f6vetkez\u0151 k\u00e9rd\u00e9sek: azonos\u00edt\u00e1s \u00e9s hiteles\u00edt\u00e9s, az adatokhoz val\u00f3 hozz\u00e1f\u00e9r\u00e9s ir\u00e1ny\u00edt\u00e1sa, a rendszer inform\u00e1ci\u00f3inak integrit\u00e1s\u00e1nak biztos\u00edt\u00e1sa, a biztons\u00e1gi esem\u00e9nyek napl\u00f3z\u00e1sa. Ez\u00e9rt szeretn\u00e9m megosztani n\u00e9h\u00e1ny \u00e9rdekes szempontot a DBMS biztons\u00e1g\u00e1val kapcsolatban. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nA cikk a <noindex><a rel=\"nofollow\" href=\"https:\/\/corp.mail.ru\/ru\/press\/events\/databases-1\/\">@Databases Meetup,<\/a><\/noindex> szervez\u00e9s\u00e9vel k\u00e9sz\u00fclt. <noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/\">Mail.ru Cloud Solutions<\/a><\/noindex>. Ha nem akar olvasni, megtekintheti:<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"n-54j9FHaMU\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/n-54j9FHaMU\/hqdefault.jpg\" alt=\"Vide\u00f3 lej\u00e1tsz\u00e1sa\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nA cikk h\u00e1rom r\u00e9szb\u0151l \u00e1ll:<\/p>\n<ul>\n<li>Hogyan v\u00e9dj\u00fck a kapcsol\u00f3d\u00e1sokat.<\/li>\n<li>Mi az audit\u00e1l\u00e1s, \u00e9s hogyan r\u00f6gz\u00edthetj\u00fck, hogy mi t\u00f6rt\u00e9nik az adatb\u00e1zis oldal\u00e1r\u00f3l \u00e9s a kapcsol\u00f3d\u00e1sr\u00f3l.<\/li>\n<li>Hogyan v\u00e9dj\u00fck az adatokat mag\u00e1ban az adatb\u00e1zisban, \u00e9s milyen technol\u00f3gi\u00e1k \u00e1llnak rendelkez\u00e9sre ehhez.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Biztons\u00e1g \u00e9s DBMS: amit szem el\u0151tt kell tartani a v\u00e9delmi eszk\u00f6z\u00f6k kiv\u00e1laszt\u00e1sakor\" src=\"\/wp-content\/uploads\/2020\/05\/fbdca7f4a925b9ceb78de06c6e245b23.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>A DBMS biztons\u00e1g\u00e1nak h\u00e1rom \u00f6sszetev\u0151je: a kapcsolatok v\u00e9delme, az audital\u00e1s \u00e9s az adatok v\u00e9delme.<\/i><\/p>\n<h2>Kapcsolatok v\u00e9delme<\/h2>\n<p>\nAz adatb\u00e1zishoz k\u00f6zvetlen\u00fcl vagy k\u00f6zvetve, webalkalmaz\u00e1sokon kereszt\u00fcl lehet csatlakozni. \u00c1ltal\u00e1ban az \u00fczleti felhaszn\u00e1l\u00f3, azaz az, aki az DBMS-sel dolgozik, nem k\u00f6zvetlen\u00fcl l\u00e9p kapcsolatba vele.<\/p>\n<p>Miel\u0151tt a kapcsolatok v\u00e9delm\u00e9r\u0151l besz\u00e9ln\u00e9nk, fontos k\u00e9rd\u00e9sekre kell v\u00e1laszt adnunk, amelyek befoly\u00e1solj\u00e1k, hogyan val\u00f3sulnak meg a biztons\u00e1gi int\u00e9zked\u00e9sek:<\/p>\n<ul>\n<li>egy \u00fczleti felhaszn\u00e1l\u00f3 egy DBMS felhaszn\u00e1l\u00f3val egyen\u00e9rt\u00e9k\u0171-e;<\/li>\n<li>biztos\u00edtott-e a hozz\u00e1f\u00e9r\u00e9s az DBMS adataihoz csak azon API-n kereszt\u00fcl, amelyet \u00d6n ir\u00e1ny\u00edt, vagy van k\u00f6zvetlen hozz\u00e1f\u00e9r\u00e9s a t\u00e1bl\u00e1zatokhoz;<\/li>\n<li>k\u00fcl\u00f6n v\u00e9dett szegmensbe van-e elk\u00fcl\u00f6n\u00edtve az DBMS, \u00e9s ki, illetve hogyan l\u00e9p kapcsolatba vele;<\/li>\n<li>haszn\u00e1lj\u00e1k-e a pooling\/proxy \u00e9s azokat a k\u00f6ztes r\u00e9tegeket, amelyek m\u00f3dos\u00edthatj\u00e1k a kapcsol\u00f3d\u00e1si inform\u00e1ci\u00f3kat \u00e9s a DBMS-t haszn\u00e1l\u00f3 felhaszn\u00e1l\u00f3k adatait.<\/li>\n<\/ul>\n<p>\nMost n\u00e9zz\u00fck meg, milyen eszk\u00f6z\u00f6ket alkalmazhatunk a kapcsolatok v\u00e9delm\u00e9re:<\/p>\n<ol>\n<li>Haszn\u00e1ljon adatb\u00e1zis t\u0171zfal kateg\u00f3ri\u00e1j\u00fa megold\u00e1sokat. A tov\u00e1bbi v\u00e9delem legkevesebb egy r\u00e9teggel n\u00f6veli a DBMS \u00e1tl\u00e1that\u00f3s\u00e1g\u00e1t, maxim\u00e1lisan pedig biztos\u00edtani tudja az adatok tov\u00e1bbi v\u00e9delm\u00e9t.<\/li>\n<li>Haszn\u00e1lja a jelsz\u00f3politik\u00e1kat. Az alkalmaz\u00e1suk att\u00f3l f\u00fcgg, hogyan \u00e9p\u00fclt fel az architekt\u00far\u00e1ja. Mindenesetre a webalkalmaz\u00e1s konfigur\u00e1ci\u00f3s f\u00e1jlj\u00e1ban tal\u00e1lhat\u00f3 egy jelsz\u00f3 nem elegend\u0151 a v\u00e9delemhez, amely a DBMS-hez csatlakozik. Sz\u00e1mos DBMS-eszk\u00f6z l\u00e9tezik, amelyek lehet\u0151v\u00e9 teszik a felhaszn\u00e1l\u00f3 \u00e9s a jelsz\u00f3 aktualiz\u00e1l\u00e1s\u00e1nak ellen\u0151rz\u00e9s\u00e9t.\n<p>Tov\u00e1bbi inform\u00e1ci\u00f3t a felhaszn\u00e1l\u00f3i \u00e9rt\u00e9kel\u00e9s funkci\u00f3ir\u00f3l olvashat. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.cloud.oracle.com\/en-us\/iaas\/data-safe\/doc\/user-assessment-reports.html\">itt<\/a><\/noindex>, \u00e9s a MS SQL Vulnerability Assessment-r\u0151l is t\u00e1j\u00e9koz\u00f3dhat. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/security\/sql-vulnerability-assessment?view=sql-server-ver15\">itt<\/a><\/noindex>.\u00a0<\/li>\n<li>Gazdag\u00edtsa a munkamenet kontextus\u00e1t a sz\u00fcks\u00e9ges inform\u00e1ci\u00f3kkal. Ha a munkamenet \u00e1tl\u00e1thatatlan, \u00e9s nem \u00e9rti, ki dolgozik a DBMS-en bel\u00fcl, kieg\u00e9sz\u00edtheti az inform\u00e1ci\u00f3t arr\u00f3l, hogy ki, mit \u00e9s mi\u00e9rt csin\u00e1l az elv\u00e9gzett m\u0171veletek keret\u00e9ben. Ezt az inform\u00e1ci\u00f3t az audit\u00e1l\u00e1s sor\u00e1n ellen\u0151rizheti.<\/li>\n<li>\u00c1ll\u00edtsa be az SSL-t, ha a DBMS \u00e9s a v\u00e9gz\u0151 felhaszn\u00e1l\u00f3k k\u00f6z\u00f6tt nincs h\u00e1l\u00f3zati szegment\u00e1l\u00e1s, \u00e9s nem k\u00fcl\u00f6n VLAN-on tal\u00e1lhat\u00f3. Ilyen esetekben k\u00f6telez\u0151 biztos\u00edtani a csatorna v\u00e9delm\u00e9t a fogyaszt\u00f3 \u00e9s a DBMS k\u00f6z\u00f6tt. Vannak v\u00e9delmi eszk\u00f6z\u00f6k, k\u00f6zt\u00fck open source megold\u00e1sok is.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Hogyan befoly\u00e1solja ez a DBMS teljes\u00edtm\u00e9ny\u00e9t?<\/h3>\n<p>\nN\u00e9zz\u00fck meg a PostgreSQL p\u00e9ld\u00e1j\u00e1n, hogyan hat az SSL a CPU terhel\u00e9s\u00e9re, a v\u00e1laszid\u0151k n\u00f6veked\u00e9s\u00e9re \u00e9s a TPS cs\u00f6kken\u00e9s\u00e9re, nem haszn\u00e1l-e el t\u00fals\u00e1gosan sok er\u0151forr\u00e1st, ha enged\u00e9lyezz\u00fck.<\/p>\n<p>Terhelj\u00fck a PostgreSQL-t a pgbench haszn\u00e1lat\u00e1val \u2013 ez egy egyszer\u0171 program a teljes\u00edtm\u00e9nym\u00e9r\u00e9sek futtat\u00e1s\u00e1ra. Ism\u00e9telten v\u00e9grehajt egy parancssorozatot, esetleg p\u00e1rhuzamos adatb\u00e1zis-munkamenetekben, majd kisz\u00e1m\u00edtja az \u00e1tlagos tranzakci\u00f3s sebess\u00e9get.<\/p>\n<p><strong>1. teszt SSL n\u00e9lk\u00fcl \u00e9s SSL haszn\u00e1lat\u00e1val<\/strong> \u2014 kapcsolatot hoz l\u00e9tre minden egyes tranzakci\u00f3n\u00e1l:<\/p>\n<pre><code class=\"plaintext\">pgbench.exe --connect -c 10 -t 5000 \"host=192.168.220.129 dbname=taskdb user=postgres sslmode=require\nsslrootcert=rootCA.crt sslcert=client.crt sslkey=client.key\"<\/code><\/pre>\n<p>\n<strong>vs<\/strong><\/p>\n<pre><code class=\"plaintext\">pgbench.exe --connect -c 10 -t 5000 \"host=192.168.220.129 dbname=taskdb user=postgres\"<\/code><\/pre>\n<p>\n<strong>2. teszt SSL n\u00e9lk\u00fcl \u00e9s SSL haszn\u00e1lat\u00e1val<\/strong> \u2014 minden tranzakci\u00f3 egy kapcsolaton bel\u00fcl t\u00f6rt\u00e9nik:<\/p>\n<pre><code class=\"plaintext\">pgbench.exe -c 10 -t 5000 \"host=192.168.220.129 dbname=taskdb user=postgres sslmode=require\nsslrootcert=rootCA.crt sslcert=client.crt sslkey=client.key\"<\/code><\/pre>\n<p>\n<strong>vs<\/strong><\/p>\n<pre><code class=\"plaintext\">pgbench.exe -c 10 -t 5000 \"host=192.168.220.129 dbname=taskdb user=postgres\"<\/code><\/pre>\n<p>\n<strong>A t\u00f6bbi be\u00e1ll\u00edt\u00e1s<\/strong>:<\/p>\n<pre><code class=\"plaintext\">sk\u00e1l\u00e1z\u00e1si faktor: 1\nlek\u00e9rdez\u00e9si m\u00f3d: egyszer\u0171\n\u00fcgyfelek sz\u00e1ma: 10\nsz\u00e1lak sz\u00e1ma: 1\n\u00fcgyfelenk\u00e9nti tranzakci\u00f3k sz\u00e1ma: 5000\nval\u00f3j\u00e1ban feldolgozott tranzakci\u00f3k sz\u00e1ma: 50000\/50000<\/code><\/pre>\n<p>\n<strong>Tesztel\u00e9si eredm\u00e9nyek<\/strong>:<\/p>\n<p>\u00a0<br \/>\n<strong>NINCS SSL<\/strong><br \/>\n<strong>SSL<\/strong><\/p>\n<p><strong>Kapcsolatot l\u00e9tes\u00edt minden tranzakci\u00f3n\u00e1l<\/strong><\/p>\n<p>\u00e1tlagos k\u00e9sleltet\u00e9s<br \/>\n171.915 ms<br \/>\n187.695 ms<\/p>\n<p>tps bele\u00e9rtve a kapcsolatok l\u00e9trehoz\u00e1s\u00e1t<br \/>\n58.168112<br \/>\n53.278062<\/p>\n<p>tps a kapcsolatok l\u00e9trehoz\u00e1sa n\u00e9lk\u00fcl<br \/>\n64.084546<br \/>\n58.725846<\/p>\n<p>CPU<br \/>\n24%<br \/>\n28%<\/p>\n<p><strong>Minden tranzakci\u00f3 egy kapcsolaton bel\u00fcl t\u00f6rt\u00e9nik<\/strong><\/p>\n<p>\u00e1tlagos k\u00e9sleltet\u00e9s<br \/>\n6.722 ms<br \/>\n6.342 ms<\/p>\n<p>tps bele\u00e9rtve a kapcsolatok l\u00e9trehoz\u00e1s\u00e1t<br \/>\n1587.657278<br \/>\n1576.792883<\/p>\n<p>tps a kapcsolatok l\u00e9trehoz\u00e1sa n\u00e9lk\u00fcl<br \/>\n1588.380574<br \/>\n1577.694766<\/p>\n<p>CPU<br \/>\n17%<br \/>\n21%<\/p>\n<p>\nKis terhel\u00e9sek mellett az SSL hat\u00e1sa \u00f6sszehasonl\u00edthat\u00f3 a m\u00e9r\u00e9s hib\u00e1j\u00e1val. Ha az \u00e1tvitt adatok mennyis\u00e9ge nagyon nagy, a helyzet m\u00e1s lehet. Ha minden tranzakci\u00f3hoz egy kapcsolatot l\u00e9tes\u00edt\u00fcnk (ez ritk\u00e1n fordul el\u0151, \u00e1ltal\u00e1ban a felhaszn\u00e1l\u00f3k osztj\u00e1k meg a kapcsolatokat), akkor sok csatlakoz\u00e1s\/k\u00e9szlet bont\u00e1s t\u00f6rt\u00e9nik, a hat\u00e1s valamivel nagyobb lehet. Teh\u00e1t a teljes\u00edtm\u00e9ny cs\u00f6kken\u00e9s\u00e9nek kock\u00e1zatai l\u00e9tezhetnek, azonban a k\u00fcl\u00f6nbs\u00e9g nem annyira jelent\u0151s, hogy ne haszn\u00e1ljuk a v\u00e9delmet.<\/p>\n<p>Figyeljen oda \u2014 jelent\u0151s k\u00fcl\u00f6nbs\u00e9g van a m\u0171k\u00f6d\u00e9si m\u00f3dok \u00f6sszehasonl\u00edt\u00e1sakor: ugyanazon session keretein bel\u00fcl vagy k\u00fcl\u00f6nb\u00f6z\u0151ek eset\u00e9n. Ez \u00e9rthet\u0151: minden kapcsolat l\u00e9trehoz\u00e1s\u00e1hoz er\u0151forr\u00e1sok sz\u00fcks\u00e9gesek.<\/p>\n<p>Volt egy eset\u00fcnk, amikor a Zabbixet trust m\u00f3dban csatlakoztattuk, azaz az md5-\u00f6t nem ellen\u0151rizt\u00fck, \u00edgy az autentik\u00e1ci\u00f3 nem volt sz\u00fcks\u00e9ges. K\u00e9s\u0151bb az \u00fcgyf\u00e9l k\u00e9rte az md5-autentik\u00e1ci\u00f3 bekapcsol\u00e1s\u00e1t. Ez nagy terhel\u00e9st r\u00f3tt a CPU-ra, a teljes\u00edtm\u00e9ny cs\u00f6kkent. Kezdt\u00fck keresni az optimaliz\u00e1l\u00e1s lehet\u0151s\u00e9geit. Az egyik lehets\u00e9ges megold\u00e1s a probl\u00e9ma megold\u00e1s\u00e1ra a h\u00e1l\u00f3zati korl\u00e1toz\u00e1s bevezet\u00e9se, k\u00fcl\u00f6n VLAN-ok l\u00e9trehoz\u00e1sa az adatb\u00e1zis kezel\u0151 rendszerekhez, olyan be\u00e1ll\u00edt\u00e1sok hozz\u00e1ad\u00e1sa, amelyekkel l\u00e1that\u00f3, ki \u00e9s honnan csatlakozik, valamint az autentik\u00e1ci\u00f3 elt\u00e1vol\u00edt\u00e1sa. Az autentik\u00e1ci\u00f3s be\u00e1ll\u00edt\u00e1sok optimaliz\u00e1l\u00e1s\u00e1val is cs\u00f6kkenthetj\u00fck az autentik\u00e1ci\u00f3 bekapcsol\u00e1sakor felmer\u00fcl\u0151 k\u00f6lts\u00e9geket, de alapvet\u0151en a k\u00fcl\u00f6nb\u00f6z\u0151 autentik\u00e1l\u00e1si m\u00f3dszerek alkalmaz\u00e1sa hat\u00e1ssal van a teljes\u00edtm\u00e9nyre \u00e9s figyelembe kell venni ezeket a t\u00e9nyez\u0151ket a szerverek (hardver) sz\u00e1m\u00edt\u00e1si kapacit\u00e1s\u00e1nak tervez\u00e9sekor az adatb\u00e1zis kezel\u0151 rendszerekhez.<\/p>\n<p>K\u00f6vetkeztet\u00e9s: bizonyos megold\u00e1sokban m\u00e9g a legkisebb r\u00e9szletek az autentik\u00e1ci\u00f3 ter\u00e9n is er\u0151teljesen befoly\u00e1solhatj\u00e1k a projektet, \u00e9s rossz, ha ez csak a termel\u00e9sbe val\u00f3 bevezet\u00e9s sor\u00e1n v\u00e1lik vil\u00e1goss\u00e1.<\/p>\n<h2>Tev\u00e9kenys\u00e9gek audit\u00e1l\u00e1sa<\/h2>\n<p>\nAz audit\u00e1l\u00e1s nemcsak az adatb\u00e1zis kezel\u0151 rendszerekre vonatkozhat. Az audit\u00e1l\u00e1s inform\u00e1ci\u00f3k beszerz\u00e9se arr\u00f3l, hogy mi t\u00f6rt\u00e9nik a k\u00fcl\u00f6nb\u00f6z\u0151 szegmensekben. Ez lehet adatb\u00e1zis t\u0171zfal \u00e9s az oper\u00e1ci\u00f3s rendszer is, amelyre az adatb\u00e1zis kezel\u0151 rendszer \u00e9p\u00fcl.<\/p>\n<p>A kereskedelmi Enterprise szint\u0171 adatb\u00e1zis kezel\u0151 rendszerek audit\u00e1l\u00e1sa rendben van, az open source eset\u00e9ben ez nem mindig \u00edgy van. \u00cdme, amit a PostgreSQL k\u00edn\u00e1l:<\/p>\n<ul>\n<li>default log \u2014 be\u00e9p\u00edtett napl\u00f3z\u00e1s;<\/li>\n<li>extensions: pgaudit \u2014 ha nem elegend\u0151 a default napl\u00f3z\u00e1s, k\u00fcl\u00f6n be\u00e1ll\u00edt\u00e1sokat haszn\u00e1lhatunk, amelyek n\u00e9h\u00e1ny feladatot megoldanak.<\/li>\n<\/ul>\n<p>\n<b>Kieg\u00e9sz\u00edt\u00e9s a vide\u00f3s el\u0151ad\u00e1shoz:<\/b><\/p>\n<p>A kezdeti oper\u00e1torok regisztr\u00e1l\u00e1sa standard napl\u00f3z\u00e1si eszk\u00f6zzel v\u00e9gezhet\u0151, ahol a log_statement = all.<\/p>\n<p>Ez elfogadhat\u00f3 a megfigyel\u00e9shez \u00e9s m\u00e1s felhaszn\u00e1l\u00e1si m\u00f3dokhoz, de nem biztos\u00edtja azt a r\u00e9szletess\u00e9get, amely \u00e1ltal\u00e1ban sz\u00fcks\u00e9ges az audit\u00e1l\u00e1shoz.<\/p>\n<p>Nem elegend\u0151, hogy csak a kezdem\u00e9nyezett adatb\u00e1zis-m\u0171veletek list\u00e1j\u00e1t tartsuk nyilv\u00e1n.<\/p>\n<p>Lehet\u0151v\u00e9 kell tenni, hogy megtal\u00e1ljunk konkr\u00e9t \u00e1ll\u00edt\u00e1sokat, amelyek \u00e9rdeklik az auditort.<\/p>\n<p>A standard napl\u00f3z\u00f3 eszk\u00f6z azt mutatja, amit a felhaszn\u00e1l\u00f3 k\u00e9rt, m\u00edg a pgAudit a k\u00e9r\u00e9s v\u00e9grehajt\u00e1s\u00e1nak r\u00e9szleteire \u00f6sszpontos\u00edt.<\/p>\n<p>P\u00e9ld\u00e1ul az auditor szeretn\u00e9 biztos\u00edtani, hogy egy adott t\u00e1bl\u00e1zat a dokument\u00e1lt karbantart\u00e1si ablakban lett l\u00e9trehozva.<\/p>\n<p>Ez egy egyszer\u0171 feladatnak t\u0171nhet az alapvet\u0151 audit\u00e1l\u00e1s \u00e9s a grep seg\u00edts\u00e9g\u00e9vel, de mi t\u00f6rt\u00e9nik, ha valami ilyen (sz\u00e1nd\u00e9kosan \u00f6sszezavart) p\u00e9ld\u00e1val tal\u00e1lkozunk:<\/p>\n<p>DO $$<br \/>\nKezd<br \/>\n EXECUTE 'CREATE TABLE import' || 'ant_table (id INT)';<br \/>\nEND $$;<\/p>\n<p>A standard napl\u00f3z\u00e1s ezt fogja adni:<\/p>\n<p>LOG:\u00a0 \u00e1ll\u00edt\u00e1s: DO $$<br \/>\nKezd<br \/>\n EXECUTE 'CREATE TABLE import' || 'ant_table (id INT)';<br \/>\nEND $$;<\/p>\n<p>\u00dagy t\u0171nik, hogy a megfelel\u0151 t\u00e1bl\u00e1zat keres\u00e9s\u00e9hez sz\u00fcks\u00e9g lehet bizonyos k\u00f3dismeretekre, amikor a t\u00e1bl\u00e1k dinamikusan j\u00f6ttek l\u00e9tre.<\/p>\n<p>Ez nem ide\u00e1lis, mivel jobb lenne egyszer\u0171en a t\u00e1bl\u00e1zat nev\u00e9re keresni.<\/p>\n<p>Itt v\u00e1lik hasznoss\u00e1 a pgAudit.<\/p>\n<p>Ugyanezen bemenetre ezt a kimenetet adja a napl\u00f3ban:<\/p>\n<p>AUDIT: SESSION,33,1,FUNCTION,DO,,,\u00abDO $$<br \/>\nKezd<br \/>\n EXECUTE 'CREATE TABLE import' || 'ant_table (id INT)';<br \/>\nEND $$;\"<br \/>\nAUDIT: SESSION,33,2,DDL,CREATE TABLE,TABLE,public.important_table,CREATE TABLE important_table (id INT)<\/p>\n<p>Nemcsak a DO blokk, hanem a CREATE TABLE teljes sz\u00f6vege is regisztr\u00e1lva van, a m\u0171velet t\u00edpus\u00e1val, objektumt\u00edpus\u00e1val \u00e9s teljes nev\u00e9vel, ami megk\u00f6nny\u00edti a keres\u00e9st.<\/p>\n<p>A SELECT \u00e9s DML oper\u00e1torok napl\u00f3z\u00e1s\u00e1n\u00e1l a pgAudit be\u00e1ll\u00edthat\u00f3, hogy k\u00fcl\u00f6n bejegyz\u00e9st r\u00f6gz\u00edtsen minden kapcsolatra vonatkoz\u00f3an, amelyre hivatkoznak az oper\u00e1torban.<\/p>\n<p>Nem sz\u00fcks\u00e9ges szintaktikai elemz\u00e9s, hogy megtal\u00e1ljuk az \u00f6sszes olyan oper\u00e1tort, amely egy adott t\u00e1bl\u00e1zatra vonatkozik (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pgaudit\/pgaudit\/blob\/master\/README.md\">*<\/a><\/noindex>)\u00bb.<\/p>\n<h3>Hogyan befoly\u00e1solja ez a DBMS teljes\u00edtm\u00e9ny\u00e9t?<\/h3>\n<p>\nInd\u00edtsunk teszteket a teljes audit enged\u00e9lyez\u00e9s\u00e9vel, \u00e9s n\u00e9zz\u00fck meg, mi t\u00f6rt\u00e9nik a PostgreSQL teljes\u00edtm\u00e9ny\u00e9vel. A lehet\u0151 legnagyobb napl\u00f3z\u00e1st fogjuk be\u00e1ll\u00edtani az adatb\u00e1zis minden param\u00e9ter\u00e9hez.<\/p>\n<p>A konfigur\u00e1ci\u00f3s f\u00e1jlban szinte semmit sem v\u00e1ltoztatunk, csak annyit, hogy be\u00e1ll\u00edtjuk a debug5 m\u00f3dot, hogy a lehet\u0151 legt\u00f6bb inform\u00e1ci\u00f3t kapjuk.<\/p>\n<p>, hogy a tesztadatb\u00e1zisunk ne akarjon csendesen biztos\u00edt\u00e9kot l\u00e9trehozni.<\/p>\n<p>log_destination = 'stderr'<br \/>\nlogging_collector = on<br \/>\nlog_truncate_on_rotation = on<br \/>\nlog_rotation_age = 1d<br \/>\nlog_rotation_size = 10MB<br \/>\nlog_min_messages = <strong>debug5<\/strong><br \/>\nlog_min_error_statement = <strong>debug5<\/strong><br \/>\nlog_min_duration_statement = 0<br \/>\ndebug_print_parse = on<br \/>\ndebug_print_rewritten = on<br \/>\ndebug_print_plan = on<br \/>\ndebug_pretty_print = on<br \/>\nlog_checkpoints = on<br \/>\nlog_connections = on<br \/>\nlog_disconnections = on<br \/>\nlog_duration = on<br \/>\nlog_hostname = on<br \/>\nlog_lock_waits = on<br \/>\nlog_replication_commands = on<br \/>\nlog_temp_files = 0<br \/>\nlog_timezone = 'Europe\/Moscow'<\/p>\n<p>\nA PostgreSQL adatb\u00e1zison 1 CPU, 2,8 GHz, 2 GB RAM, 40 GB HDD param\u00e9terekkel h\u00e1rom terhel\u00e9ses tesztet v\u00e9gz\u00fcnk, a k\u00f6vetkez\u0151 parancsok haszn\u00e1lat\u00e1val:<\/p>\n<pre><code class=\"plaintext\">$ pgbench -p 3389 -U postgres -i -s 150 benchmark\n$ pgbench -p 3389 -U postgres -c 50 -j 2 -P 60 -T 600 benchmark\n$ pgbench -p 3389 -U postgres -c 150 -j 2 -P 60 -T 600 benchmark<\/code><\/pre>\n<p>\n<strong>A tesztel\u00e9si eredm\u00e9nyek:<\/strong><\/p>\n<p><strong>Nincs napl\u00f3z\u00e1s<\/strong><br \/>\n<strong>Napl\u00f3z\u00e1ssal<\/strong><\/p>\n<p>Az adatb\u00e1zis felt\u00f6lt\u00e9s\u00e9nek v\u00e9gs\u0151 ideje<br \/>\n43,74 m\u00e1sodperc<br \/>\n53,23 m\u00e1sodperc<\/p>\n<p>RAM<br \/>\n24%<br \/>\n40%<\/p>\n<p>CPU<br \/>\n72%<br \/>\n91%<\/p>\n<p><strong>Teszt 1 (50 kapcsol\u00f3d\u00e1s)<\/strong><\/p>\n<p>Tranzakci\u00f3k sz\u00e1ma 10 perc alatt<br \/>\n74169<br \/>\n32445<\/p>\n<p>Tranzakci\u00f3k\/m\u00e1sodperc<br \/>\n123<br \/>\n54<\/p>\n<p>\u00c1tlagos k\u00e9sleltet\u00e9s<br \/>\n405 ms<br \/>\n925 ms<\/p>\n<p><strong>Teszt 2 (150 kapcsol\u00f3d\u00e1s 100 lehets\u00e9ges)<\/strong><\/p>\n<p>Tranzakci\u00f3k sz\u00e1ma 10 perc alatt<br \/>\n81727<br \/>\n31429<\/p>\n<p>Tranzakci\u00f3k\/m\u00e1sodperc<br \/>\n136<br \/>\n52<\/p>\n<p>\u00c1tlagos k\u00e9sleltet\u00e9s<br \/>\n550 ms<br \/>\n1432 ms<\/p>\n<p><strong>A m\u00e9retekr\u0151l<\/strong><\/p>\n<p>Az adatb\u00e1zis m\u00e9rete<br \/>\n2251 MB<br \/>\n2262 MB<\/p>\n<p>Az adatb\u00e1zis napl\u00f3i<br \/>\n0 MB<br \/>\n4587 MB<\/p>\n<p>\n\u00d6sszess\u00e9g\u00e9ben: a teljes audit nem t\u00fal j\u00f3. Az auditb\u00f3l sz\u00e1rmaz\u00f3 adatok mennyis\u00e9ge megegyezik az adatb\u00e1zisban l\u00e9v\u0151 adatok\u00e9val, vagy ak\u00e1r t\u00f6bb is. Az adatb\u00e1zis m\u0171k\u00f6d\u00e9se k\u00f6zben gener\u00e1lt napl\u00f3z\u00e1si mennyis\u00e9g szok\u00e1sos probl\u00e9ma a termel\u00e9sben.<\/p>\n<p>N\u00e9zz\u00fck meg a t\u00f6bbi param\u00e9tert:<\/p>\n<ul>\n<li>A sebess\u00e9g nem v\u00e1ltozik dr\u00e1maian: napl\u00f3z\u00e1s n\u00e9lk\u00fcl \u2014 43,74 m\u00e1sodperc, napl\u00f3z\u00e1ssal \u2014 53,23 m\u00e1sodperc.<\/li>\n<li>A RAM \u00e9s a CPU teljes\u00edtm\u00e9nye cs\u00f6kkenni fog, mivel audit f\u00e1jlokat kell gener\u00e1lni. Ez a termel\u00e9s sor\u00e1n is megfigyelhet\u0151.<\/li>\n<\/ul>\n<p>\nA kapcsol\u00f3d\u00e1sok sz\u00e1m\u00e1nak n\u00f6vel\u00e9se term\u00e9szetesen kism\u00e9rt\u00e9k\u0171 roml\u00e1st eredm\u00e9nyez.<\/p>\n<p>A v\u00e1llalatokn\u00e1l az audit m\u00e9g bonyolultabb:<\/p>\n<ul>\n<li>sok adat van;<\/li>\n<li>audit nemcsak syslogon kereszt\u00fcl a SIEM-ben, hanem f\u00e1jlokban is sz\u00fcks\u00e9ges: ha a sysloggal valami t\u00f6rt\u00e9nik, k\u00f6zel az adatb\u00e1zishoz kell lennie egy f\u00e1jlnak, amelyben az adatok t\u00e1rol\u00f3dnak;<\/li>\n<li>az audit sz\u00e1m\u00e1ra k\u00fcl\u00f6n adatkapacit\u00e1sra van sz\u00fcks\u00e9g, hogy ne maradjon le a lemezek I\/O-j\u00e1n, mivel ez sok helyet foglal el;<\/li>\n<li>el\u0151fordul, hogy a biztons\u00e1gi alkalmazottaknak mindenhol sz\u00fcks\u00e9ge van a GOST dokumentumokra, a vend\u00e9gazonos\u00edt\u00e1st k\u00f6vetelik.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Hozz\u00e1f\u00e9r\u00e9s korl\u00e1toz\u00e1sa az adatokhoz<\/h2>\n<p>\nN\u00e9zz\u00fck meg a technol\u00f3gi\u00e1kat, amelyeket az adatok v\u00e9delm\u00e9re \u00e9s a hozz\u00e1f\u00e9r\u00e9s\u00fck biztos\u00edt\u00e1s\u00e1ra haszn\u00e1lnak kereskedelmi adatb\u00e1zisokban \u00e9s ny\u00edlt forr\u00e1sk\u00f3d\u00fa megold\u00e1sokban.<\/p>\n<p>Mit haszn\u00e1lhatunk \u00e1ltal\u00e1noss\u00e1gban:<\/p>\n<ol>\n<li>Adatok titkos\u00edt\u00e1sa \u00e9s obfuszk\u00e1l\u00e1sa (Wrapping) \u2014 azaz k\u00fcl\u00f6nb\u00f6z\u0151 eszk\u00f6z\u00f6k \u00e9s seg\u00e9dprogramok, amelyek a sz\u00f6veges k\u00f3dot olvashatatlann\u00e1 teszik. Igaz, azt k\u00e9s\u0151bb nem lehet sem m\u00f3dos\u00edtani, sem vissza\u00e9p\u00edteni. Ilyen megold\u00e1sra n\u00e9ha sz\u00fcks\u00e9g van legal\u00e1bb az adatb\u00e1zis szintj\u00e9n \u2014 a licenszel\u00e9si korl\u00e1toz\u00e1sok vagy az enged\u00e9lyez\u00e9s logika titkos\u00edtva van pontosan a f\u00fcggv\u00e9nyek \u00e9s elj\u00e1r\u00e1sok szintj\u00e9n.<\/li>\n<li>A sorok l\u00e1that\u00f3s\u00e1g\u00e1nak korl\u00e1toz\u00e1sa (RLS) azt jelenti, hogy k\u00fcl\u00f6nb\u00f6z\u0151 felhaszn\u00e1l\u00f3k ugyanazt a t\u00e1bl\u00e1zatot l\u00e1tj\u00e1k, de elt\u00e9r\u0151 sor\u00f6sszet\u00e9tellel, vagyis valakinek tilos megmutatni valamit a sorok szintj\u00e9n.<\/li>\n<li>A megjelen\u00edtett adatok szerkeszt\u00e9se (Masking) azt jelenti, hogy a felhaszn\u00e1l\u00f3k egy t\u00e1bl\u00e1zat egy oszlop\u00e1ban vagy adatokat, vagy csak csillagokat l\u00e1tnak, vagyis bizonyos felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra az inform\u00e1ci\u00f3 z\u00e1rva lesz. A technol\u00f3gia meghat\u00e1rozza, hogy melyik felhaszn\u00e1l\u00f3nak mit mutasson a hozz\u00e1f\u00e9r\u00e9si szint figyelembev\u00e9tel\u00e9vel.<\/li>\n<li>A hozz\u00e1f\u00e9r\u00e9s korl\u00e1toz\u00e1sa Security DBA\/Application DBA\/DBA - ez ink\u00e1bb a DBMS-hez val\u00f3 hozz\u00e1f\u00e9r\u00e9s korl\u00e1toz\u00e1s\u00e1r\u00f3l sz\u00f3l, azaz a IT munkat\u00e1rsakat el lehet v\u00e1lasztani az adatb\u00e1zis-adminisztr\u00e1torokt\u00f3l \u00e9s az alkalmaz\u00e1s-adminisztr\u00e1torokt\u00f3l. Ny\u00edlt forr\u00e1sk\u00f3d\u00fa megold\u00e1sokb\u00f3l van n\u00e9h\u00e1ny ilyen technol\u00f3gia, de kereskedelmi DBMS-ekb\u0151l b\u0151ven van. Akkor van sz\u00fcks\u00e9g r\u00e1juk, amikor sok felhaszn\u00e1l\u00f3nak van hozz\u00e1f\u00e9r\u00e9se magukhoz a szerverekhez.<\/li>\n<li>A f\u00e1jlokhoz val\u00f3 hozz\u00e1f\u00e9r\u00e9s korl\u00e1toz\u00e1sa a f\u00e1jlrendszer szintj\u00e9n. Lehet jogosults\u00e1gokat, hozz\u00e1f\u00e9r\u00e9si el\u0151jogokat adni k\u00f6nyvt\u00e1rakra, hogy minden adminisztr\u00e1tor csak a sz\u00fcks\u00e9ges adatokhoz f\u00e9rhessen hozz\u00e1.<\/li>\n<li>A mand\u00e1tumos hozz\u00e1f\u00e9r\u00e9s \u00e9s mem\u00f3ria-tiszt\u00edt\u00e1s ezeket a technol\u00f3gi\u00e1kat ritk\u00e1n alkalmazz\u00e1k.<\/li>\n<li>A v\u00e9gpontt\u00f3l v\u00e9gpontig terjed\u0151 titkos\u00edt\u00e1s a DBMS-n\u00e9l - ez a kliensoldali titkos\u00edt\u00e1s, ahol a kulcskezel\u00e9s a szerveroldalon t\u00f6rt\u00e9nik.<\/li>\n<li>Adatok titkos\u00edt\u00e1sa. P\u00e9ld\u00e1ul oszlopok titkos\u00edt\u00e1sa - amikor olyan mechanizmust haszn\u00e1l, amely egy adott oszlopot titkos\u00edt a b\u00e1zison bel\u00fcl.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Hogyan hat ez a DBMS teljes\u00edtm\u00e9ny\u00e9re?<\/h3>\n<p>\nN\u00e9zz\u00fck meg a PostgreSQL oszlopos titkos\u00edt\u00e1s\u00e1nak p\u00e9ld\u00e1j\u00e1t. Ott van a pgcrypto modul, amely lehet\u0151v\u00e9 teszi, hogy bizonyos mez\u0151ket titkos\u00edtva t\u00e1roljunk. Ez hasznos, amikor csak bizonyos adatok \u00e9rt\u00e9kesek. A titkos\u00edtott mez\u0151k olvas\u00e1s\u00e1hoz a kliens tov\u00e1bb\u00edtja a dek\u00f3dol\u00f3 kulcsot, a szerver dek\u00f3dolja az adatokat \u00e9s visszaadja a kliensnek. Kulcs n\u00e9lk\u00fcl senki sem tud semmit kezdeni az \u00d6n adataival.<\/p>\n<p><strong>Tesztelj\u00fck a pgcrypt\u00f3t<\/strong>. Hozzunk l\u00e9tre egy t\u00e1bl\u00e1t titkos\u00edtott \u00e9s norm\u00e1l adatokkal. Az al\u00e1bbiakban a t\u00e1bl\u00e1k l\u00e9trehoz\u00e1s\u00e1hoz sz\u00fcks\u00e9ges parancsok, az els\u0151 sorban egy hasznos parancs \u2013 az extension l\u00e9trehoz\u00e1sa a DBMS regisztr\u00e1l\u00e1s\u00e1val:<\/p>\n<pre><code class=\"plaintext\">CREATE EXTENSION pgcrypto;\nCREATE TABLE t1 (id integer, text1 text, text2 text);\nCREATE TABLE t2 (id integer, text1 bytea, text2 bytea);\nINSERT INTO t1 (id, text1, text2)\nVALUES (generate_series(1,10000000), generate_series(1,10000000)::text, generate_series(1,10000000)::text);\nINSERT INTO t2 (id, text1, text2) VALUES (\ngenerate_series(1,10000000),\nencrypt(cast(generate_series(1,10000000) AS text)::bytea, 'key'::bytea, 'bf'),\nencrypt(cast(generate_series(1,10000000) AS text)::bytea, 'key'::bytea, 'bf'));<\/code><\/pre>\n<p>\nEzut\u00e1n megpr\u00f3b\u00e1ljuk adatokat lek\u00e9rdezni minden t\u00e1bl\u00e1b\u00f3l, \u00e9s megvizsg\u00e1ljuk a v\u00e9grehajt\u00e1si id\u0151ket.<\/p>\n<p><strong>Lek\u00e9rdez\u00e9s a t\u00e1bl\u00e1b\u00f3l titkos\u00edt\u00e1si funkci\u00f3 n\u00e9lk\u00fcl<\/strong>:<\/p>\n<pre><code class=\"plaintext\">psql -c \"timing\" -c \"select * from t1 limit 1000;\" \"host=192.168.220.129 dbname=taskdb\nuser=postgres sslmode=disable\" &gt; 1.txt<\/code><\/pre>\n<p>\nA stopper elindult.<\/p>\n<p>\u00a0\u00a0id | text1 | text2<br \/>\n------+------+-+------<br \/>\n 1 | 1 \u00a0 \u00a0 | 1<br \/>\n 2 | 2 \u00a0 \u00a0 | 2<br \/>\n 3 | 3 \u00a0 \u00a0 | 3<br \/>\n\u2026<br \/>\n997 | 997 \u00a0 | 997<br \/>\n998 | 998 \u00a0 | 998<br \/>\n999 | 999 \u00a0 | 999<br \/>\n1000 | 1000\u00a0 | 1000<br \/>\n(1000 sor)<\/p>\n<p>Id\u0151: 1,386 ms<\/p>\n<p><strong>Lek\u00e9rdez\u00e9s a t\u00e1bl\u00e1b\u00f3l titkos\u00edt\u00e1si funkci\u00f3val:<\/strong><\/p>\n<pre><code class=\"plaintext\">psql -c \"timing\" -c \"select id, decrypt(text1, 'key'::bytea, 'bf'),\ndecrypt(text2, 'key'::bytea, 'bf') from t2 limit 1000;\"\n\"host=192.168.220.129 dbname=taskdb user=postgres sslmode=disable\" &gt; 2.txt<\/code><\/pre>\n<p>\nA stopper elindult.<\/p>\n<p>\u00a0\u00a0id | decrypt | decrypt<br \/>\n------+--------+------<br \/>\n 1 | x31 | x31<br \/>\n 2 | x32 | x32<br \/>\n 3 | x33 | x33<br \/>\n\u2026<br \/>\n999 | x393939 | x393939<br \/>\n1000 | x31303030 | x31303030<br \/>\n(1000 sor)<\/p>\n<p>Id\u0151: 50,203 ms<\/p>\n<p><strong>Tesztel\u00e9si eredm\u00e9nyek<\/strong>:<\/p>\n<p>\u00a0<br \/>\n<strong>Titkos\u00edt\u00e1s n\u00e9lk\u00fcl<\/strong><br \/>\n<strong>Pgcrypto (dek\u00f3dol\u00e1s)<\/strong><\/p>\n<p>Lek\u00e9rdez\u00e9s 1000 sorra<br \/>\n1,386 ms<br \/>\n50,203 ms<\/p>\n<p>CPU<br \/>\n15%<br \/>\n35%<\/p>\n<p>RAM<br \/>\n\u00a0<br \/>\n+5%<\/p>\n<p>\nA titkos\u00edt\u00e1s jelent\u0151sen befoly\u00e1solja a teljes\u00edtm\u00e9nyt. L\u00e1that\u00f3, hogy a teljes\u00edtm\u00e9nyid\u0151 n\u0151tt, mivel a titkos\u00edtott adatok dek\u00f3dol\u00e1si m\u0171veletei (\u00e9s a dek\u00f3dol\u00e1s \u00e1ltal\u00e1ban m\u00e9g a logik\u00e1dat is mag\u00e1ba foglalja) jelent\u0151s er\u0151forr\u00e1sokat ig\u00e9nyelnek. Teh\u00e1t a minden oszlop titkos\u00edt\u00e1sa, amely valamilyen adatokat tartalmaz, a teljes\u00edtm\u00e9ny cs\u00f6kken\u00e9s\u00e9vel j\u00e1rhat.<\/p>\n<p>Ugyanakkor a titkos\u00edt\u00e1s nem ez\u00fcst l\u00f6ved\u00e9k, amely minden probl\u00e9m\u00e1t megold. A dek\u00f3dolt adatok \u00e9s a dek\u00f3dol\u00f3 kulcs a dek\u00f3dol\u00e1s \u00e9s az adatok \u00e1tvitele sor\u00e1n a szerveren tal\u00e1lhat\u00f3ak. Ez\u00e9rt a kulcsok elfoghat\u00f3k azok sz\u00e1m\u00e1ra, akik teljes hozz\u00e1f\u00e9r\u00e9ssel rendelkeznek az adatb\u00e1zis szerverhez, p\u00e9ld\u00e1ul a rendszergazd\u00e1k \u00e1ltali.<\/p>\n<p>Amikor egy oszlop teljes terjedelemben minden felhaszn\u00e1l\u00f3 sz\u00e1m\u00e1ra egy kulcs van (akkor is, ha nem mindenki sz\u00e1m\u00e1ra, hanem egy korl\u00e1tozott \u00fcgyf\u00e9lk\u00f6r sz\u00e1m\u00e1ra), az nem mindig j\u00f3 \u00e9s helyes. \u00c9ppen ez\u00e9rt kezdt\u00e9k el az end-to-end titkos\u00edt\u00e1st, az adatb\u00e1zisokban elkezdt\u00e9k megvizsg\u00e1lni az adatok titkos\u00edt\u00e1si lehet\u0151s\u00e9geit a kliens \u00e9s a szerver oldal\u00e1r\u00f3l, megjelentek a kulcsnyilv\u00e1ntart\u00f3 t\u00e1rol\u00f3k \u2014 k\u00fcl\u00f6n term\u00e9kek, amelyek a DBMS (adatb\u00e1zis-kezel\u0151 rendszer) oldal\u00e1n kulcskezel\u00e9st biztos\u00edtanak.<\/p>\n<p><img decoding=\"async\" alt=\"Biztons\u00e1g \u00e9s DBMS: amit szem el\u0151tt kell tartani a v\u00e9delmi eszk\u00f6z\u00f6k kiv\u00e1laszt\u00e1sakor\" src=\"\/wp-content\/uploads\/2020\/05\/cbaa7b9579a65963518ba3cec6114842.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/security-client-side-encryption\/\"><i>A MongoDB-ban ilyen titkos\u00edt\u00e1si p\u00e9lda<\/i><\/a><\/noindex><\/p>\n<h2>Biztons\u00e1gi eszk\u00f6z\u00f6k kereskedelmi \u00e9s ny\u00edlt forr\u00e1sk\u00f3d\u00fa DBMS-ben<\/h2>\n<p><\/p>\n<p><strong>Funkci\u00f3k<\/strong><br \/>\n<strong>T\u00edpus<\/strong><br \/>\n<strong>Jelsz\u00f3politika<\/strong><br \/>\n<strong>Audit<\/strong><br \/>\n<strong>A folyamatok \u00e9s funkci\u00f3k forr\u00e1sk\u00f3dj\u00e1nak v\u00e9delme<\/strong><br \/>\n<strong>RLS<\/strong><br \/>\n<strong>Titkos\u00edt\u00e1s<\/strong><\/p>\n<p><strong>Oracle<\/strong><br \/>\nKereskedelmi<br \/>\n+<br \/>\n+<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p><strong>MsSql<\/strong><br \/>\nKereskedelmi<br \/>\n+<br \/>\n+<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.gaz-is.ru\/produkty\/inform-sistemy\/subd-jatoba.html\"><strong>Jatoba<\/strong><\/a><\/noindex><br \/>\nKereskedelmi<br \/>\n+<br \/>\n+<br \/>\n+<br \/>\n+<br \/>\nb\u0151v\u00edtm\u00e9nyek<\/p>\n<p><strong>PostgreSQL<\/strong><br \/>\nIngyenes<br \/>\nb\u0151v\u00edtm\u00e9nyek<br \/>\nb\u0151v\u00edtm\u00e9nyek<br \/>\n\u2014<br \/>\n+<br \/>\nb\u0151v\u00edtm\u00e9nyek<\/p>\n<p><strong>MongoDb<\/strong><br \/>\nIngyenes<br \/>\n\u2014<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<br \/>\nCsak a MongoDB Enterprise verzi\u00f3ban el\u00e9rhet\u0151<\/p>\n<p>\nA t\u00e1bl\u00e1zat messze nem teljes, de a helyzet a k\u00f6vetkez\u0151: a kereskedelmi term\u00e9kekn\u00e9l a biztons\u00e1gi kih\u00edv\u00e1sokra m\u00e1r r\u00e9g\u00f3ta megold\u00e1sok vannak, a ny\u00edlt forr\u00e1sk\u00f3d\u00fa megold\u00e1sokn\u00e1l \u00e1ltal\u00e1ban k\u00fcl\u00f6nb\u00f6z\u0151 kieg\u00e9sz\u00edt\u0151ket haszn\u00e1lnak a biztons\u00e1gra, sok funkci\u00f3 hi\u00e1nyzik, \u00e9s n\u00e9ha sz\u00fcks\u00e9g van a kieg\u00e9sz\u00edt\u00e9s\u00fckre. P\u00e9ld\u00e1ul a jelsz\u00f3politik\u00e1k \u2014 a PostgreSQL-ben sok k\u00fcl\u00f6nb\u00f6z\u0151 kieg\u00e9sz\u00edt\u00e9st tal\u00e1lhatunk.<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postgres\/postgres\/tree\/master\/contrib\/passwordcheck\">1<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ykrysko\/passwordcheck\">2<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/michaelpq\/pg_plugins\/tree\/master\/passwordcheck_extra\">3<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/devrimgunduz\/passwordcheck_cracklib\">4<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/asio\/password\">5<\/a><\/noindex>), amelyek jelsz\u00f3politik\u00e1kat alkalmaznak, de v\u00e9lem\u00e9nyem szerint a hazai v\u00e1llalati szegmens ig\u00e9nyeit egyik sem fedi le.<\/p>\n<p><strong>Mit tegy\u00fcnk, ha sehol sem tal\u00e1ljuk, amire sz\u00fcks\u00e9g van?<\/strong>? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0421\u0423\u0411\u0414, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a.<\/p>\n<p>Ilyenkor harmadik f\u00e9lt\u0151l sz\u00e1rmaz\u00f3 megold\u00e1sokat lehet haszn\u00e1lni, amelyek k\u00fcl\u00f6nb\u00f6z\u0151 DBMS-ekkel m\u0171k\u00f6dnek, p\u00e9ld\u00e1ul a 'Crypto DB'-t vagy a 'Garda DB'-t. Ha a hazai szegmens megold\u00e1sair\u00f3l van sz\u00f3, \u0151k jobban ismerik a GOST-okat, mint az open source k\u00f6z\u00f6ss\u00e9g.<\/p>\n<p>A m\u00e1sodik lehet\u0151s\u00e9g, hogy saj\u00e1t magunk \u00edrjuk meg, amire sz\u00fcks\u00e9g van, \u00e9s megval\u00f3s\u00edtjuk az adat-hozz\u00e1f\u00e9r\u00e9st \u00e9s titkos\u00edt\u00e1st az alkalmaz\u00e1s szintj\u00e9n. Igaz, a GOST-tal nehezebb lesz. De \u00f6sszess\u00e9g\u00e9ben \u2014 el tudjuk rejteni az adatokat a sz\u00fcks\u00e9ges m\u00f3don, belehelyezni a DBMS-be, majd onnan kivenni \u00e9s a megfelel\u0151 m\u00f3don dekript\u00e1lni, k\u00f6zvetlen\u00fcl az alkalmaz\u00e1s szintj\u00e9n. K\u00f6zben pedig \u00e9rdemes elgondolkodni, hogyan v\u00e9dj\u00fck meg ezeket az algoritmusokat az alkalmaz\u00e1son bel\u00fcl. V\u00e9lem\u00e9ny\u00fcnk szerint ezt a DBMS szintj\u00e9n kellene megtenni, mert \u00edgy gyorsabban fog m\u0171k\u00f6dni.<\/p>\n<p>Ez a besz\u00e9d el\u0151sz\u00f6r hangzott el <noindex><a rel=\"nofollow\" href=\"https:\/\/corp.mail.ru\/ru\/press\/events\/databases-1\/\">@Adatb\u00e1zis Meetup<\/a><\/noindex> a Mail.ru Cloud Solutions \u00e1ltal. N\u00e9zd meg<noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/redirect?q=https%3A%2F%2Fbit.ly%2F2U57FAd&amp;redir_token=XNWSBN1AKQA2sjhdReDAv6VnkOV8MTU4OTAxNjMwMEAxNTg4OTI5OTAw&amp;v=wigSv2_zWBU&amp;event=video_description\"> vide\u00f3n <\/a><\/noindex>m\u00e1s el\u0151ad\u00e1sokat, \u00e9s iratkozz fel az esem\u00e9nyek \u00e9rtes\u00edt\u00e9seire a Telegramon <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/k8s_mail\">A Kubernetes k\u00f6r\u00fcl a Mail.ru Groupban<\/a><\/noindex>.<\/p>\n<p><strong>Mit \u00e9rdemes m\u00e9g olvasni a t\u00e9m\u00e1ban<\/strong>:<\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/472694\/\">T\u00f6bb mint Ceph: MCS felh\u0151 blokkt\u00e1rol\u00f3ja<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/blog\/kakuyu-bazu-dannyh-vybrat-dlya-proekta-chtoby-ne-oshibitsya\">Hogyan v\u00e1lasszunk adatb\u00e1zist a projekthez, hogy ne kelljen \u00fajra v\u00e1lasztani?<\/a><\/noindex>.<\/li>\n<\/ol>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/500708\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u0435\u043d\u0438\u0441 \u0420\u043e\u0436\u043a\u043e\u0432, \u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u041f\u041e \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u00ab\u0413\u0430\u0437\u0438\u043d\u0444\u043e\u0440\u043c\u0441\u0435\u0440\u0432\u0438\u0441\u00bb, \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 Jatoba. \u0417\u0430\u043a\u043e\u043d\u043e\u0434\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0438 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043d\u043e\u0440\u043c\u044b \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u0438\u043a\u0442\u043e \u043d\u0435 \u0445\u043e\u0447\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0442\u0440\u0435\u0442\u044c\u0438 \u043b\u0438\u0446\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432\u0430\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b: \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430\u043c\u0438 \u043a \u0434\u0430\u043d\u043d\u044b\u043c, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":81885,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-81884","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u0435\u043d\u0438\u0441.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/bezopasnost-i-subd-o-chyom-nado-pomnit-podbiraya-sredstva-zashhity\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0438 \u0421\u0423\u0411\u0414: \u043e \u0447\u0451\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0437\u0430\u0449\u0438\u0442\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u0435\u043d\u0438\u0441.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/bezopasnost-i-subd-o-chyom-nado-pomnit-podbiraya-sredstva-zashhity\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-17T11:42:18+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-17T11:42:18+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Biztons\u00e1g \u00e9s DBMS: mire kell figyelni a v\u00e9delmi eszk\u00f6z\u00f6k kiv\u00e1laszt\u00e1s\u00e1n\u00e1l | ProHoster","description":"A nevem Denis.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/bezopasnost-i-subd-o-chyom-nado-pomnit-podbiraya-sredstva-zashhity","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0438 \u0421\u0423\u0411\u0414: \u043e \u0447\u0451\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0437\u0430\u0449\u0438\u0442\u044b | ProHoster","og:description":"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u0435\u043d\u0438\u0441.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/bezopasnost-i-subd-o-chyom-nado-pomnit-podbiraya-sredstva-zashhity","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-17T11:42:18+00:00","article:modified_time":"2020-05-17T11:42:18+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"81884","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:48:24","updated":"2022-10-05 02:01:28","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/81884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=81884"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/81884\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/81885"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=81884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=81884"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=81884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}