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

So sichern Sie MySQL:Teil Zwei

Im vorherigen Post über MySQL-Sicherheit haben wir eine Reihe von Optionen behandelt, die verwendet werden können, um Ihre MySQL-Instanz(en) sicherer zu machen. Dazu gehörten:

  • Allgemeine MySQL-Sicherheitsmaßnahmen;
  • Zugriffskontrolle in MySQL;
  • Erstellen, Ändern und Löschen von Benutzern in MySQL;
  • Erteilen und Entziehen von Berechtigungen für und von Benutzern in MySQL;
  • Überprüfen, welche Privilegien Benutzern in MySQL zugewiesen sind.

In diesem Beitrag gehen wir auf die restlichen Optionen ein, darunter:

  • Kontokategorien in MySQL;
  • Rollen in MySQL;
  • Reservierte Konten in MySQL;
  • Passwortverwaltung in MySQL;
  • Kontosperrung in MySQL;
  • Sicherheits-Plugins, die von MySQL angeboten werden;
  • Sichern von MySQL-Backups.

Denken Sie daran, dass wir noch einmal nicht alles abdecken werden, was Sie wissen müssen, aber wir werden versuchen, gute Ausgangspunkte für Ihre eigene Recherche zu bieten.

Kontokategorien in MySQL

Kontokategorien wurden in MySQL 8 eingeführt - insbesondere in MySQL 8.0.16. Hier ist der springende Punkt:

  • Es gibt zwei separate Kontokategorien:normale Benutzer und Systembenutzer;
  • Ein normaler Benutzer ist ein Benutzer ohne das SYSTEM_USER-Privileg - ein Systembenutzer ist ein Benutzer mit dem SYSTEM_USER-Privileg;
  • Ein normaler Benutzer kann normale Konten ändern – ein solcher Benutzer kann keine Systemkonten ändern;
  • Ein Systembenutzer kann sowohl System- als auch reguläre Konten ändern;
  • Normale Konten können sowohl von normalen Benutzern als auch von Systembenutzern geändert werden;
  • Systemkonten können nur von Systembenutzern geändert werden.

Um Account-Kategorien in MySQL sicherheitstechnisch zu nutzen, denken Sie daran, dass das SYSTEM_USER-Privileg Dinge wie Account-Manipulation und das Beenden von Sitzungen und Anweisungen darin betrifft - dieses Konzept in MySQL ermöglicht die Beschränkung bestimmter Änderungen auf bestimmte Konten, wodurch MySQL sicherer wird. Kontokategorien können auch verwendet werden, um Systemkonten vor Manipulation durch reguläre Konten zu schützen:Gewähren Sie dazu regulären Konten keine Privilegien zum Ändern des mysql-Schemas.

Um einem Konto SYSTEM_USER-Privilegien zu gewähren, verwenden Sie die folgende Abfrage für ein erstelltes Konto:

GRANT SYSTEM_USER ON *.* TO system_user;

Rollen in MySQL

In MySQL sind Rollen Sammlungen von Berechtigungen. Wenn Sie einem Benutzerkonto eine Rolle in MySQL zuweisen, gewähren Sie alle mit dieser Rolle verbundenen Berechtigungen. Rollen können mit der CREATE ROLE-Anweisung erstellt werden:

CREATE ROLE ‘role_1’, ‘role_2’;

Rollennamen bestehen aus einem Benutzerteil und einem Hostteil - der Benutzerteil darf nicht leer sein und der Hostteil ist standardmäßig „%“, wenn er nicht angegeben ist.

