Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Datenbanksicherheit – Sicherungsverschlüsselung während der Übertragung und im Ruhezustand

Die Sicherung Ihrer Daten ist eine der wichtigsten Aufgaben, die wir priorisieren sollten. Das Aufkommen von Vorschriften, die Sicherheitskonformität erfordern, wie z. B. GDPR, HIPAA, PCI DSS oder PHI, erfordert, dass Ihre Daten sicher gespeichert oder drahtlos übertragen werden.

Bei ClusterControl legen wir großen Wert auf Sicherheit und bieten eine Reihe von Funktionen zum Schutz des Datenbankzugriffs und der gespeicherten Daten. Eine davon ist die Sicherung Ihrer Datenbank-Backups, sowohl im Ruhezustand als auch während der Übertragung. Unterwegs ist, wenn das Backup über das Internet oder Netzwerk von der Quelle zum Ziel übertragen wird, während im Ruhezustand Daten auf einem dauerhaften Speicher gespeichert werden. In diesem Blog zeigen wir Ihnen, wie Sie ClusterControl verwenden können, um Ihre Sicherungsdaten im Ruhezustand und während der Übertragung zu verschlüsseln.

Verschlüsselung während der Übertragung

Bei der Verwaltung von Backups über ClusterControl werden mysqldump oder Percona Xtrabackup/Mariabackup standardmäßig ohne Verschlüsselung verwaltet, wenn sie über das Kabel übertragen werden. Die Verwendung von TLS/SSL zur Verschlüsselung der Datenübertragung wird jedoch von MySQL/MariaDB/Percona Server unterstützt, ebenso wie Percona Xtrabackup, das beim Aufrufen des Befehls SSL-Optionen anbietet.

ClusterControl aktiviert SSL standardmäßig, wenn Sie einen Cluster bereitstellen, aber es hat nicht die Kontrolle, sofort umzuschalten und Ihre Daten während der Backup-Erstellung über das Kabel zu verschlüsseln. Sie können unsere vorherigen Blogs für den manuellen Ansatz mit ClusterControl beim Erstellen Ihres Clusters oder die altmodische Methode zum manuellen Einrichten von TLS/SSL in MySQL lesen.

In ClusterControl können Sie beim Bereitstellen eines Clusters die Registerkarte „Sicherheit“ oder dieses Symbol überprüfen .

Klicken Sie auf die Mit der Schaltfläche können Sie das Zertifikat ersetzen, das derzeit von ClusterControl während der Bereitstellung Ihrer neu bereitgestellten verwendet oder bereitgestellt wird Cluster. Sie können diesen Blog "Aktualisiert:Become a ClusterControl DBA - SSL Key Management and Encryption of MySQL Data in Transit" lesen, für den wir gezeigt haben, wie wir mit den Schlüsseln umgehen. Grundsätzlich können Sie durch die linke Seitennavigation des ClusterControl gehen und auf „Schlüsselverwaltung“ klicken.

Nachfolgend finden Sie ein Beispiel für die Schlüsselverwaltung, in der Sie Ihre vorhandenen Schlüssel erstellen und importieren können.

Stellen Sie beim Erstellen eines Backups mit mysqldump als logischem Backup sicher, dass Sie Ihre SSL-Optionen entsprechend eingestellt haben, um Ihre Daten zu verschlüsseln.

Was kommt als nächstes?

Da wir unsere erstellten Zertifikate haben, müssen wir SSL entsprechend aktivieren und einrichten. Um dies sicherzustellen, können Sie dies über die ClusterControl- oder mysql-Eingabeaufforderung überprüfen. Siehe Bilder unten:

oder Sie können auch auf der Registerkarte Leistung nachsehen und wie unten gezeigt auf DB-Variablen klicken:

Beachten Sie, dass das Auffüllen unter Performance -> DB Variables einige Zeit dauern kann. Wenn Sie also manuell nachsehen möchten, können Sie die mysql-Eingabeaufforderung wie folgt verwenden:

