{"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\/sv\/blog\/administrirovanie\/bezopasnost-i-subd-o-chyom-nado-pomnit-podbiraya-sredstva-zashhity","title":{"rendered":"S\u00e4kerhet och DBMS: vad man b\u00f6r t\u00e4nka p\u00e5 vid val av skyddsmekanismer","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1><img decoding=\"async\" alt=\"S\u00e4kerhet och DBMS: vad man b\u00f6r t\u00e4nka p\u00e5 vid val av skyddsmekanismer\" src=\"\/wp-content\/uploads\/2020\/05\/ac49253838e36336af127d71394139d8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/h1>\n<p>\nJag heter Denis Rozhkov, jag \u00e4r ansvarig f\u00f6r mjukvaruutveckling p\u00e5 f\u00f6retaget \"Gazinformservice\", i produktteamet. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gaz-is.ru\/produkty\/inform-sistemy\/subd-jatoba.html\">Jatoba<\/a><\/noindex>. Lagstiftning och f\u00f6retagsnormer st\u00e4ller vissa krav p\u00e5 s\u00e4kerheten vid datalagring. Ingen vill att tredje part ska f\u00e5 tillg\u00e5ng till k\u00e4nslig information, d\u00e4rf\u00f6r \u00e4r f\u00f6ljande fr\u00e5gor viktiga f\u00f6r varje projekt: identifiering och autentisering, hantering av \u00e5tkomst till data, s\u00e4kerst\u00e4llande av informationens integritet i systemet, registrering av s\u00e4kerhetsh\u00e4ndelser. D\u00e4rf\u00f6r vill jag ber\u00e4tta om n\u00e5gra intressanta aspekter av databasens s\u00e4kerhet. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nArtikeln \u00e4r baserad p\u00e5 ett f\u00f6redrag vid <noindex><a rel=\"nofollow\" href=\"https:\/\/corp.mail.ru\/ru\/press\/events\/databases-1\/\">@Databases Meetup,<\/a><\/noindex> organiserat <noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/\">Mail.ru Cloud Solutions<\/a><\/noindex>. Om du inte vill l\u00e4sa kan du titta:<\/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=\"Spela video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nArtikeln kommer att best\u00e5 av tre delar:<\/p>\n<ul>\n<li>Hur man skyddar anslutningar.<\/li>\n<li>Vad \u00e4r aktivitetsgranskning och hur registrerar man vad som h\u00e4nder med databasen och anslutningen till den.<\/li>\n<li>Hur man skyddar data i sj\u00e4lva databasen och vilka teknologier som finns f\u00f6r detta.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"S\u00e4kerhet och DBMS: vad man b\u00f6r t\u00e4nka p\u00e5 vid val av skyddsmekanismer\" src=\"\/wp-content\/uploads\/2020\/05\/fbdca7f4a925b9ceb78de06c6e245b23.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tre aspekter av databasens s\u00e4kerhet: skydd av anslutningar, aktivitetsgranskning och dataskydd.<\/i><\/p>\n<h2>Skydd av anslutningar<\/h2>\n<p>\nMan kan ansluta till databasen antingen direkt eller indirekt via webbapplikationer. Vanligtvis interagerar en aff\u00e4rsanv\u00e4ndare, det vill s\u00e4ga en person som arbetar med databas, inte direkt med den.<\/p>\n<p>Innan vi pratar om hur man skyddar anslutningar, m\u00e5ste vi svara p\u00e5 viktiga fr\u00e5gor som avg\u00f6r hur s\u00e4kerhets\u00e5tg\u00e4rderna kommer att utformas:<\/p>\n<ul>\n<li>\u00e4r en aff\u00e4rsanv\u00e4ndare motsvarande en anv\u00e4ndare i databasen;<\/li>\n<li>ges \u00e5tkomst till databasen endast genom ett API som du kontrollerar, eller finns det direkt \u00e5tkomst till tabeller;<\/li>\n<li>\u00e4r databasen avgr\u00e4nsad till ett separat skyddat segment, vem och hur interagerar med den;<\/li>\n<li>anv\u00e4nds det poolning\/proxy och mellanliggande lager som kan \u00e4ndra information om hur anslutningen \u00e4r uppbyggd och vem som anv\u00e4nder databasen.<\/li>\n<\/ul>\n<p>\nL\u00e5t oss nu titta p\u00e5 vilka verktyg som kan anv\u00e4ndas f\u00f6r att skydda anslutningarna:<\/p>\n<ol>\n<li>Anv\u00e4nd l\u00f6sningar av typen databasbrandv\u00e4gg. Ett extra skyddslag kan \u00e5tminstone \u00f6ka transparensen f\u00f6r vad som h\u00e4nder i databasen, och som h\u00f6gst kan du s\u00e4kerst\u00e4lla ett extra skydd f\u00f6r data.<\/li>\n<li>Anv\u00e4nd l\u00f6senordspolicyer. Deras till\u00e4mpning beror p\u00e5 hur din arkitektur \u00e4r uppbyggd. I vilket fall som helst, enbart ett l\u00f6senord i konfigurationsfilen f\u00f6r webbtj\u00e4nsten som ansluter till databas hanteringssystemet (DBMS) \u00e4r otillr\u00e4ckligt f\u00f6r skydd. Det finns flera verktyg f\u00f6r DBMS som g\u00f6r det m\u00f6jligt att kontrollera vilka anv\u00e4ndare och l\u00f6senord som beh\u00f6ver uppdateras.\n<p>L\u00e4s mer om funktionerna f\u00f6r utv\u00e4rdering av anv\u00e4ndare. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.cloud.oracle.com\/en-us\/iaas\/data-safe\/doc\/user-assessment-reports.html\">h\u00e4r<\/a><\/noindex>, \u00e4ven hur man f\u00e5r information om MS SQL Vulnerability Assessment. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/security\/sql-vulnerability-assessment?view=sql-server-ver15\">). Ett typiskt exempel p\u00e5 anv\u00e4ndning:<\/a><\/noindex>.\u00a0<\/li>\n<li>Berika sessionens kontext med n\u00f6dv\u00e4ndig information. Om sessionen \u00e4r ogenomskinlig, kan du inte f\u00f6rst\u00e5 vem som arbetar inom dess ram i DBMS. Du kan komplettera informationen om vem som g\u00f6r vad och varf\u00f6r inom ramen f\u00f6r den genomf\u00f6rda operationen. Denna information kan ses i revisionen.<\/li>\n<li>Konfigurera SSL om du inte har n\u00e4tverksavgr\u00e4nsning mellan DBMS och slutanv\u00e4ndarna; den \u00e4r inte i ett separat VLAN. I s\u00e5dana fall \u00e4r det avg\u00f6rande att skydda kanalen mellan konsumenten och sj\u00e4lva DBMS. Skyddsverktyg finns \u00e4ven bland open source-l\u00f6sningar.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Hur p\u00e5verkar detta DBMS-prestandan?<\/h3>\n<p>\nL\u00e5t oss titta p\u00e5 hur SSL p\u00e5verkar CPU-belastningen, \u00f6kar latensen och minskar TPS i PostgreSQL. Kommer det att g\u00e5 f\u00f6r mycket resurser om det aktiveras?<\/p>\n<p>Vi belastar PostgreSQL med pgbench \u2014 ett enkelt program f\u00f6r att k\u00f6ra prestandatest. Det k\u00f6r en sekvens av kommandon upprepade g\u00e5nger, eventuellt i parallella databas-sessioner, och ber\u00e4knar det genomsnittliga transaktionshastigheten.<\/p>\n<p><strong>Test 1 utan SSL och med anv\u00e4ndning av SSL.<\/strong> \u2014 anslutningen uppr\u00e4ttas vid varje transaktion:<\/p>\n<pre><code class=\"plaintext\">pgbench.exe --connect -c 10 -t 5000 &quot;host=192.168.220.129 dbname=taskdb user=postgres sslmode=require\u00a0\nsslrootcert=rootCA.crt sslcert=client.crt sslkey=client.key&quot;<\/code><\/pre>\n<p>\n<strong>vs<\/strong><\/p>\n<pre><code class=\"plaintext\">pgbench.exe --connect -c 10 -t 5000 &quot;host=192.168.220.129 dbname=taskdb user=postgres&quot;<\/code><\/pre>\n<p>\n<strong>Test 2 utan SSL och med anv\u00e4ndning av SSL.<\/strong> \u2014 alla transaktioner utf\u00f6rs i en anslutning:<\/p>\n<pre><code class=\"plaintext\">pgbench.exe -c 10 -t 5000 &quot;host=192.168.220.129 dbname=taskdb user=postgres sslmode=require\nsslrootcert=rootCA.crt sslcert=client.crt sslkey=client.key&quot;<\/code><\/pre>\n<p>\n<strong>vs<\/strong><\/p>\n<pre><code class=\"plaintext\">pgbench.exe -c 10 -t 5000 &quot;host=192.168.220.129 dbname=taskdb user=postgres&quot;<\/code><\/pre>\n<p>\n<strong>\u00d6vriga inst\u00e4llningar<\/strong>:<\/p>\n<pre><code class=\"plaintext\">skaleringsfaktor: 1\nfr\u00e5gemode: enkel\nantal kunder: 10\nantal tr\u00e5dar: 1\nantal transaktioner per kund: 5000\nantal transaktioner som faktiskt behandlades: 50000\/50000<\/code><\/pre>\n<p>\n<strong>Testresultat<\/strong>:<\/p>\n<p>\u00a0<br \/>\n<strong>INGA SSL<\/strong><br \/>\n<strong>SSL<\/strong><\/p>\n<p><strong>En anslutning uppr\u00e4ttas vid varje transaktion.<\/strong><\/p>\n<p>latens genomsnitt<br \/>\n171.915 ms<br \/>\n187.695 ms<\/p>\n<p>tps inklusive anslutningar som etableras<br \/>\n58.168112<br \/>\n53.278062<\/p>\n<p>tps utan att inkludera anslutningar som etableras<br \/>\n64.084546<br \/>\n58.725846<\/p>\n<p>CPU<br \/>\n24%<br \/>\n28%<\/p>\n<p><strong>Alla transaktioner utf\u00f6rs i en anslutning.<\/strong><\/p>\n<p>latens genomsnitt<br \/>\n6.722 ms<br \/>\n6.342 ms<\/p>\n<p>tps inklusive anslutningar som etableras<br \/>\n1587.657278<br \/>\n1576.792883<\/p>\n<p>tps utan att inkludera anslutningar som etableras<br \/>\n1588.380574<br \/>\n1577.694766<\/p>\n<p>CPU<br \/>\n17%<br \/>\n21%<\/p>\n<p>\nVid sm\u00e5 belastningar \u00e4r p\u00e5verkan av SSL j\u00e4mf\u00f6rbar med m\u00e4tfel. Om m\u00e4ngden \u00f6verf\u00f6rda data \u00e4r mycket stor kan situationen vara annorlunda. Om vi etablerar en anslutning f\u00f6r varje transaktion (vilket s\u00e4llan sker, vanligtvis delas anslutningen mellan anv\u00e4ndare), f\u00e5r du ett stort antal anslutningar\/diskonnekter, och p\u00e5verkan kan vara n\u00e5got st\u00f6rre. Det vill s\u00e4ga att det finns risker f\u00f6r prestandaf\u00f6rlust, men skillnaden \u00e4r inte s\u00e5 stor att skyddet b\u00f6r avst\u00e5s fr\u00e5n.<\/p>\n<p>Observera att det finns en stor skillnad n\u00e4r man j\u00e4mf\u00f6r driftsl\u00e4gen: inom en session arbetar du eller olika. Det \u00e4r f\u00f6rst\u00e5eligt: resurser anv\u00e4nds f\u00f6r att skapa varje anslutning.<\/p>\n<p>Vi hade ett fall d\u00e4r vi kopplade samman Zabbix i trust-l\u00e4ge, vilket inneb\u00e4r att md5 inte kontrollerades, det fanns ingen anledning till autentisering. D\u00e4refter bad kunden att aktivera md5-autentisering. Detta gav en stor belastning p\u00e5 CPU:n, prestandan sj\u00f6nk. Vi b\u00f6rjade leta efter s\u00e4tt att optimera. En av de m\u00f6jliga l\u00f6sningarna p\u00e5 problemet \u00e4r att implementera n\u00e4tverksbegr\u00e4nsningar, skapa separata VLAN f\u00f6r DBMS, l\u00e4gga till inst\u00e4llningar f\u00f6r att f\u00f6rst\u00e5 vem som ansluter och varifr\u00e5n och ta bort autentiseringen. Man kan ocks\u00e5 optimera autentiseringsinst\u00e4llningar f\u00f6r att minska kostnaderna vid aktivering av autentisering, men generellt p\u00e5verkar anv\u00e4ndningen av olika autentiseringsmetoder prestandan och dessa faktorer m\u00e5ste beaktas vid designen av serverkapacitet (h\u00e5rdvara) f\u00f6r DBMS.<\/p>\n<p>Slutsats: i en rad l\u00f6sningar kan \u00e4ven sm\u00e5 detaljer kring autentisering f\u00e5 stor inverkan p\u00e5 projektet, och det \u00e4r olyckligt n\u00e4r detta f\u00f6rst blir tydligt vid implementering i produktion.<\/p>\n<h2>Aktivitetens granskning<\/h2>\n<p>\nGranskning beh\u00f6ver inte vara begr\u00e4nsad till DBMS. Granskning \u00e4r att erh\u00e5lla information om vad som h\u00e4nder p\u00e5 olika segment. Detta kan inkluderar b\u00e5de en databasbrandv\u00e4gg och operativsystemet som DBMS byggs p\u00e5.<\/p>\n<p>I kommersiella DBMS av Enterprise-niv\u00e5 fungerar granskning bra, men i \u00f6ppen k\u00e4llkod \u00e4r det inte alltid s\u00e5. H\u00e4r \u00e4r vad som finns i PostgreSQL:<\/p>\n<ul>\n<li>default log \u2014 inbyggd loggning;<\/li>\n<li>extensions: pgaudit \u2014 om du beh\u00f6ver mer \u00e4n standardloggningen kan du anv\u00e4nda separata inst\u00e4llningar som l\u00f6ser en del uppgifter.<\/li>\n<\/ul>\n<p>\n<b>Till\u00e4gg till rapporten i videon:<\/b><\/p>\n<p>Den grundl\u00e4ggande registreringen av operat\u00f6rer kan s\u00e4kerst\u00e4llas med hj\u00e4lp av ett standardloggningsverktyg med log_statement = all.<\/p>\n<p>Detta \u00e4r acceptabelt f\u00f6r \u00f6vervakning och andra anv\u00e4ndningsomr\u00e5den, men ger inte den detaljniv\u00e5 som vanligtvis kr\u00e4vs f\u00f6r revision.<\/p>\n<p>Det r\u00e4cker inte med att ha en lista \u00f6ver alla operationer som utf\u00f6rs med databasen.<\/p>\n<p>Det m\u00e5ste ocks\u00e5 finnas m\u00f6jlighet att hitta specifika p\u00e5st\u00e5enden som \u00e4r av intresse f\u00f6r revisorn.<\/p>\n<p>Standardloggningsverktyget visar vad anv\u00e4ndaren har beg\u00e4rt, medan pgAudit fokuserar p\u00e5 detaljerna kring vad som h\u00e4nde n\u00e4r databasen utf\u00f6rde beg\u00e4ran.<\/p>\n<p>Till exempel kan revisorn vilja f\u00f6rs\u00e4kra sig om att en specifik tabell skapades under det dokumenterade underh\u00e5llsf\u00f6nstret.<\/p>\n<p>Det kan verka vara en enkel uppgift f\u00f6r grundl\u00e4ggande revision och grep, men vad h\u00e4nder om du p\u00e5tr\u00e4ffar n\u00e5got som detta (medvetet otydliga) exempel:<\/p>\n<p>DO $$<br \/>\nBEGIN<br \/>\n EXECUTE &#8216;CREATE TABLE import&#8217; || &#8216;ant_table (id INT)&#8217;;<br \/>\nEND $$;<\/p>\n<p>Standardloggningen ger dig detta:<\/p>\n<p>LOG: statement: DO $$<br \/>\nBEGIN<br \/>\n EXECUTE &#8216;CREATE TABLE import&#8217; || &#8216;ant_table (id INT)&#8217;;<br \/>\nEND $$;<\/p>\n<p>Det verkar som om viss kodkunskap kan beh\u00f6vas f\u00f6r att hitta den tabell som \u00e4r av intresse, n\u00e4r tabeller skapas dynamiskt.<\/p>\n<p>Detta \u00e4r inte perfekt, eftersom det skulle vara att f\u00f6redra att bara s\u00f6ka p\u00e5 tabellnamn.<\/p>\n<p>H\u00e4r kommer pgAudit att vara anv\u00e4ndbart.<\/p>\n<p>F\u00f6r samma inmatning kommer det att ge denna loggutg\u00e5ng:<\/p>\n<p>AUDIT: SESSION,33,1,FUNCTION,DO,,,\u00abDO $$<br \/>\nBEGIN<br \/>\n EXECUTE &#8216;CREATE TABLE import&#8217; || &#8216;ant_table (id INT)&#8217;;<br \/>\nEND $$;&quot;<br \/>\nAUDIT: SESSION,33,2,DDL,CREATE TABLE,TABLE,public.important_table,CREATE TABLE important_table (id INT)<\/p>\n<p>Inte bara blocket DO registreras, utan ocks\u00e5 den fullst\u00e4ndiga texten f\u00f6r CREATE TABLE med typ av operation, objekttyp och fullst\u00e4ndigt namn, vilket g\u00f6r det l\u00e4ttare att s\u00f6ka.<\/p>\n<p>Vid registrering av SELECT- och DML-operationer kan pgAudit konfigureras f\u00f6r att registrera en separat post f\u00f6r varje relation som refereras i operationen.<\/p>\n<p>Ingen syntaktisk analys kr\u00e4vs f\u00f6r att hitta alla operationer som r\u00f6r en specifik tabell (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pgaudit\/pgaudit\/blob\/master\/README.md\">*<\/a><\/noindex>)\u00bb.<\/p>\n<h3>Hur p\u00e5verkar detta DBMS-prestandan?<\/h3>\n<p>\nL\u00e5t oss g\u00f6ra tester med fullst\u00e4ndig revision aktiverad och se hur det p\u00e5verkar prestandan i PostgreSQL. Vi aktiverar maximal databasloggning f\u00f6r alla parametrar.<\/p>\n<p>Vi \u00e4ndrar n\u00e4stan ingenting i konfigurationsfilen, det viktiga \u00e4r att vi aktiverar debug5-l\u00e4get f\u00f6r att f\u00e5 maximal information.<\/p>\n<p>postgresql.conf<\/p>\n<p>log_destination = &#8216;stderr&#8217;<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 = &#8216;Europe\/Moscow&#8217;<\/p>\n<p>\nP\u00e5 PostgreSQL DB med parametrarna 1 CPU, 2,8 GHz, 2 GB RAM, 40 GB HDD genomf\u00f6r vi tre belastningstester med kommandon:<\/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>Testresultat:<\/strong><\/p>\n<p><strong>Utan loggning<\/strong><br \/>\n<strong>Med loggning<\/strong><\/p>\n<p>Total tiden f\u00f6r att fylla databasen<br \/>\n43,74 sek<br \/>\n53,23 sek<\/p>\n<p>RAM<br \/>\n24%<br \/>\n40%<\/p>\n<p>CPU<br \/>\n72%<br \/>\n91%<\/p>\n<p><strong>Test 1 (50 anslutningar)<\/strong><\/p>\n<p>Antal transaktioner p\u00e5 10 minuter<br \/>\n74169<br \/>\n32445<\/p>\n<p>Transaktioner\/sek<br \/>\n123<br \/>\n54<\/p>\n<p>Genomsnittlig f\u00f6rdr\u00f6jning<br \/>\n405 ms<br \/>\n925 ms<\/p>\n<p><strong>Test 2 (150 anslutningar av 100 m\u00f6jliga)<\/strong><\/p>\n<p>Antal transaktioner p\u00e5 10 minuter<br \/>\n81727<br \/>\n31429<\/p>\n<p>Transaktioner\/sek<br \/>\n136<br \/>\n52<\/p>\n<p>Genomsnittlig f\u00f6rdr\u00f6jning<br \/>\n550 ms<br \/>\n1432 ms<\/p>\n<p><strong>Om storlekar<\/strong><\/p>\n<p>Databasens storlek<br \/>\n2251 MB<br \/>\n2262 MB<\/p>\n<p>Loggarnas storlek<br \/>\n0 MB<br \/>\n4587 MB<\/p>\n<p>\nI slut\u00e4ndan: en fullst\u00e4ndig revision \u00e4r inte s\u00e5 bra. M\u00e4ngden data som genereras fr\u00e5n revisionen blir ungef\u00e4r lika stor som datan i sj\u00e4lva databasen, om inte mer. Den m\u00e4ngd loggning som genereras vid arbete med DBMS \u00e4r ett vanligt problem i produktion.<\/p>\n<p>L\u00e5t oss titta p\u00e5 andra parametrar:<\/p>\n<ul>\n<li>Hastigheten f\u00f6r\u00e4ndras inte mycket: utan loggning \u2014 43,74 sek, med loggning \u2014 53,23 sek.<\/li>\n<li>Prestandan f\u00f6r RAM och CPU kommer att sjunka, eftersom en fil med revision m\u00e5ste skapas. Detta \u00e4r ocks\u00e5 tydligt i produktionen.<\/li>\n<\/ul>\n<p>\nVid en \u00f6kning av antalet anslutningar kommer givetvis v\u00e4rdena att f\u00f6rs\u00e4mras n\u00e5got.<\/p>\n<p>I f\u00f6retag med revision \u00e4r det \u00e4nnu mer komplicerat:<\/p>\n<ul>\n<li>det finns mycket data;<\/li>\n<li>revision beh\u00f6vs inte bara via syslog i SIEM, utan ocks\u00e5 i filer: om n\u00e5got skulle h\u00e4nda med syslog, m\u00e5ste det finnas en fil n\u00e4ra databasen d\u00e4r uppgifterna sparas;<\/li>\n<li>f\u00f6r revision beh\u00f6vs en separat hylla f\u00f6r att inte \u00f6verbelasta I\/O p\u00e5 diskarna, eftersom den tar mycket plats;<\/li>\n<li>det kan h\u00e4nda att anst\u00e4llda inom IT-s\u00e4kerhet kr\u00e4ver standarder, de kr\u00e4ver giltig identifikation.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Begr\u00e4nsning av tillg\u00e5ngen till data<\/h2>\n<p>\nL\u00e5t oss se p\u00e5 teknologierna som anv\u00e4nds f\u00f6r att skydda data och begr\u00e4nsa \u00e5tkomst till dem i kommersiella DBMS och open source.<\/p>\n<p>Vad som generellt kan anv\u00e4ndas:<\/p>\n<ol>\n<li>Kryptering och obfuskering av procedurer och funktioner (Wrapping) \u2014 det vill s\u00e4ga specifika verktyg och hj\u00e4lpmedel som g\u00f6r l\u00e4sbar kod ol\u00e4slig. Tyv\u00e4rr kan den inte \u00e4ndras eller refaktoreras tillbaka. Denna metod beh\u00f6vs ibland \u00e5tminstone p\u00e5 DBMS-sidan \u2014 logiken f\u00f6r licensbegr\u00e4nsningar eller autentisering krypteras just p\u00e5 niv\u00e5erna f\u00f6r procedurer och funktioner.<\/li>\n<li>Begr\u00e4nsning av datavisibilitet per rad (RLS) inneb\u00e4r att olika anv\u00e4ndare ser en tabell, men med olika inneh\u00e5ll per rad, vilket betyder att vissa anv\u00e4ndare inte kan se viss information p\u00e5 radsniv\u00e5.<\/li>\n<li>Redigering av visade data (Masking) inneb\u00e4r att anv\u00e4ndare i en kolumn i tabellen antingen ser data eller bara stj\u00e4rnor, vilket inneb\u00e4r att viss information \u00e4r st\u00e4ngd f\u00f6r vissa anv\u00e4ndare. Tekniken avg\u00f6r vilken information som visas f\u00f6r vilken anv\u00e4ndare baserat p\u00e5 \u00e5tkomstniv\u00e5.<\/li>\n<li>\u00c5tkomstkontroll Security DBA\/Application DBA\/DBA handlar snarare om att begr\u00e4nsa \u00e5tkomst till sj\u00e4lva databashanteringssystemet, vilket betyder att s\u00e4kerhetspersonal kan \u00e5tskiljas fr\u00e5n databasadministrat\u00f6rer och applikationsadministrat\u00f6rer. Det finns f\u00e5 s\u00e5dana teknologier i open source, men det finns gott om dem i kommersiella databashanteringssystem. De \u00e4r n\u00f6dv\u00e4ndiga n\u00e4r m\u00e5nga anv\u00e4ndare har \u00e5tkomst till servrarna sj\u00e4lva.<\/li>\n<li>\u00c5tkomstbegr\u00e4nsning p\u00e5 filsystemsniv\u00e5. R\u00e4ttigheter och \u00e5tkomstr\u00e4ttigheter kan ges till kataloger s\u00e5 att varje administrat\u00f6r endast f\u00e5r \u00e5tkomst till n\u00f6dv\u00e4ndig data.<\/li>\n<li>Mandat\u00e5tkomst och minnesrensning \u00e4r teknologier som s\u00e4llan till\u00e4mpas.<\/li>\n<li>End-to-end-kryptering direkt i databashanteringssystemet inneb\u00e4r klientbaserad kryptering med nyckelhantering p\u00e5 serversidan.<\/li>\n<li>Kryptering av data. Till exempel kolumnkryptering \u2013 n\u00e4r du anv\u00e4nder en mekanism som krypterar enskilda kolumner i databasen.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Hur p\u00e5verkar detta prestandan hos databashanteringssystemet?<\/h3>\n<p>\nL\u00e5t oss titta p\u00e5 kolumnkryptering i PostgreSQL som exempel. Den har modulen pgcrypto, som g\u00f6r det m\u00f6jligt att lagra utvalda f\u00e4lt i krypterad form. Detta \u00e4r anv\u00e4ndbart n\u00e4r endast vissa data \u00e4r v\u00e4rdefulla. F\u00f6r att l\u00e4sa krypterade f\u00e4lt skickar klienten den avkrypterande nyckeln, servern avkrypterar data och skickar dem till klienten. Utan nyckeln kan ingen g\u00f6ra n\u00e5got med dina data.<\/p>\n<p><strong>Vi genomf\u00f6r ett test med pgcrypto.<\/strong>. Vi skapar en tabell med krypterade data och en med vanliga data. Nedan \u00e4r kommandon f\u00f6r att skapa tabeller, i den f\u00f6rsta raden finns ett anv\u00e4ndbart kommando - skapande av den aktuella extensionen med registrering av databashanteringssystemet:<\/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>\nL\u00e5t oss nu f\u00f6rs\u00f6ka g\u00f6ra dataval f\u00f6r varje tabell och titta p\u00e5 exekveringstiderna.<\/p>\n<p><strong>Dataval fr\u00e5n tabellen utan krypteringsfunktion<\/strong>:<\/p>\n<pre><code class=\"plaintext\">psql -c &quot;timing&quot; -c &quot;select * from t1 limit 1000;&quot; &quot;host=192.168.220.129 dbname=taskdb\nuser=postgres sslmode=disable&quot; &gt; 1.txt<\/code><\/pre>\n<p>\nTidtagarur aktiverat.<\/p>\n<p>\u00a0\u00a0id | text1 | text2<br \/>\n&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;-<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 rader)<\/p>\n<p>Tid: 1,386 ms<\/p>\n<p><strong>Dataval fr\u00e5n tabellen med krypteringsfunktion:<\/strong><\/p>\n<pre><code class=\"plaintext\">psql -c &quot;timing&quot; -c &quot;select id, decrypt(text1, 'key'::bytea, 'bf'),\ndecrypt(text2, 'key'::bytea, 'bf') from t2 limit 1000;&quot;\n&quot;host=192.168.220.129 dbname=taskdb user=postgres sslmode=disable&quot; &gt; 2.txt<\/code><\/pre>\n<p>\nTidtagarur aktiverat.<\/p>\n<p>\u00a0\u00a0id | decrypt | decrypt<br \/>\n&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;<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 rader)<\/p>\n<p>Tid: 50,203 ms<\/p>\n<p><strong>Testresultat<\/strong>:<\/p>\n<p>\u00a0<br \/>\n<strong>Utan kryptering<\/strong><br \/>\n<strong>Pgcrypto (decrypt)<\/strong><\/p>\n<p>Dataval 1000 rader<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>\nKryptering p\u00e5verkar prestandan avsev\u00e4rt. Det \u00e4r tydligt att tiden \u00f6kade eftersom avkrypteringsoperationer f\u00f6r krypterade data (och avkryptering \u00e4r vanligtvis ocks\u00e5 inb\u00e4ddad i din logik) kr\u00e4ver betydande resurser. Det vill s\u00e4ga, id\u00e9n att kryptera alla kolumner som inneh\u00e5ller data kan leda till prestandaneds\u00e4ttning.<\/p>\n<p>Samtidigt \u00e4r kryptering inte en silverkula som l\u00f6ser alla problem. De avkrypterade data och avkrypteringsnyckeln finns p\u00e5 servern under processen av avkryptering och data\u00f6verf\u00f6ring. D\u00e4rf\u00f6r kan nycklar bli avlyssnade av dem som har fullst\u00e4ndig \u00e5tkomst till databasservern, till exempel systemadministrat\u00f6rer.<\/p>\n<p>N\u00e4r en nyckel anv\u00e4nds f\u00f6r hela kolumnen f\u00f6r alla anv\u00e4ndare (\u00e4ven om det bara \u00e4r f\u00f6r en begr\u00e4nsad upps\u00e4ttning kunder), \u00e4r det inte alltid bra och korrekt. Det \u00e4r d\u00e4rf\u00f6r end-to-end-kryptering b\u00f6rjade implementeras, och alternativ f\u00f6r kryptering av data fr\u00e5n klientsidan och servern diskuterades inom databashanteringssystem, vilket ledde till framv\u00e4xten av key-vault-l\u00f6sningar \u2014 s\u00e4rskilda produkter som tillhandah\u00e5ller nyckelhantering p\u00e5 databashanteringssystemets sida.<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e4kerhet och DBMS: vad man b\u00f6r t\u00e4nka p\u00e5 vid val av skyddsmekanismer\" 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>Exempel p\u00e5 s\u00e5dan kryptering i MongoDB<\/i><\/a><\/noindex><\/p>\n<h2>S\u00e4kerhetsverktyg i kommersiella och open source databashanteringssystem<\/h2>\n<p><\/p>\n<p><strong>Funktioner<\/strong><br \/>\n<strong>Typ<\/strong><br \/>\n<strong>L\u00f6senordspolicy<\/strong><br \/>\n<strong>Revision<\/strong><br \/>\n<strong>Skydd av k\u00e4llkoden f\u00f6r procedurer och funktioner<\/strong><br \/>\n<strong>RLS<\/strong><br \/>\n<strong>Kryptering<\/strong><\/p>\n<p><strong>Oracle<\/strong><br \/>\nKommersiell<br \/>\n+<br \/>\n+<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p><strong>MsSql<\/strong><br \/>\nKommersiell<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 \/>\nKommersiell<br \/>\n+<br \/>\n+<br \/>\n+<br \/>\n+<br \/>\ntill\u00e4gg<\/p>\n<p><strong>PostgreSQL<\/strong><br \/>\nGratis<br \/>\ntill\u00e4gg<br \/>\ntill\u00e4gg<br \/>\n\u2014<br \/>\n+<br \/>\ntill\u00e4gg<\/p>\n<p><strong>MongoDb<\/strong><br \/>\nGratis<br \/>\n\u2014<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<br \/>\nEndast tillg\u00e4nglig i MongoDB Enterprise<\/p>\n<p>\nTabellen \u00e4r l\u00e5ngt ifr\u00e5n komplett, men situationen \u00e4r f\u00f6ljande: i kommersiella produkter har s\u00e4kerhetsuppgifter l\u00e4nge l\u00f6sts, i open source-produkter anv\u00e4nds vanligtvis \u00f6verliggande l\u00f6sningar f\u00f6r s\u00e4kerhet, m\u00e5nga funktioner saknas, ibland m\u00e5ste n\u00e5got skrivas till. Till exempel, l\u00f6senordspolicys \u2014 det finns m\u00e5nga olika till\u00e4gg i PostgreSQL.<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>), som implementerar l\u00f6senordspolicys, men alla behov inom den inhemska f\u00f6retagssektorn, enligt min mening, t\u00e4cker ingen av dem.<\/p>\n<p><strong>Vad ska man g\u00f6ra om det man beh\u00f6ver inte finns n\u00e5gonstans?<\/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>D\u00e5 kan man anv\u00e4nda externa l\u00f6sningar som fungerar med olika databashanteringssystem, till exempel \u00abKrypto DB\u00bb eller \u00abGarda DB\u00bb. Om det handlar om l\u00f6sningar fr\u00e5n den inhemska sektorn, s\u00e5 k\u00e4nner de till GOST b\u00e4ttre \u00e4n i open source.<\/p>\n<p>Det andra alternativet \u00e4r att sj\u00e4lv skriva vad som beh\u00f6vs, implementera \u00e5tkomst till data och kryptering p\u00e5 applikationsniv\u00e5. Visserligen kan det bli mer komplicerat med GOST. Men allt som allt - du kan d\u00f6lja data som beh\u00f6vs, lagra den i databashanteringssystemet, och sedan h\u00e4mta och dekryptera den som beh\u00f6vs, direkt p\u00e5 applikationsniv\u00e5. T\u00e4nk ocks\u00e5 p\u00e5 hur du kommer att skydda dessa algoritmer p\u00e5 applikationen. Enligt v\u00e5r \u00e5sikt b\u00f6r detta g\u00f6ras p\u00e5 databashanteringssystemets niv\u00e5, eftersom det kommer att fungera snabbare.<\/p>\n<p>Denna presentation h\u00f6rdes f\u00f6rst p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/corp.mail.ru\/ru\/press\/events\/databases-1\/\">@Databases Meetup<\/a><\/noindex> av Mail.ru Cloud Solutions. Se<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>andra f\u00f6rel\u00e4sningar och f\u00f6lj anm\u00e4lningarna till evenemang p\u00e5 Telegram <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/k8s_mail\">Runt Kubernetes i Mail.ru Group<\/a><\/noindex>.<\/p>\n<p><strong>Vad mer att l\u00e4sa om \u00e4mnet<\/strong>:<\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/472694\/\">Mer \u00e4n Ceph: blocklagring av MCS-molnet<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/blog\/kakuyu-bazu-dannyh-vybrat-dlya-proekta-chtoby-ne-oshibitsya\">Hur man v\u00e4ljer en databas f\u00f6r projektet s\u00e5 att man inte beh\u00f6ver v\u00e4lja igen.<\/a><\/noindex>.<\/li>\n<\/ol>\n<p>K\u00e4lla: <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.4 - 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\/sv\/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.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47S\u00e4kerhet och databashanteringssystem: vad man beh\u00f6ver t\u00e4nka p\u00e5 n\u00e4r man v\u00e4ljer skydds\u00e5tg\u00e4rder | ProHoster","description":"Jag heter Denis.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/bezopasnost-i-subd-o-chyom-nado-pomnit-podbiraya-sredstva-zashhity","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/81884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=81884"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/81884\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/81885"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=81884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=81884"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=81884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}