Wenn Rollen erstellt werden, sollten Sie ihnen Berechtigungen zuweisen. Privilegien können mit der GRANT-Anweisung zugewiesen werden:

  • GRANT ALL ON demo_database.* TO ‘demo_user’; würde einem Benutzer namens demo_user alle Privilegien für eine Datenbank namens demo_database gewähren;
  • GRANT INSERT, SELECT, UPDATE, DELETE ON database.* TO ‘demo_user’; würde einem Benutzer namens demo_user in einer Datenbank namens demo_database INSERT-, SELECT-, UPDATE- und DELETE-Privilegien erteilen;
  • GRANT SELECT ON demo_database.* TO ‘demo_user’; würde einem Benutzer namens demo_user SELECT-Berechtigungen für eine Datenbank namens demo_database erteilen.

Um einem einzelnen Benutzer eine Rolle zuzuweisen, verwenden Sie diese Syntax:
 

GRANT ‘role_name’ TO ‘user_name’@’localhost’;

Um einem einzelnen Benutzer mehrere Rollen zuzuweisen, verwenden Sie diese Syntax:

GRANT ‘role_1’, ‘role_2’ TO ‘user_name’@’localhost’;

Um mehreren Benutzern gleichzeitig Rollen zuzuweisen, verwenden Sie diese Syntax:

GRANT ‘role_name’ TO ‘user1’@’localhost’, ‘user2’@’localhost’;

Rollen können beim Verhindern von Sicherheitsvorfällen hilfreich sein, denn wenn ein Angreifer das Passwort eines nicht sehr privilegierten Benutzers kennt und fälschlicherweise davon ausgeht, dass der Benutzer in Bezug auf die Rolle sehr „mächtig“ ist, könnte Ihre Anwendung (und Ihre Datenbank) dies tun sehr gut gerettet werden.

Reservierte Konten in MySQL

Beachten Sie bei reservierten Konten, dass MySQL während der Initialisierung des Datenverzeichnisses Konten erstellt. Es gibt ein paar Konten, die in MySQL als reserviert betrachtet werden sollten:

  • ‚root‘@‘localhost‘ – dieses Konto ist ein Superuser-Konto und es hat gottgleiche Privilegien für alle MySQL-Datenbanken (es kann jede Operation in jeder MySQL-Datenbank ausführen). Es ist erwähnenswert, dass der Root-Benutzer auch umbenannt werden kann, um zu vermeiden, dass ein hochprivilegiertes Konto preisgegeben wird. Um das Konto umzubenennen, führen Sie die folgende Abfrage aus:
RENAME USER ‘root’@’localhost’ TO ‘username’@’localhost’;
  • Stellen Sie sicher, dass Sie ein FLUSH PRIVILEGES ausstellen; Anweisung nach dem Umbenennen des Kontos, damit die Änderungen wirksam werden.
  • ‘mysql.sys’@’localhost’ – dieses Konto ist ein Systembenutzer, der als Definierer für Ansicht, Prozeduren und Funktionen im Sys-Schema verwendet wird. In MySQL 5.7.9 hinzugefügt, um Probleme zu vermeiden, die auftreten können, wenn das Root-Konto umbenannt wird.
  • ‘mysql.session’@’localhost’ – dieses Konto wird intern von Plugins verwendet, um auf den Server zuzugreifen.

In diesem Fall können Sie in Bezug auf die Sicherheit nicht viel tun, aber denken Sie daran, dass das Root-Konto gottähnliche Privilegien hat, was bedeutet, dass es jede Operation in jeder MySQL-Datenbank ausführen kann, und seien Sie vorsichtig bei der Entscheidung, wem die Privilegien für den Zugriff auf das Konto gewährt werden. Denken Sie auch daran, wofür die anderen MySQL-Konten verwendet werden.

Passwortverwaltung in MySQL

MySQL unterstützt auch Funktionen zur Passwortverwaltung. Einige davon sind:

  • Die Fähigkeit, Passwörter regelmäßig ablaufen zu lassen;
  • Die Möglichkeit, die Wiederverwendung von Passwörtern zu vermeiden;
  • Die Fähigkeit, Passwörter zu generieren;
  • Die Möglichkeit zu prüfen, ob das verwendete Passwort sicher ist;
  • Die Möglichkeit, Benutzer nach zu vielen fehlgeschlagenen Anmeldeversuchen vorübergehend zu sperren.

