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 );Code language: JavaScript (javascript)

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();
}Code language: PHP (php)

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';Code language: JavaScript (javascript)

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

"Pilve pole olemas. On lihtsalt kellegi teise arvuti."

Ardi Jürgens
Mis ikkagi on pilveteenus, kuidas see keerukas süsteem töötab ning kuidas me tulime mõne nädala eest toime ühe jõudlust pärssinud ootamatusega....

Saabub OpenSSL 3 tugi - ka aegunud PHP versioonidele

Ingmar Aasoja
Zone veebimajutusplatvormi aluseks olevat ZoneOS operatsioonisüsteemi ootab ees suurem uuendus: juurutame OpenSSL 3. versiooni. See muutus mõjutab pea...

Uuendame NodeJS ja Python vaikeversioone

Ingmar Aasoja
Juunis 2024 hakkame Zone platvormi järk-järgult l uuendama NodeJS ja Python vaikeversioone, mistõttu palume käesoleva kirjatükiga tähelepanu just...

Veelkord aegunud PHP versioonidest

Kaarel Urva
Mäletatavasti teavitasime aprilli lõpus kliente sellest, et aegunud PHP versioonide kasutamine muutub tasuliseks. Mõistetavasti tuli see uudis paljudele...