Bezpečné databázové prostředí je těžké dosáhnout, ale je nesmírně důležité, aby se zabránilo narušení dat, ransomwaru a jiné škodlivé činnosti. Bezpečnost dat je z obchodního hlediska nejvyšší prioritou. Při provozu v soukromém datovém centru je vaše síť obvykle první vrstvou obrany. Ale v prostředí distribuovaného hybridního databázového cloudu, kde jsou vnitřní části topologie databáze i aplikace distribuovány napříč datovými centry, představuje síť větší připojovací plochu. Šifrování přenášeného datového provozu je jedním z běžných opatření na ochranu proti odposlechu sítě. V tomto blogu uvidíme, jak můžeme šifrovat provoz hybridní cloudové databáze mysql.
Proč potřebujeme šifrovat databázový provoz?
Hlavním důvodem je, že spojení mezi instancemi databáze a klientskými aplikacemi by měla být šifrována a měla by zajistit pouze autorizovanou komunikaci. Tato vrstva zabezpečení může zabránit nechtěnému úniku citlivých dat nebo vyloučit možnost jakéhokoli útoku SQL injection atd. Přenos dat může také znamenat provoz replikace mezi uzly databáze nebo provoz mezi nástroji pro vyrovnávání zatížení/proxy a instancemi databáze.
Aktivace SSL na MySQL uzlech
Novější verze MySQL jsou dodávány s certifikáty s vlastním podpisem a povoleným SSL. Na druhou stranu, pokud byste chtěli přidat další vrstvu zabezpečení, možná budete chtít použít své vlastní certifikáty, ClusterControl vám umožňuje změnit certifikát SSL. V tomto blogu jsme vysvětlili, jak to udělat pomocí ClusterControl.
Aktivace SSL u klientů
MySQL provádí šifrování na základě jednotlivých připojení a použití šifrování pro daného uživatele může být volitelné nebo povinné. Chcete-li se připojit k uzlům mysql prostřednictvím SSL, ujistěte se, že jste nastavili uživatelský grant se syntaxí „VYŽADOVAT SSL“, podobnou níže:
mysql> create user 'app_user'@'192.168.%.%' identified by '[email protected]' REQUIRE SSL;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to 'app_user'@'192.168.%.%';
Query OK, 0 rows affected (0.00 sec)
To vám umožní vybrat si šifrované nebo nešifrované připojení podle požadavků jednotlivých aplikací.
Aby klienti museli používat šifrovaná připojení, musíme v souboru my.cnf povolit parametr „require_secure_transport“. Ve výchozím nastavení je tento parametr OFF.
Ověřování připojení DB
Ve výchozím nastavení se klient mysql pokouší vytvořit šifrované připojení, pokud server podporuje šifrovaná připojení, přičemž další ovládání je dostupné například prostřednictvím volby --ssl-mode,
[[email protected] vagrant]# mysql -u app_user -p -h 192.168.xx.xx -P3306 --ssl=1 -e "status;" | grep -i SSL
SSL: Cipher in use is ECDHE-RSA-AES256-GCM-SHA384
Protokol SSL používá různé šifrovací algoritmy k zajištění dat přijímaných přes veřejné a privátní sítě. Má mechanismy pro detekci jakékoli změny nebo ztráty dat.
[[email protected] vagrant]# mysql -u app_user -p -h 192.168.xx.xx -P3306 --ssl=1
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 12656
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> SHOW SESSION STATUS LIKE 'Ssl_cipher';
+---------------+-----------------------------+
| Variable_name | Value |
+---------------+-----------------------------+
| Ssl_cipher | ECDHE-RSA-AES256-GCM-SHA384 |
+---------------+-----------------------------+
1 row in set (0.00 sec)
MySQL [(none)]> show status like 'Ssl_version';
+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| Ssl_version | TLSv1.2 |
+---------------+---------+
1 row in set (0.00 sec)
Závěr
Šifrování databázových připojení není a nemělo by být velkým problémem, v některých novějších verzích MySQL se to provádí standardně. Vzhledem k tomu, že zabezpečení databází se stává stále důležitějším obchodním a regulačním problémem, je třeba pro zabezpečení vašeho hybridního cloudového prostředí přemýšlet o mnohem více než jen o šifrování dat při přenosu. Je důležité mít na paměti, že při hostování databáze platí další vrstvy zabezpečení, jako je zabezpečení sítě a operačního systému.