Jetzt werden wir uns diese Optionen genauer ansehen.

Um ein Passwort manuell ablaufen zu lassen, verwenden Sie die ALTER USER-Anweisung wie folgt:

ALTER USER ‘user’@’localhost’ PASSWORD EXPIRE;

Um eine globale Richtlinie festzulegen, ändern Sie die Datei my.cnf so, dass sie den Parameter default_password_lifetime enthält. Der Parameter kann unterhalb des Abschnitts [mysqld] definiert werden (das folgende Beispiel setzt die Passwortlebensdauer auf 3 Monate (90 Tage)):

default_password_lifetime=90

Wenn Sie möchten, dass die Passwörter niemals ablaufen, setzen Sie den Parameter default_password_litetime auf 0.
Sie können den Ablauf des Passworts auch für bestimmte Benutzer festlegen. Wenn Sie das Ablaufintervall für das Kennwort für einen Benutzer namens demo_user festlegen möchten, können Sie das folgende Beispiel verwenden:

ALTER USER ‘demo_user’@’localhost’ PASSWORD EXPIRE INTERVAL 90 DAY;

So deaktivieren Sie den Kennwortablauf:

ALTER USER ‘demo_user’@’localhost’ PASSWORD EXPIRE NEVER;

So setzen Sie die globale Kennwortablaufrichtlinie zurück:

ALTER USER ‘demo_user’@’localhost’ PASSWORD EXPIRE DEFAULT;

Einschränkungen zur Wiederverwendung von Passwörtern erlauben keine Wiederverwendung von Passwörtern. Um diese Funktion zu nutzen, verwenden Sie die Variablen password_history und password_reuse_interval. Sie können diese Variablen entweder in my.cnf einfügen, indem Sie sich das Beispiel unten ansehen, oder sie zur Laufzeit setzen, indem Sie SET PERSIST vor den Anweisungen unten hinzufügen.

Um die Wiederverwendung eines der 5 zuvor verwendeten Passwörter, die jünger als 365 Tage sind, zu verbieten, verwenden Sie:

password_history=5
password_reuse_interval=365

Um mindestens 5 Passwortänderungen zu verlangen, bevor eine Wiederverwendung zugelassen wird:

ALTER USER ‘demo_user’@’localhost’ PASSWORD HISTORY 5;

Dasselbe kann beim Erstellen eines Benutzers gemacht werden - ersetzen Sie ALTER USER durch CREATE USER.

Um beim Erstellen eines Benutzers ein zufälliges Passwort zu generieren, führen Sie Folgendes aus:

CREATE USER [email protected] IDENTIFIED BY RANDOM PASSWORD;

So ändern Sie das Passwort eines Benutzers in ein zufällig generiertes:

SET PASSWORD FOR [email protected] TO RANDOM;

Ihr zufälliges Passwort wird darunter angezeigt.

Denken Sie daran, dass die standardmäßigen zufälligen Passwörter eine Länge von 20 Zeichen haben. Die Länge kann durch die Variable generate_random_password_length gesteuert werden, die einen Bereich von 5 bis 255 hat.

Um zu überprüfen, ob ein verwendetes Passwort stark ist, können Sie die Variable VALIDATE_PASSWORD_STRENGTH verwenden - die Funktion zeigt eine Zahl von 0 bis 100 an, wobei 0 die schwächste und 100 die stärkste ist:
SELECT VALIDATE_PASSWORD_STRENGTH('Passwort');

Kontosperrung in MySQL

MySQL 8.0.19 führte auch die Möglichkeit ein, Benutzerkonten vorübergehend zu sperren. Dies kann mit den Variablen FAILED_LOGIN_ATTEMPTS und PASSWORD_LOCK_TIME erreicht werden.

