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

CloudFest 2024: AI annab riistvarale uue hingamise

Ingmar Aasoja
Läinud nädalal istus Zone tiim lennukisse ja sööstis taaskord CloudFesti põnevasse maailma, et heita pilk veebimajutusteenuste arengusuundadele. Meie...

Zone+ WordPressi Assistent: kuidas AI abiga sekunditega veebileht luua

Jaanus Putting
See aeg on läbi, mil vajadus kodulehe järele tähendas telefoniraamatust või guuglist veebidisaineri kontaktide otsimist. Tõenäoliselt üks viimase...

Aegunud PHP on aegunud PHP

Hasso Tepper
Kui esimene tänapäevane PHP versioon 25 aastat tagasi avalikuks tehti, oli internet hoopis teistsugune. Nõudmised veebilehtedele olid tagasihoidlikud...

Zone Veebiakadeemia - kuidas end Internetis nähtavaks teha

blogi
Zone Veebiakadeemia uusima episoodiga hakkame tutvustama ägedaid Zone koostööpartnereid. Seekord on meil külas Nobel Digitali tootejuht ja partner...