Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak szyfrować ruch bazy danych w chmurze hybrydowej

Bezpieczne środowisko bazy danych jest trudne do osiągnięcia, ale niezwykle ważne, aby uniknąć naruszeń danych, oprogramowania ransomware i innych złośliwych działań. Bezpieczeństwo danych jest najwyższym priorytetem z biznesowego punktu widzenia. Kiedy działasz w prywatnym centrum danych, Twoja sieć jest zwykle pierwszą warstwą ochrony. Jednak w środowisku chmury rozproszonej hybrydowej bazy danych, w której wewnętrzne części topologii bazy danych oraz aplikacje są rozproszone w centrach danych, sieć stanowi większą powierzchnię przyłączenia. Szyfrowanie przesyłanego ruchu danych jest jednym z powszechnych środków ochrony przed podsłuchiwaniem sieci. W tym blogu zobaczymy, jak możemy szyfrować ruch bazy danych mysql w chmurze hybrydowej.

Dlaczego musimy szyfrować ruch w bazie danych?

Głównym powodem jest to, że połączenia między instancjami bazy danych a dowolnymi aplikacjami klienckimi powinny być szyfrowane i zapewniać tylko autoryzowaną komunikację. Ta warstwa bezpieczeństwa może zapobiegać niechcianemu wyciekowi danych wrażliwych lub wykluczyć możliwość jakiegokolwiek ataku typu SQL injection itp. Dane w drodze mogą również oznaczać ruch replikacji między węzłami bazy danych lub ruch między modułami równoważenia obciążenia/serwerami proxy a instancjami bazy danych.

 

Aktywacja SSL na węzłach MySQL

Nowe wersje MySQL są dostarczane z certyfikatami z podpisem własnym i włączonym SSL. Z drugiej strony, jeśli chcesz dodać kolejną warstwę bezpieczeństwa, możesz użyć własnych certyfikatów, ClusterControl umożliwia zmianę certyfikatu SSL. W tym blogu wyjaśniliśmy, jak to zrobić za pomocą ClusterControl.

Aktywacja SSL na klientach

MySQL wykonuje szyfrowanie dla każdego połączenia, a użycie szyfrowania dla danego użytkownika może być opcjonalne lub obowiązkowe. Aby połączyć się z węzłami mysql przez SSL, upewnij się, że ustawiłeś uprawnienia użytkownika za pomocą składni „REQUIRE SSL”, podobnej do poniższej:

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)

Pozwala to wybrać połączenie szyfrowane lub nieszyfrowane zgodnie z wymaganiami poszczególnych aplikacji.

Aby upewnić się, że klienci muszą korzystać z połączeń szyfrowanych, musimy włączyć parametr „require_secure_transport” w pliku my.cnf. Domyślnie ten parametr jest WYŁĄCZONY.

Weryfikacja połączeń z bazą danych

Domyślnie klient mysql próbuje nawiązać szyfrowane połączenie, jeśli serwer obsługuje szyfrowane połączenia, z dalszą kontrolą dostępną na przykład za pomocą opcji --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

Protokół SSL wykorzystuje różne algorytmy szyfrowania, aby zapewnić dane otrzymywane w sieciach publicznych i prywatnych. Posiada mechanizmy wykrywania wszelkich zmian lub utraty danych.

[[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)

Wnioski 

Szyfrowanie połączeń z bazą danych nie jest i nie powinno być wielkim problemem, jest to domyślnie wykonywane w niektórych nowszych wersjach MySQL. Ponieważ bezpieczeństwo bazy danych staje się coraz większym problemem biznesowym i regulacyjnym, w celu zabezpieczenia środowiska chmury hybrydowej jest o wiele więcej do przemyślenia niż tylko szyfrowanie danych podczas przesyłania. Należy pamiętać, że podczas hostowania bazy danych obowiązują inne warstwy zabezpieczeń, takie jak bezpieczeństwo sieci i systemu operacyjnego.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL COUNT() – Uzyskaj liczbę wierszy do zwrócenia przez zapytanie

  2. SEC_TO_TIME() Przykłady – MySQL

  3. Skuteczne strategie tworzenia kopii zapasowych i odzyskiwania danych MySQL/MariaDB

  4. Błąd podczas konfigurowania Laravela na Mac php artisan migracji:brak takiego pliku lub katalogu

  5. Przykłady LOCALTIMESTAMP – MySQL