Um die Kontosperre beim Erstellen eines Benutzers zu aktivieren, führen Sie Folgendes aus:

CREATE USER ‘demo_user’@’localhost’ IDENTIFIED BY ‘password’ FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 5;

Der Wert nach FAILED_LOGIN_ATTEMPTS gibt an, nach wie vielen Fehlversuchen das Konto gesperrt wird, der Wert nach PASSWORD_LOCK_TIME gibt die Kontosperrzeit in Tagen an. Es ist auch möglich, einen Wert anzugeben, der nicht endet, bis das Konto entsperrt wird, indem PASSWORD_LOCK_TIME als UNBOUNDED angegeben wird.

Von MySQL angebotene Sicherheits-Plugins

MySQL bietet auch einige Plugins, die die Sicherheitsfunktionen weiter verbessern können. MySQL bietet:

  • Authentifizierungs-Plugins;
  • Plugins zur Verbindungssteuerung;
  • Passwortvalidierungs-Plugins;
  • Audit-Plugins;
  • Firewall-Plugins;

Diese Plugins können sicherheitstechnisch für eine Reihe von Dingen verwendet werden:

Authentifizierungs-Plugins

Authentifizierungs-Plug-ins können es Benutzern ermöglichen, zwischen mehreren austauschbaren Authentifizierungsmethoden zu wählen, die in MySQL verfügbar sind. Sie können zusammen mit CREATE USER- oder ALTER USER-Anweisungen verwendet werden. Hier ist ein Beispiel: 

CREATE USER ‘user_1’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;

Diese Abfrage würde die Authentifizierung mit der nativen Passwort-Hashing-Methode implementieren.

Plugins zur Verbindungssteuerung

Plugins zur Verbindungssteuerung können eine zunehmende Verzögerung bei den Serverantworten auf Verbindungsversuche einführen, wenn die Verbindungsversuche eine bestimmte Anzahl überschreiten - sie sind in der Lage, potenzielle Brute-Force-Angriffe zu stoppen. Diese Plugin-Bibliothek wurde in MySQL in der Version 5.7.17 eingeführt und kann entweder über my.cnf oder durch Laden der Plugins zur Laufzeit in den Server hinzugefügt werden.
Um die Plugins zu my.cnf hinzuzufügen , fügen Sie die folgende Zeile unter [mysqld] hinzu:

plugin-load-add=connection_control.so

Nachdem Sie die Datei geändert haben, speichern Sie Ihre Änderungen und starten Sie MySQL neu.
Um die Plugins zur Laufzeit in den Server zu laden, führen Sie Folgendes aus:

INSTALL PLUGIN CONNECTION_CONTROL SONAME ‘connection_control.so’;
INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME ‘connection_control.so’;

Passen Sie das Suffix .so nach Bedarf an. Wenn Sie alles richtig gemacht haben, sollte die Tabelle CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS alle fehlgeschlagenen Verbindungsversuche enthalten.

Plugins zur Passwortvalidierung

Plugins zur Passwortvalidierung können es Benutzern ermöglichen, stärkere Passwörter zu verwenden, wenn sie richtig verwendet werden. Das Passwortvalidierungs-Plugin kann über my.cnf installiert werden oder indem das Plugin zur Laufzeit auf den Server geladen wird. Um das Plugin über my.cnf zu installieren, fügen Sie die folgende Zeile unter [mysqld] hinzu und starten Sie dann den Server neu:

plugin-load-add=validate_password.so

Um das Plugin zur Laufzeit zu laden, führen Sie die folgende Anweisung aus:

INSTALL PLUGIN validate_password SONAME ‘validate_password.so’;

Um das Plugin zur Laufzeit zu laden und zu verhindern, dass es entfernt wird, fügen Sie validate-password=FORCE_PLUS_PERMANENT zu my.cnf hinzu.