Das Definieren Ihrer ssl_cipher kann weitere Sicherheitshärtung hinzufügen. Es gibt eine Liste der Verschlüsselungssammlungen, wenn Sie SHOW GLOBAL STATUS LIKE ‘Ssl_cipher_list’\G ausführen oder hier nachsehen. Eine Cipher Suite ist eine Kombination aus Authentifizierungs-, Verschlüsselungs- und Message Authentication Code (MAC)-Algorithmen. Diese werden bei der Aushandlung von Sicherheitseinstellungen für eine TLS/SSL-Verbindung sowie für die sichere Übertragung von Daten verwendet.

Da ClusterControl mysqldump lokal auf diesem Host ausführen wird, fügen Sie Ihrer MySQL-Konfigurationsdatei (/etc/my.cnf, /etc/mysql/my.cnf, /usr/etc/my.cnf, ~ /.my.cnf) verschlüsselt alle Aktionen für den SQL-Dump. Siehe unten:

[mysqldump]
socket=/var/lib/mysql/mysql.sock
max_allowed_packet = 512M
host=127.0.0.1
ssl-cert=/var/lib/mysql/client-cert.pem
ssl-key=/var/lib/mysql/client-key.pem

Sie können versuchen, mit tcpdump zu überwachen, und Sie können unten einen Vergleich zwischen einer unverschlüsselten und einer verschlüsselten Ebene mit TLS sehen.

Mit TLS/SSL:

Ohne TLS/SSL:

Bei Verwendung von Percona XtraBackup oder Mariabackup unter ClusterControl gibt es derzeit keine TLS/SSL-Unterstützung, wenn die Sicherung über das Netzwerk übertragen wird. Es verwendet socat, das im Grunde nur einen Port zu einem anderen Knoten als Kommunikationsmittel öffnet.

zB

[21:24:46]: 192.168.10.20: Launching ( ulimit -n 256000 && LC_ALL=C /usr/bin/mariabackup --defaults-file=/etc/my.cnf --backup --galera-info --parallel 1 --stream=xbstream --no-timestamp | gzip -6 - | socat - TCP4:192.168.10.200:9999 ) 2>&1.
[21:24:46]: 192.168.10.20: The xtrabackup version is 2.4.12 / 2004012.
[21:24:46]: 192.168.10.20:3306: Checking xtrabackup version.
[21:24:46]: 192.168.10.20: Streaming backup to 192.168.10.200
[21:24:46]: 192.168.10.200: Netcat started, error log is in '192.168.10.200:/tmp/netcat.log'.
[21:24:43]: 192.168.10.200: Starting socat -u tcp-listen:9999,reuseaddr stdout > /home/vagrant/backups/BACKUP-71/backup-full-2018-11-12_132443.xbstream.gz 2>/tmp/netcat.log.

Wenn Sie während des Transports eine sichere Ebene benötigen, können Sie dies manuell mit den Optionen --ssl* während des Befehlsaufrufs tun. Weitere Informationen finden Sie hier im Percona XtraBackup-Handbuch. Wir empfehlen dennoch, Ihr Zertifikat/Ihren Schlüssel von einer registrierten Zertifizierungsstelle zu beziehen.

Alternativ können Sie mit ClusterControl Ihre Daten vor dem Versand über das Netzwerk verschlüsseln, die versendeten Pakete sind keine Rohdaten, sondern verschlüsselte Daten. Obwohl die Verschlüsselung auf ruhenden Daten basiert, werden wir dies im nächsten Abschnitt besprechen.

Verschlüsselung im Ruhezustand

In ClusterControl haben Sie beim Erstellen Ihres Backups die Möglichkeit, Ihre Daten zu verschlüsseln. Siehe unten:

Bei der Verschlüsselung verwendet ClusterControl den „Advance Encryption Standard“ AES-256-CBC. Sehen Sie sich das Beispielprotokoll unten an:

