{"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\/et\/blog\/administrirovanie\/bezopasnost-i-subd-o-chyom-nado-pomnit-podbiraya-sredstva-zashhity","title":{"rendered":"Turvalisus ja andmebaasid: mida meeles pidada kaitsevahendeid valides","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1><img decoding=\"async\" alt=\"Turvalisus ja andmebaasid: mida meeles pidada kaitsevahendeid valides\" src=\"\/wp-content\/uploads\/2020\/05\/ac49253838e36336af127d71394139d8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/h1>\n<p>\nMinu nimi on Denis Rozhkov, olen tarkvaraarenduse direktor Gasinformservice'is, meie toote meeskonnas. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gaz-is.ru\/produkty\/inform-sistemy\/subd-jatoba.html\">Jatoba<\/a><\/noindex>. Seadusandlus ja ettev\u00f5tte normid kehtestavad teatud n\u00f5uded andmete turvalisusele. Keegi ei soovi, et kolmandad isikud saaksid juurdep\u00e4\u00e4su konfidentsiaalsele teabele, seet\u00f5ttu on igasuguste projektide puhul olulised j\u00e4rgmised k\u00fcsimused: tuvastamine ja autentimine, juurdep\u00e4\u00e4sude haldamine andmetele, s\u00fcsteemi teabe terviklikkuse tagamine ning turvaettev\u00f5tete registreerimine. Seet\u00f5ttu soovin r\u00e4\u00e4kida m\u00f5ningatest huvitavatest aspektidest, mis on seotud andmebaaside turvalisusega. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nArtikkel on valmistatud ette ettekande p\u00f5hjal <noindex><a rel=\"nofollow\" href=\"https:\/\/corp.mail.ru\/ru\/press\/events\/databases-1\/\">@Databases Meetup,<\/a><\/noindex> mille korraldas <noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/\">Mail.ru Pilve Lahendused<\/a><\/noindex>. Kui te ei soovi lugeda, saate vaadata:<\/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=\"M\u00e4ngi videot\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nArtiklis on kolm osa:<\/p>\n<ul>\n<li>Kuidas kaitsta \u00fchendusi.<\/li>\n<li>Mis on tehingu audit ja kuidas fikseerida, mis toimub andmebaasi ning selle \u00fchenduste poolelt.<\/li>\n<li>Kuidas kaitsta andmeid andmebaasis ja milliseid tehnoloogiaid selleks on olemas.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Turvalisus ja andmebaasid: mida meeles pidada kaitsevahendeid valides\" src=\"\/wp-content\/uploads\/2020\/05\/fbdca7f4a925b9ceb78de06c6e245b23.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kolm komponenti andmebaasi turvalisuses: \u00fchenduste kaitsmine, tegevuste audit ja andmete kaitsmine<\/i><\/p>\n<h2>\u00dchenduste kaitsmine<\/h2>\n<p>\nAndmebaasi saab \u00fchendada nii otse kui ka kaudselt veebirakenduste kaudu. Reeglina suhtleb \u00e4rikasutaja, see t\u00e4hendab, et inimene, kes t\u00f6\u00f6tab andmebaasiga, ei suhtle sellega otse.<\/p>\n<p>Enne kui r\u00e4\u00e4gime \u00fchenduste kaitsmisest, tuleb vastata olulistele k\u00fcsimustele, millest s\u00f5ltub, kuidas turvameetmeid korraldatakse:<\/p>\n<ul>\n<li>kas \u00fcks \u00e4rikasutaja vastab \u00fchele andmebaasi kasutajale;<\/li>\n<li>kas andmebaasi andmetele p\u00e4\u00e4seb juurde ainult teie kontrollitud API kaudu v\u00f5i on otse juurdep\u00e4\u00e4s tabelitele;<\/li>\n<li>kas andmebaas on eraldatud kaitstud segmenti, kes ja kuidas sellega suhtleb;<\/li>\n<li>kas kasutatakse pooling\/proxy ja vahekihte, mis v\u00f5ivad muuta teavet selle kohta, kuidas \u00fchendus on \u00fcles ehitatud ja kes kasutab andmebaasi.<\/li>\n<\/ul>\n<p>\nN\u00fc\u00fcd vaatame, milliseid t\u00f6\u00f6riistu saab kasutada \u00fchenduste kaitsmiseks:<\/p>\n<ol>\n<li>Kasutage andmebaasi tulem\u00fc\u00fcri klassi lahendusi. Lisakaitsekiht t\u00f5stab v\u00e4hemalt l\u00e4bipaistvust selle osas, mis toimub andmebaasis, maksimaalselt \u2014 v\u00f5imaldab teil tagada andmete lisakaitse.<\/li>\n<li>Kasutage paroolipoliitikat. Nende rakendamine s\u00f5ltub sellest, kuidas teie arhitektuur on \u00fcles ehitatud. Igatahes \u2014 \u00fches konfiguratsioonifailis olevast paroolist, mis on seotud andmebaasi, ei piisa kaitseks. On mitmeid andmebaasi t\u00f6\u00f6riistu, mis v\u00f5imaldavad j\u00e4lgida, milliseid kasutajaid ja paroole on vaja ajakohastada.\n<p>Rohkem teavet kasutajate hindamise funktsioonide kohta saab lugeda <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.cloud.oracle.com\/en-us\/iaas\/data-safe\/doc\/user-assessment-reports.html\">siin<\/a><\/noindex>, samuti saab teada MS SQL Vulnerability Assessmeni kohta <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/security\/sql-vulnerability-assessment?view=sql-server-ver15\">siit<\/a><\/noindex>.\u00a0<\/li>\n<li>Rikkaga ssessioni konteksti vajalike andmetega. Kui sessioon on l\u00e4bipaistmatu, ei saa te aru, kes seal andmebaasis t\u00f6\u00f6tab; konkreetses operatsioonis on v\u00f5imalik lisada teavet selle kohta, kes, mida ja miks teeb. Selle teabe n\u00e4eb auditis.<\/li>\n<li>Seadistage SSL, kui andmebaasil puudub v\u00f5rgulise eraldatuse, ja see ei ole eraldi VLAN-is. Sellistes olukordades on oluline kaitsta kanalit tarbija ja andmebaasi vahel. Kaitset\u00f6\u00f6riistu leidub ka avatud allikates.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Kuidas see m\u00f5jutab andmebaasi j\u00f5udlust?<\/h3>\n<p>\nVaadake n\u00e4itel PostgreSQL, kuidas SSL m\u00f5jutab CPU koormust, ajakulu ja TPS-i, kas ressursse ei kulu liiga palju, kui see on sisse l\u00fclitatud.<\/p>\n<p>Koormame PostgreSQL-i, kasutades pgbench'i \u2014 see on lihtne programm j\u00f5udlustestide l\u00e4biviimiseks. See kordab sama k\u00e4su j\u00e4rjestikku, v\u00f5imalusel andmebaasi paralleelsetes sessioonides, ja seej\u00e4rel arvutab tehingute keskmise kiirus.<\/p>\n<p><strong>Test 1 ilma SSL-i ja SSL-iga.<\/strong> \u2014 \u00fchendus luuakse igas tehingus:<\/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>Test 2 ilma SSL-i ja SSL-iga.<\/strong> \u2014 k\u00f5ik tehingud toimub \u00fches \u00fchenduses:<\/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>\u00dclej\u00e4\u00e4nud seaded<\/strong>:<\/p>\n<pre><code class=\"plaintext\">skaleerimise faktor: 1\np\u00e4ringu re\u017eiim: lihtne\nklientide arv: 10\nniidide arv: 1\ntehingute arv kliendi kohta: 5000\nt\u00f6\u00f6deldud tehingute arv: 50000\/50000<\/code><\/pre>\n<p>\n<strong>Testimise tulemused<\/strong>:<\/p>\n<p>\u00a0<br \/>\n<strong>ILMA SSL-ita<\/strong><br \/>\n<strong>SSL<\/strong><\/p>\n<p><strong>\u00dchendus luuakse igas tehingus.<\/strong><\/p>\n<p>latentsuse keskmine<br \/>\n171.915 ms<br \/>\n187.695 ms<\/p>\n<p>tps, sealhulgas \u00fchenduste loomine<br \/>\n58.168112<br \/>\n53.278062<\/p>\n<p>tps, v\u00e4lja arvatud \u00fchenduste loomine<br \/>\n64.084546<br \/>\n58.725846<\/p>\n<p>CPU<br \/>\n24%<br \/>\n28%<\/p>\n<p><strong>K\u00f5ik tehingud toimub \u00fches \u00fchenduses.<\/strong><\/p>\n<p>latentsuse keskmine<br \/>\n6.722 ms<br \/>\n6.342 ms<\/p>\n<p>tps, sealhulgas \u00fchenduste loomine<br \/>\n1587.657278<br \/>\n1576.792883<\/p>\n<p>tps, v\u00e4lja arvatud \u00fchenduste loomine<br \/>\n1588.380574<br \/>\n1577.694766<\/p>\n<p>CPU<br \/>\n17%<br \/>\n21%<\/p>\n<p>\nMadala koormuse korral on SSL-i m\u00f5ju v\u00f5rreldav m\u00f5\u00f5tmise vea suurusega. Kui edastatava teabe maht on v\u00e4ga suur, v\u00f5ib olukord olla erinev. Kui me seome iga tehingu jaoks \u00fche \u00fchenduse (see juhtub harva, tavaliselt jagavad kasutajad \u00fchte \u00fchendust), on \u00fchenduste\/eraldamiste arv suur ja m\u00f5ju v\u00f5ib olla veidi suurem. See t\u00e4hendab, et j\u00f5udluse v\u00e4henemise riskid v\u00f5ivad olla olemas, kuid erinevus ei ole piisavalt suur, et mitte kasutada kaitset.<\/p>\n<p>Pange t\u00e4hele \u2014 suur erinevus on olemas, kui v\u00f5rrelda t\u00f6\u00f6re\u017eiime: t\u00f6\u00f6tamine \u00fche sessiooni raames v\u00f5i erinevates sessioonides. See on selge: iga \u00fchenduse loomisele kulub ressursse.<\/p>\n<p>Meil oli juhtum, kui me \u00fchendasime Zabbixi trust-re\u017eiimis, st md5 ei olnud kontrollitud, autentimise vajadust ei olnud. Hiljem palus tellija sisse l\u00fclitada md5-autentimise re\u017eiim. See t\u00f5i kaasa suure koormuse CPU-le, j\u00f5udlus langes. Hakkasime otsima optimeerimisv\u00f5imalusi. \u00dcks v\u00f5imalik lahendus probleemile on rakendada v\u00f5rgupiirangut, luua andmebaasi jaoks eraldi VLAN, lisada seadeid, et oleks selge, kes ja kust \u00fchendub, ning eemaldada autentimine. Samuti v\u00f5ib autentimise seadistusi optimeerida, et v\u00e4hendada autentimise kaasnevaid kulusid, kuid \u00fcldiselt m\u00f5jutavad erinevad autentimismeetodid j\u00f5udlust ning need tegurid tuleb arvesse v\u00f5tta serverite (rauda) arvutusv\u00f5imsuse kavandamisel andmebaasi jaoks.<\/p>\n<p>Kokkuv\u00f5te: mitmes lahenduses v\u00f5ivad isegi v\u00e4ikesed autentimise n\u00fcansid projekti m\u00e4rkimisv\u00e4\u00e4rselt m\u00f5jutada ja on halb, kui see selgub alles tootmisse viimise k\u00e4igus.<\/p>\n<h2>Tegevuste audit<\/h2>\n<p>\nAudit ei pea olema ainult andmebaasi. Audit on teave selle kohta, mis toimub erinevates segmentides. See v\u00f5ib h\u00f5lmata nii andmebaasi tulem\u00fc\u00fcri kui ka operatsioonis\u00fcsteemi, millele andmebaas toetub.<\/p>\n<p>Kommertseandmebaasides, mis kuuluvad Enterprise tasemele, on auditiga k\u00f5ik h\u00e4sti, avatud l\u00e4htekoodiga lahendustes \u2014 mitte alati. Siin on, mis on saadaval PostgreSQL-is:<\/p>\n<ul>\n<li>default log \u2014 sisseehitatud logimine;<\/li>\n<li>extensions: pgaudit \u2014 kui vaikimisi logimine ei ole piisav, saab kasutada eraldi seadistusi, mis lahendavad osa probleeme.<\/li>\n<\/ul>\n<p>\n<b>T\u00e4iendamine aruandele videos:<\/b><\/p>\n<p>Baastava registraatorite v\u00e4ljakutseid saab tagada standardse logimise t\u00f6\u00f6riistaga, mille log_statement on seatud v\u00e4\u00e4rtusele 'all'.<\/p>\n<p>See on vastuv\u00f5etav j\u00e4lgimiseks ja muuks kasutamiseks, kuid ei paku tavaliselt vajalikku \u00fcksikasjalikkust auditi jaoks.<\/p>\n<p>Lihtsalt k\u00f5igi andmebaasi toimingute loetelu ei ole piisav.<\/p>\n<p>Samuti peab olema v\u00f5imalik leida spetsiifilisi v\u00e4iteid, mis huvitavad audiitoreid.<\/p>\n<p>Standardne logimise t\u00f6\u00f6riist n\u00e4itab seda, mida kasutaja soovis, samas kui pgAudit keskendub sellele, mis tegelikult juhtus, kui andmebaas sooritas p\u00e4ringu.<\/p>\n<p>N\u00e4iteks v\u00f5ib auditor soovida veenduda, et konkreetne tabel loodi dokumenteeritud hooldusaegadel.<\/p>\n<p>See v\u00f5ib tunduda lihtsa \u00fclesandena baasauditi ja grep'iga, kuid mis siis, kui sul on midagi sellist (intentionally confusing) n\u00e4idist:<\/p>\n<p>DO $$<br \/>\nBEGIN<br \/>\n EXECUTE 'CREATE TABLE import' || 'ant_table (id INT)';<br \/>\nEND $$;<\/p>\n<p>Standardne logimine annab teile selle:<\/p>\n<p>LOG: statement: DO $$<br \/>\nBEGIN<br \/>\n EXECUTE 'CREATE TABLE import' || 'ant_table (id INT)';<br \/>\nEND $$;<\/p>\n<p>Paistab, et huvitava tabeli leidmiseks v\u00f5ib osutuda vajalikuks teatud koodi tundmine, kui tabelid luuakse d\u00fcnaamiliselt.<\/p>\n<p>See ei ole ideaalne, kuna oleks soovitav lihtsalt otsida tabeli nime j\u00e4rgi.<\/p>\n<p>Siin tuleb kasuks pgAudit.<\/p>\n<p>Sama sisendi jaoks annab see logis j\u00e4rgmise v\u00e4ljundi:<\/p>\n<p>AUDIT: SESSION,33,1,FUNCTION,DO,,,'DO $$<br \/>\nBEGIN<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>Registreeritakse mitte ainult DO plokk, vaid ka t\u00e4ielik CREATE TABLE tekst koos toimingu t\u00fc\u00fcbiga, objekti t\u00fc\u00fcbiga ja t\u00e4ieliku nimega, mis lihtsustab otsingut.<\/p>\n<p>SELECT ja DML toimingute logimise puhul saab pgAudit olla seadistatud registreerima eraldi kirje iga suhete kohta, millele viidatakse toimingus.<\/p>\n<p>S\u00fcntaktilist anal\u00fc\u00fcsi pole vaja, et leida k\u00f5ik toimingud, mis puudutavad konkreetset tabelit (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pgaudit\/pgaudit\/blob\/master\/README.md\">*<\/a><\/noindex>)\u00bb.<\/p>\n<h3>Kuidas see m\u00f5jutab andmebaasi j\u00f5udlust?<\/h3>\n<p>\nTehkem teste t\u00e4is auditi aktiviseerimisega ja vaatame, mis juhtub PostgreSQL tegevusega. L\u00fclitame sisse maksimaalse DB logimise k\u00f5igi parameetrite jaoks.<\/p>\n<p>Konfiguratsioonifailis ei muuda me peaaegu midagi, kuid oluline on, et l\u00fclitame sisse debug5 re\u017eiimi, et saada maksimaalselt teavet.<\/p>\n<p>postgresql.conf<\/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>\nPostgreSQL andmed 1 CPU, 2.8 GHz, 2 GB RAM, 40 GB HDD kohta teeme kolm koormustesti, kasutades k\u00e4sku:<\/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>Testimise tulemused:<\/strong><\/p>\n<p><strong>Ilma logimiseta<\/strong><br \/>\n<strong>Logimisega<\/strong><\/p>\n<p>Kokkuv\u00f5tte t\u00e4itmise aeg DBs<br \/>\n43,74 s<br \/>\n53,23 s<\/p>\n<p>RAM<br \/>\n24%<br \/>\n40%<\/p>\n<p>CPU<br \/>\n72%<br \/>\n91%<\/p>\n<p><strong>Test 1 (50 \u00fchendust)<\/strong><\/p>\n<p>Tehingute arv 10 minuti jooksul<br \/>\n74169<br \/>\n32445<\/p>\n<p>Tehingud\/s<br \/>\n123<br \/>\n54<\/p>\n<p>Keskmine latentsus<br \/>\n405 ms<br \/>\n925 ms<\/p>\n<p><strong>Test 2 (150 \u00fchendust 100 v\u00f5imalikust)<\/strong><\/p>\n<p>Tehingute arv 10 minuti jooksul<br \/>\n81727<br \/>\n31429<\/p>\n<p>Tehingud\/s<br \/>\n136<br \/>\n52<\/p>\n<p>Keskmine latentsus<br \/>\n550 ms<br \/>\n1432 ms<\/p>\n<p><strong>Suuruste kohta<\/strong><\/p>\n<p>DB suurus<br \/>\n2251 MB<br \/>\n2262 MB<\/p>\n<p>DB logide suurus<br \/>\n0 MB<br \/>\n4587 MB<\/p>\n<p>\nKokku: t\u00e4ielik audit ei ole eriti hea. Auditist saadav teave on mahult v\u00f5rdne andmetega, mis on andmebaasis, v\u00f5i isegi suurem. Selline logimise maht, mis genereeritakse andmebasest t\u00f6\u00f6tades, on tavaline probleem tootmises.<\/p>\n<p>Vaatame teisi parameetreid:<\/p>\n<ul>\n<li>Kiirus ei muutu oluliselt: ilma logimiseta \u2014 43,74 s, logimisega \u2014 53,23 s.<\/li>\n<li>M\u00e4luse ja CPU j\u00f5udlus langeb, kuna tuleb luua auditifail. See on samuti silmatorkav tootmises.<\/li>\n<\/ul>\n<p>\n\u00dchenduste arvu suurenedes on loogiliselt, et n\u00e4itajad veidi halvenevad.<\/p>\n<p>Korporatsioonides on audit veelgi keerulisem:<\/p>\n<ul>\n<li>andmeid on palju;<\/li>\n<li>audit on vajalik mitte ainult syslog kaudu SIEM-is, vaid ka failides: juhuks, kui syslogiga juhtub midagi, peab samas asuma fail, kuhu andmed salvestatakse;<\/li>\n<li>auditi jaoks on vajalik eraldi riiul, et mitte kannatada I\/O ketaste osas, kuna see v\u00f5tab palju ruumi;<\/li>\n<li>on juhtumeid, kus IT t\u00f6\u00f6tajatel on k\u00f5ikjal vajalikud GOST-id, nad n\u00f5uavad riigi identifitseerimist.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Ligip\u00e4\u00e4su piiramine andmetele<\/h2>\n<p>\nVaatame tehnoloogiaid, mida kasutatakse andmete ja nendele juurdep\u00e4\u00e4su kaitsmiseks \u00e4riklassi andmebaasides ning avatud l\u00e4htekoodiga lahendustes.<\/p>\n<p>Mida \u00fcldiselt kasutada:<\/p>\n<ol>\n<li>Kr\u00fcpteerimine ja funktsioonide ja protseduuride obfuskatsioon (Wrapping) \u2014 need on eraldi t\u00f6\u00f6riistad ja utiliidid, mis muudavad loetava koodi loetamatuks. T\u00f5si, hiljem ei saa seda muuta ega tagasi refaktoreerida. Selline l\u00e4henemine on m\u00f5nikord vajalik v\u00e4hemalt andmebaasi tasemel \u2014 litsentsi piirangute v\u00f5i autoriseerimise loogika kr\u00fcpteeritakse t\u00e4pselt protseduuride ja funktsioonide tasemel.<\/li>\n<li>Ridade n\u00e4htavuse andmete j\u00e4rgi (RLS) t\u00e4hendab, et erinevad kasutajad n\u00e4evad \u00fchte tabelit, kuid erinevat ridade koosseisu, st kellelegi ei ole teatud andmed tasemel ridade n\u00e4itamine lubatud.<\/li>\n<li>Andmete redigeerimine (Masking) t\u00e4hendab, et tabeli \u00fches veerus n\u00e4evad kasutajad kas andmeid v\u00f5i ainult t\u00e4rne, st teatud kasutajate jaoks on teave suletud. Tehnoloogia m\u00e4\u00e4rab, millist teavet kuvada vastavalt juurdep\u00e4\u00e4su tasemele.<\/li>\n<li>Juurdep\u00e4\u00e4su piiramine Security DBA\/Application DBA\/DBA \u2014 see r\u00e4\u00e4kib pigem juurdep\u00e4\u00e4su piiramisest enda DBMS-ile, st infoturbe t\u00f6\u00f6tajaid saab eristada andmebaasi administraatoritest ja rakenduse administraatoritest. Open source'is on selliseid tehnoloogiaid v\u00e4he, kuid kommerts DBMS-des on neid piisavalt. Need on vajalikud, kui palju kasutajaid saavad juurdep\u00e4\u00e4su serveritele.<\/li>\n<li>Failide juurdep\u00e4\u00e4su piiramine failis\u00fcsteemi tasemel. Saame m\u00e4\u00e4rata \u00f5igusi ja juurdep\u00e4\u00e4su \u00f5igusi kataloogidele, et iga administraator saaks juurde ainult vajalikule teabele.<\/li>\n<li>Mandaatne juurdep\u00e4\u00e4s ja m\u00e4luhaldus \u2014 neid tehnoloogiaid rakendatakse harva.<\/li>\n<li>L\u00f5pust l\u00f5puni kr\u00fcptimine DBMS-is \u2014 see on kliendipoolselt kr\u00fcptimine, kus v\u00f5tmehaldus toimub serveripoolsel k\u00fcljel.<\/li>\n<li>Andmete kr\u00fcptimine. N\u00e4iteks veeru kr\u00fcptimine \u2014 kui kasutate mehhanismi, mis kr\u00fcptib eraldi andmeveeru.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Kuidas see m\u00f5jutab DBMS-i j\u00f5udlust?<\/h3>\n<p>\nVaadake PostgreSQL-i veeru kr\u00fcptimise n\u00e4itel. Seal on moodul pgcrypto, mis v\u00f5imaldab salvestada valitud v\u00e4ljad kr\u00fcptitud kujul. See on kasulik, kui v\u00e4\u00e4rtus esindavad ainult teatud andmed. Kr\u00fcptitud v\u00e4li lugemiseks edastab klient dekr\u00fcpteerimise v\u00f5tme, server teeb andmed lahti ja v\u00e4ljastab need kliendile. Ilma v\u00f5tmeta ei saa keegi teie andmetega midagi teha.<\/p>\n<p><strong>Teeme testi pgcrypto abil.<\/strong>. Loome tabeli, kus on kr\u00fcptitud andmed ja tavalised andmed. Allpool on k\u00e4sud tabelite loomiseks, esimene k\u00e4sk on kasulik \u2014 haiguse loomiseks ja DBMS-i registreerimiseks:<\/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>\nJ\u00e4tkame proovimist, et teha igast tabelist andmete valik ja vaatame t\u00e4itmise ajad.<\/p>\n<p><strong>Tabeli valik ilma kr\u00fcptimise funktsioonita<\/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>\nTaimer on k\u00e4ivitatud.<\/p>\n<p>\u00a0\u00a0id | text1 | text2<br \/>\n\u2014\u2014+\u2014\u2014-+\u2014\u2014\u2014-<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 rida)<\/p>\n<p>Aeg: 1,386 ms<\/p>\n<p><strong>Tabeli valik kr\u00fcptimise funktsiooniga:<\/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>\nTaimer on k\u00e4ivitatud.<\/p>\n<p>\u00a0\u00a0id | decrypt | decrypt<br \/>\n\u2014\u2014+\u2014\u2014\u2014-\u2014\u2014\u2014-<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 rida)<\/p>\n<p>Aeg: 50,203 ms<\/p>\n<p><strong>Testimise tulemused<\/strong>:<\/p>\n<p>\u00a0<br \/>\n<strong>Ilma kr\u00fcptimiseta<\/strong><br \/>\n<strong>Pgcrypto (dekr\u00fcpteerimine)<\/strong><\/p>\n<p>Valik 1000 rida<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>\nKr\u00fcptimine m\u00f5jutab oluliselt tootlikkust. On n\u00e4ha, et aeg on suurenenud, kuna kr\u00fcpteeritud andmete dekr\u00fcpteerimise operatsioonid (ja dekr\u00fcpteerimine on tavaliselt veel ka teie loogikas) n\u00f5uavad m\u00e4rkimisv\u00e4\u00e4rseid ressursse. See t\u00e4hendab, et idee kr\u00fcptida k\u00f5ik veerud, mis sisaldavad andmeid, on seotud tootlikkuse v\u00e4henemisega.<\/p>\n<p>Samas ei ole kr\u00fcptimine h\u00f5bedane kuul, mis lahendab k\u00f5ik probleemid. Dekr\u00fcpteeritud andmed ja dekr\u00fcpteerimise v\u00f5ti asuvad dekr\u00fcpteerimise ja andmete edastamise protsessis serveris. Seet\u00f5ttu v\u00f5ivad v\u00f5tmed sattuda k\u00e4tte kellelegi, kellel on juurdep\u00e4\u00e4s andmebaasi serverile, n\u00e4iteks s\u00fcsteemiadministraatorile.<\/p>\n<p>Kui kogu veeru jaoks on k\u00f5igile kasutajatele \u00fcks v\u00f5tme (isegi kui see ei ole k\u00f5igi, vaid piiratud hulgale klientidele), pole see alati hea ja \u00f5ige. Just seep\u00e4rast hakati tegema l\u00f5pp-l\u00f5puni kr\u00fcptimist, andmebaasides hakati kaaluma andmete kr\u00fcptimise variante kliendi ja serveri poolel, ilmusid need v\u00f5tmehoidla - eraldi tooted, mis pakuvad v\u00f5tmete haldamist andmebaasi poolel.<\/p>\n<p><img decoding=\"async\" alt=\"Turvalisus ja andmebaasid: mida meeles pidada kaitsevahendeid valides\" 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>N\u00e4ide sellisest kr\u00fcptimisest MongoDB-s<\/i><\/a><\/noindex><\/p>\n<h2>Turvavahendid kaubanduslikes ja avatud l\u00e4htekoodiga andmebaasides<\/h2>\n<p><\/p>\n<p><strong>Funktsioonid<\/strong><br \/>\n<strong>T\u00fc\u00fcp<\/strong><br \/>\n<strong>Paroolipoliitika<\/strong><br \/>\n<strong>Audit<\/strong><br \/>\n<strong>Protseduuride ja funktsioonide l\u00e4htekoodi kaitse<\/strong><br \/>\n<strong>RLS<\/strong><br \/>\n<strong>Kr\u00fcptimine<\/strong><\/p>\n<p><strong>Oracle<\/strong><br \/>\nKaubanduslik<br \/>\n+<br \/>\n+<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p><strong>MsSql<\/strong><br \/>\nKaubanduslik<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 \/>\nKaubanduslik<br \/>\n+<br \/>\n+<br \/>\n+<br \/>\n+<br \/>\nlaiendused<\/p>\n<p><strong>PostgreSQL<\/strong><br \/>\nTasuta<br \/>\nlaiendused<br \/>\nlaiendused<br \/>\n\u2014<br \/>\n+<br \/>\nlaiendused<\/p>\n<p><strong>MongoDb<\/strong><br \/>\nTasuta<br \/>\n\u2014<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<br \/>\nSaadaval ainult MongoDB Enterprise'is<\/p>\n<p>\nTabel ei ole sugugi t\u00e4ielik, kuid olukord on selline: kaubanduslikes toodetes on turvalisuse \u00fclesandeid juba ammu lahendatud, avatud l\u00e4htekoodiga, tavaliselt kasutatakse turvalisuse jaoks mingeid lisandeid, paljusid funktsioone j\u00e4\u00e4b puudu, m\u00f5nikord tuleb midagi lisaks kirjutada. N\u00e4iteks paroolipoliitikad - PostgreSQL-is on palju erinevaid laiendusi.<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>), mis tagavad paroolipoliitikad, kuid minu arvates ei kata \u00fckski neist k\u00f5ikide kodumaiste ettev\u00f5tete vajadusi.<\/p>\n<p><strong>Mida teha, kui vajalikku ei leia kuskilt?<\/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>Siis on v\u00f5imalik kasutada kolmanda osapoole lahendusi, mis t\u00f6\u00f6tavad erinevate andmebaasidega, n\u00e4iteks \u201eKripto DB\u201d v\u00f5i \u201eGarda DB\u201d. Kui r\u00e4\u00e4kida kodumaistest lahendustest, siis seal teavad nad GOSTide kohta paremini kui avatud l\u00e4htekoodiga.<\/p>\n<p>Teine variant on kirjutada ise, mida on vaja, rakendada andmete juurdep\u00e4\u00e4su ja kr\u00fcpteerimise protseduure rakenduse tasemel. T\u00f5si, GOSTiga on keerulisem. Kuid \u00fcldiselt - saate andmed peita, nagu vaja, salvestada andmebaasi, p\u00e4rast seda v\u00e4lja v\u00f5tta ja \u00f5igesti dekr\u00fcpteerida, otse rakenduse tasemel. Samuti m\u00f5elge kohe, kuidas te neid algoritme rakenduses kaitsete. Meie arvates tuleks see teha andmebaasi tasemel, kuna nii t\u00f6\u00f6tab see kiiremini.<\/p>\n<p>See ettekande kuulutati esmakordselt <noindex><a rel=\"nofollow\" href=\"https:\/\/corp.mail.ru\/ru\/press\/events\/databases-1\/\">@Andmebaasid Meetup<\/a><\/noindex> Mail.ru Cloud Solutions poolt. N\u00e4e<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\"> video <\/a><\/noindex>teisi ettekandeid ja j\u00e4lgi \u00fcrituste teadaandeid Telegramis <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/k8s_mail\">Kubernetesest Mail.ru Groupis<\/a><\/noindex>.<\/p>\n<p><strong>Mida veel selle kohta lugeda<\/strong>:<\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/472694\/\">Rohkem kui Ceph: MCS pilveplokkide salvestus<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/blog\/kakuyu-bazu-dannyh-vybrat-dlya-proekta-chtoby-ne-oshibitsya\">Kuidas valida projektile andmebaasi, et mitte uuesti valida?<\/a><\/noindex>.<\/li>\n<\/ol>\n<p>Allikas: <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.1.1 - 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\/et\/blog\/administrirovanie\/bezopasnost-i-subd-o-chyom-nado-pomnit-podbiraya-sredstva-zashhity\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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\udd47Turvalisus ja andmebaasid: mida peab meeles pidama kaitsevahendite valimisel | ProHoster","description":"Minu nimi on Denis.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/bezopasnost-i-subd-o-chyom-nado-pomnit-podbiraya-sredstva-zashhity","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/81884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=81884"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/81884\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/81885"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=81884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=81884"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=81884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}