Um zu verhindern, dass der Server ausgeführt wird, wenn das Plugin nicht initialisiert ist, verwenden Sie die Option --validate-password mit dem Wert FORCE oder FORCE_PLUS_PERMANENT.

Die Richtlinie zur Passwortstärke kann ebenfalls geändert werden:Ändern Sie dazu den Wert validate_password_policy auf LOW, MEDIUM oder STRONG. Der Wert von LOW prüft nur die Passwortlänge, die MEDIUM-Richtlinie fügt einige Bedingungen hinzu und die STRONG-Richtlinie fügt die Bedingung hinzu, dass Passwortteilzeichenfolgen, die aus 4 oder mehr Zeichen bestehen, nicht mit Wörtern in einer Wörterbuchdatei übereinstimmen dürfen, die durch Ändern der Variable validate_password_dictionary_file angegeben werden kann.

Schlüsselring-Plugins

Keyring-Plugins können es Serverkomponenten und Plugins ermöglichen, vertrauliche Informationen zum Abruf sicher zu speichern. Um das Plugin in MySQL zu laden, fügen Sie Folgendes unter [mysqld] hinzu:

early-plugin-load=keyring_file.so

Um die Schlüsselbund-Tresordatei anzugeben, fügen Sie Folgendes hinzu (die Variable keyring_vault_config sollte auf die Konfigurationsdatei verweisen):

loose-keyring_vault_config=”/var/lib/mysql_keyring/keyring_vault.conf”

Die Schlüsselbunddatei sollte die Variable vault_url enthalten, die die Adresse des Tresorservers definiert, die Variable secret_mount_point, die den Mount-Punkt-Namen definiert, an dem der Schlüsselbund-Tresor die Schlüssel speichert, und ein Token, das sollte vom Tresorserver definiert werden. Optional kann auch die Variable vault_ca definiert werden (sie sollte auf das CA-Zertifikat zeigen, das zum Signieren der Zertifikate des Tresors verwendet wird).

Starten Sie den Server neu, damit die Änderungen wirksam werden;

Audit-Plugins

Audit-Plugins können die Überwachung, Protokollierung und Blockierung von Aktivitäten ermöglichen, die auf MySQL-Servern ausgeführt werden. Um MySQL Enterprise Audit zu installieren, führen Sie ein Skript aus, das sich im Share-Verzeichnis Ihrer MySQL-Instanz befindet (vermeiden Sie die Eingabe Ihres MySQL-Instanz-Passworts im Terminal – verwenden Sie my.cnf):

mysql < /path/to/audit_log_filter_linux_install.sql

Sie können auch verhindern, dass das Plugin zur Laufzeit entfernt wird – fügen Sie Folgendes im Abschnitt [mysqld] hinzu:

audit_log=FORCE_PLUS_PERMANENT

Starten Sie den Server neu, um die Änderungen zu übernehmen. Beachten Sie, dass die regelbasierte Protokollierung standardmäßig keine überprüfbaren Ereignisse protokolliert. Erstellen Sie also einen Filter, damit alles protokolliert wird:

SELECT audit_log_filter_set_filter(‘log_filter’, ‘{ “filter”: { “log”: true } }’);

Dann einem Konto zuweisen:

SELECT audit_log_filter_set_user(‘%’, ‘log_filter’);

Beachten Sie, dass Audit-Plugins nur in MySQL Enterprise Edition verfügbar sind;

Firewall-Plugins

Firewall-Plug-ins können es Benutzern ermöglichen, die Ausführung bestimmter SQL-Anweisungen basierend auf bestimmten Mustern zuzulassen oder zu verweigern. MySQL Enterprise Firewall wurde in MySQL 5.6.24 eingeführt – sie ist in der Lage, Daten zu schützen, indem sie unbefugte Aktivitäten überwacht, warnt und blockiert:Sie kann SQL-Injection-Angriffe blockieren, Bedrohungen überwachen und verdächtigen Datenverkehr blockieren sowie Eindringlinge erkennen die Datenbank. Die Firewall ist auch in der Lage, blockierte Statements zu protokollieren – sie können eingesehen werden und eine Echtzeitzählung von genehmigten und abgelehnten Statements kann ebenfalls beobachtet werden.