[22:12:49]: 192.168.10.30: Launching ( ulimit -n 256000 && LC_ALL=C /usr/bin/mariabackup --defaults-file=/etc/my.cnf --backup --galera-info --parallel 1 --stream=xbstream --no-timestamp | gzip -6 - | openssl enc -aes-256-cbc -pass file:/var/tmp/cmon-002471-32758-24c456ca6b087837.tmp | socat - TCP4:192.168.10.200:9999 ) 2>&1.

Wenn Sie Ihr Backup beispielsweise mit AWS S3 in der Cloud speichern, bietet S3 drei verschiedene Modi der serverseitigen Verschlüsselung (SSE). Dies sind SSE-S3, SSE-C oder SSE-KMS. Amazon hat großartige SSE-Funktionen zu bieten, die die Verschlüsselung von Daten im Ruhezustand handhaben. Sie können hier beginnen, in dem behandelt wird, wie S3 AWS KMS verwendet. Wenn Sie Ihre Sicherung auf ein Volume oder einen blockbasierten Speicher verschieben, verfügt AWS auch über EBS-Verschlüsselung mit AWS KMS. Weitere Informationen dazu finden Sie hier.

Microsoft Azure hat auch coole Funktionen beim Umgang mit ruhenden Daten. Sehen Sie sich die Seite „Azure Storage Service-Verschlüsselung für ruhende Daten“ an. Azure verwaltet die Schlüssel in ihrem Azure Key Vault, genauso wie AWS KMS. Informationen zur Google-Verschlüsselung für gespeicherte Daten finden Sie hier.

Beim Speichern von Datensicherungen vor Ort können Sie LUKS (Linux Unified Key Setup) mit einer Kombination aus crypt oder dmcrypt verwenden. Ich werde in diesem Blog nicht darüber diskutieren, aber dies ist eine gute Quelle, die Sie sich ansehen sollten:MySQL Encryption at Rest – Part 1 (LUKS). Für weitere Informationen über Festplattenverschlüsselung ist diese ArchLinux-Seite „Festplattenverschlüsselung“ eine großartige Quelle für den Anfang .

Am wichtigsten ist, dass Sie immer überprüfen, ob Ihre Sicherung funktioniert, während Ihre Daten im Ruhezustand und während der Übertragung verschlüsselt wurden. Ein nicht getestetes Backup ist kein Backup, wenn es nicht funktioniert, wenn eine Wiederherstellung erforderlich ist. Wenn Sie Ihr Backup auch verschlüsselt speichern, muss es problemlos entschlüsselt werden können, daher müssen Ihre Schlüssel privat und so sicher wie möglich gespeichert werden. Darüber hinaus erhöht das Hinzufügen von Verschlüsselung zu Ihren Daten wie InnoDB-Verschlüsselung oder SST (für Galera) die Sicherheit, aber wir werden diese in diesem Blog nicht behandeln.

Schlussfolgerung

Das Verschlüsseln von Backup-Daten im Ruhezustand und während der Übertragung sind wichtige Komponenten für die Einhaltung von PHI, HIPAA, PCI DSS oder GDPR, um sicherzustellen, dass sensible Daten, die über das Kabel übertragen oder auf Festplatten gespeichert werden, von keinem Benutzer oder keiner Anwendung ohne einen gültigen Schlüssel gelesen werden können. Einige Compliance-Vorschriften wie PCI DSS und HIPAA verlangen, dass ruhende Daten während des gesamten Datenlebenszyklus verschlüsselt werden.

Hier zeigen wir, wie ClusterControl dem Endbenutzer diese Optionen bietet. Compliance ist jedoch eine große Aufgabe, die viele verschiedene Bereiche berührt. Vorschriften werden ebenfalls häufig aktualisiert, und Prozesse/Tools müssen ebenfalls entsprechend aktualisiert werden. Wir verbessern kontinuierlich verschiedene Bereiche in ClusterControl, um die Einhaltung zu erleichtern. Wir würden gerne Ihre Meinung dazu hören und wissen, wie wir uns verbessern können.