Teeme andmebaasiühendused turvalisemaks

Ingmar Aasoja
Jaga:

Teatavasti on SQL andmebaaside kasutajatel vaikeseadistustes lubatud ühenduda ainult lokaalselt, mis tagab selle, et andmed ei liigu üle võõraste võrkude. Zones liiguvad andmed niisamuti vaikeseadistuses üle andmebaasi- ja veebiserveri vahelise sisevõrgu ning nõnda pole neil võimalik kuidagi “jooksu panna”. Kui aga kasutaja soovib ühenduda SQL baasiga väljastpoolt, siis on soovitav aktiveerida selleks turvalist ühendust võimaldav TLS protokoll, mis krüpteerib kogu andmeliikluse klientrakenduse ja andmebaasi serveri vahel.

Zone klientidel on juba pikemat aega olnud võimalus seadistada oma rakendusi kasutama turvalist TLS ühendust. Kuivõrd andmebaasides on enamasti selline info, mis ei tohi lekkida ning selles seas ka palju tundlikke isikuandmeid, siis tuleb erilist tähelepanu pöörata just nende andmete käitlemise turvalisusele. Seetõttu saab ka Zones nüüd teha krüpteeritud ühenduse tingimuse kasutajatele kohustuslikuks. Allpool sellest pisut lähemalt.

Milleks mulle krüpteeritud SQL ühendus?

Reeglina peab turvalist TLS ühendust kasutama väliste ühenduste puhul, eeskätt olukorras, kui rakendus asub väljaspool Zone süsteemi. Näiteks siis, kui SQL serveriga on ühendatud mõni väline teenus, mis asub mõne teise teenusepakkuja pilves. Sellises olukorras pruugib piisata rakenduse administraatori teadmisest, et eelnevalt tuleb seadistada SSL ühendus. Küll aga tuleb sääraste väliste ühenduste puhul siiski ette olukordi, kus ühekordne seadistamine turvalist ühendust ei taga.

Sellistel puhkudel peab eriti tähelepanelik olema eeskätt siis, kui ligipääs on antud mõnele kasutajale, kes ühendub andmebaasiga nö desktop-rakenduse abil. Näiteks arendajate seas levinud Sequel Pro‘ga või pisut vähemtuntud Beekeeper Studio‘ga, mille kasutamisel tuleb kindlasti eelnevalt veenduda, et ühendus oleks TLS protokolliga krüpteeritud. Kuid mõistagi võib ette tulla olukordi, kus administraatoril puudub selle üle kontroll. Just selle välistamiseks ongi nüüd meil võimalik andmebaasi kasutajale määrata, et baasile pääseb ligi ainult üle TLS ühenduste. Selleks tuleb siseneda andmebaasi kasutaja haldusesse ja seadistada seal väärtus “Nõua kasutajalt TLS ühendust”.

MIlleks aga seda ikkagi vaja on? Mõnikord teeb tarkvara oma tööd nõnda, et sellel on vaja küsida arendajalt küsimusi stiilis “Ole hea, vaata järele, mis selle tellimusega andmebaasis toimub?”. Tänapäeval laialt levinud kaugtööd tehes võib arendaja andmebaasi vaadata kusagil kohvikus ning selle avalikus wifi’s. Kui sellises olukorras TLS ühendust ei kasutata, siis võib julgelt öelda, et tellimustega seotud isikuandmed on kolmandate isikute käest põhimõtteliselt läbi käinud.

Väliste ühenduste korral tuleb tähelepanu pöörata kindlasti ka sellele, et ühendusteed oleksid rangelt piiratud vaid lubatud IP-aadressidele. Seda tuleb niisamuti Minu Zone haldusliideses konkreetse andmebaasi kasutaja sätete juures seadistada. Oluline on teada, et krüpteeritud ühendust saab kasutada alates TLS protokolli versioonist 1.2. Juhime siiski tähelepanu sellele, et see võib takistuseks kujuneda vanematele rakendustele ja andmebaasiklientidele. Sestap tasub ka need võimaluse korral kaasajastada.

TLS kasutamine klientrakenduses

Desktop– ehk töölauaklientidel tuleb ühenduse seadistamisel paigutada õigesse kastikesse lithsalt vastav linnuke. Serverirakenduse seadistamiseks toome aga allpool mõned näited.

WordPress rakenduse puhul piisab faili wp-config.php ühe rea lisamisest:

define( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL );

PHP skriptis PDO ühendust kasutades tuleb määrata MYSQL_ATTR_SSL_CA väärtus. Zone serveris näiteks:

try {
    $db = new PDO(
        'mysql:host=dXXX.mysql.zonevs.eu;dbname=$database;port=3306',
        '{database_username}',
        '{database_password}',
        [
            PDO::MYSQL_ATTR_SSL_CA =>
'/etc/ssl/zse/infernal/cacrt.d/MYSQL.ZONEVS.EU.crt'
]
        );
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully";
} catch (PDOException $error) {
    echo $error->getMessage();
}

NB! TLS 1.2 on toetatud alates PHP versioonist 7.2!

Käsurealt ühendamiseks MariaDB’d kasutavas serveris tuleb kasutada –ssl võtit

mysql -h dXXX.mysql.zonevs.eu -u {database_username} --ssl -p

Käsurealt ühendamiseks MySQL 8.0 kasutavas serveris tuleb kasutada –ssl-mode= võtit

mysql -h dXXX.mysql.zonevs.eu -u {database_username} --ssl-mode=REQUIRED -p

Eelnevad võtmed tulevad kasuks siis, kui on soov kasutada mysqldump funktsionaalsust näiteks siis, kui tahad teha MySQL’i varukoopiaid väljapoole Zone võrku.

Kuidas kontrollida, kas ühendus on krüpteeritud?

Olenemata kasutusmeetodist saad SSL ühenduse toimivust kontrollida SQL lausega:

SHOW STATUS LIKE 'Ssl_cipher';

TLS ühenduse korral peaks Ssl_cipher väärtuseks olema näiteks TLS_AES_256_GCM_SHA384. Kui see väärtus on tühi, siis TLS ühendust ei kasutata.

Populaarsed postitused

Nutikas Pilveserver: tark lahendus e-poe ja nõudlike veebiprojektide jaoks

Tanel Männik
Nutikas Pilveserver pakub nüüdisaegset ja kulutõhusat lahendust, mis ühendab endas paindlikkuse ja võimsuse, et rahuldada kõrge külastatavusega...

Hallatud või halduseta platvorm: kumb vastab paremini sinu vajadustele?

Martin Kirs
ZoneOS platvorm on meie hallatavate teenuste alustala, sisaldades endas justkui mitme IT-spetsialisti pädevusi. Kuidas see platvorm on nii "nutikas" ja...

Zone Veebiakadeemia - lihtsad tööriistad kodulehega alustamiseks

blogi
Zone Veebiakadeemia uue hooaja värskeimas osas räägib Zone arendustiimi juht Ingmar kasulikest tööriistadest, mis aitavad sul hõlpsalt ja arusaadavalt...

Partner soovitab: Kodulehe hooldus ehk kuidas kaitsta seda küberrünnakute eest

MarketingSharks
Veebiarenduse maailmas on WordPress vaieldamatult üks kõige populaarsemaid sisuhaldussüsteeme.