Um MySQL Enterprise Firewall zu installieren, aktivieren Sie es einfach bei der Installation von MySQL Server unter Windows, es kann auch mit Hilfe von MySQL Workbench 6.3.4 installiert, deaktiviert oder deinstalliert werden. Die Firewall kann auch manuell installiert werden, indem Sie ein Skript im Share-Verzeichnis Ihrer MySQL-Installation ausführen. Um die Firewall zu aktivieren, fügen Sie die folgende Zeile unter [mysqld] hinzu und starten Sie den Server neu:

mysql_firewall_mode=ON

Die Firewall kann auch zur Laufzeit aktiviert werden:

SET GLOBAL mysql_firewall_mode = ON;

Alternativ, um die Firewall beizubehalten (was bedeutet, dass die Firewall nicht bei jedem nachfolgenden Serverneustart erneut aktiviert werden muss):

SET PERSIST mysql_firewall_mode = ON;

Erteilen Sie dann allen Konten, die die Firewall verwalten, die Berechtigung FIREWALL_ADMIN und allen Konten, die nur Zugriff auf ihre eigenen Firewall-Regeln haben sollen, die Berechtigung FIREWALL_USER. Gewähren Sie außerdem die EXECUTE-Berechtigung für die gespeicherten Prozeduren der Firewall in der MySQL-Datenbank. Damit die Firewall funktioniert, registrieren Sie Profile mit ihr, trainieren Sie dann die Firewall, damit sie die zulässigen Anweisungen kennt, die die Datenbank ausführen kann, und weisen Sie die Firewall anschließend an, eingehende Anweisungen mit der festgelegten Whitelist abzugleichen. Jedes Profil hat einen Betriebsmodus – AUS, AUFZEICHNEN, SCHÜTZEN oder ERKENNEN. OFF deaktiviert das Profil, RECORDING trainiert die Firewall, PROTECTING erlaubt oder verweigert die Ausführung von Anweisungen und DETECTING erkennt (blockiert aber nicht) Eindringversuche. Regeln für ein bestimmtes Profil können zurückgesetzt werden, indem der Wert auf RESET gesetzt wird. OFF deaktiviert das Profil. Verwenden Sie zum Festlegen des Modus die folgende Abfrage, wobei name der Profilname und OFF der Betriebsmodus ist: 

CALL mysql.sp_set_firewall_mode(name, ‘OFF’);

Das Firewall-Plugin ist ebenfalls nur in MySQL Enterprise Edition verfügbar.

MySQL-Backups sichern

Soweit MySQL-Backups betroffen sind, haben Sie ein paar Optionen.

  • Wenn Sie mysqldump verwenden, können Sie Ihren Benutzernamen und Ihr Passwort in my.cnf speichern und mysqldump wie folgt aufrufen (der folgende Befehl speichert alle Datenbanken in einer Datei /home/backup.sql):
$ mysqldump --defaults-extra-file=/var/lib/my.cnf --single-transaction --all-databases > /home/backup.sql
  • ​Indem Sie Ihren Benutzernamen und Ihr Passwort in my.cnf speichern, schreiben Sie Ihr Passwort nicht in das Terminal – eine solche Methode zum Erstellen von Backups ist sicherer, da der Befehl während der Ausführung des Dumps über die ps ax angezeigt werden kann Befehl.
  • Sie können auch die Verwendung von mysqldump-secure in Betracht ziehen, einem POSIX-kompatiblen Wrapper-Skript, das in der Lage ist, Backups mit starker Sicherheit zu komprimieren und zu verschlüsseln .

  • Backups können mit OpenSSL verschlüsselt werden - nehmen Sie einfach Ihr Backup und verschlüsseln Sie es dann mit dem folgenden Befehl:

    $ openssl enc -aes-256-cbc -salt -in backup.tar.gz -out backup.tar.gz.enc -k password

    Der obige Befehl erstellt eine neue verschlüsselte Datei backup.tar.gz.enc im aktuellen Verzeichnis. Die Datei wird mit dem von Ihnen gewählten Passwort verschlüsselt (ersetzen Sie das Passwort durch Ihr gewünschtes Passwort). Die Datei kann später durch Ausführen des folgenden Befehls entschlüsselt werden:

    $ openssl aes-256-cbc -d -in backup.tar.gz.enc -out backup.tar.gz -k password

    Passwort durch Ihr Passwort ersetzen.

  • mysqldump hat eine weitere Option, um Ihre Backups zu verschlüsseln (das folgende Beispiel komprimiert sie auch mit gzip):

    $ mysqldump --all-databases --single-transaction --triggers --routines | gzip | openssl  enc -aes-256-cbc -k password > backup.xb.enc

    Ersetzen Sie das Passwort durch Ihr gewünschtes Passwort.

  • Sie können Ihre Backups auch mit mariabackup oder xtrabackup verschlüsseln. Hier ist ein Beispiel aus der MariaDB-Dokumentation:

    $ mariabackup --user=root --backup --stream=xbstream  | openssl  enc -aes-256-cbc -k password > backup.xb.enc

    Ersetzen Sie das Passwort durch Ihr gewünschtes Passwort.

  • Backups können auch mit ClusterControl verschlüsselt werden – wenn die Verschlüsselungsoption für ein bestimmtes Backup aktiviert ist, verschlüsselt ClusterControl das Backup mit AES-256 CBC (Die Verschlüsselung erfolgt auf dem Backup-Knoten). Wenn die Sicherung auf einem Controller-Knoten gespeichert ist, werden die Sicherungsdateien in einem verschlüsselten Format mit socat oder netcat gestreamt. Wenn die Komprimierung aktiviert ist, wird ClusterControl das Backup zuerst komprimieren, danach verschlüsseln. Der Verschlüsselungsschlüssel wird automatisch generiert, wenn er nicht existiert, und dann in der CMON-Konfiguration in der Option backup_encryption_key gespeichert. Beachten Sie, dass dieser Schlüssel verschlüsselt ist und zuerst entschlüsselt werden sollte. Führen Sie dazu den folgenden Befehl aus:

    $ cat /etc/cmon.d/cmon_ClusterID.cnf | grep ^backup_encryption_key | cut -d"'" -f2 | base64 -d > keyfile.key

    Der Befehl liest den backup_encryption_key und dekodiert seinen Wert in eine binäre Ausgabe. Die Schlüsseldatei kann verwendet werden, um das Backup wie folgt zu entschlüsseln:

    $ cat backup.aes256 | openssl enc -d -aes-256-cbc -pass file:/path/to/keyfile.key > backup_file.xbstream.gz

    Weitere Beispiele finden Sie in der ClusterControl-Dokumentation.

Fazit

In diesen Beiträgen zur MySQL-Sicherheit haben wir einige Sicherheitsmaßnahmen behandelt, die von Nutzen sein können, wenn Sie das Gefühl haben, die Sicherheit Ihrer MySQL-Instanz(en) erhöhen zu müssen. Obwohl wir nicht absolut alles abgedeckt haben, sind wir der Meinung, dass diese Punkte ein guter Ausgangspunkt sein können, um die Sicherheit Ihrer MySQL-Installation zu erhöhen. Nehmen Sie aus diesen Beiträgen, was Sie wollen, führen Sie Ihre eigenen Nachforschungen durch und wenden Sie die Sicherheitsmaßnahmen an, die in Ihrer Situation am besten geeignet sind.