1 Sun Microsystems Methoden zur Absicherung und Datensicherung eines MySQL- Servers Lenz Grimmer MySQL Community Relations Manager.

Slides:



Advertisements
Ähnliche Präsentationen
Ext2. Geschichte Minixerhebliche Beschränkungen extfs ext2erstmals aufhebung aller drängenden Beschränkungen ext3erweiterung um Journaling.
Advertisements

Object Relational Mapping
Objekt – Relationales – Modell Tomasz Makowski IN
MySQL.
Prof. Dr. Andreas Schmietendorf
Allgemeine Technologien II
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
SQL als Abfragesprache
Open Database Connectivity (ODBC). © Prof. T. Kudraß, HTWK Leipzig Open Database Connectivity (ODBC) Idee: – API für eine DBMS, das ein Call-Level-Interface.
Datenbanken 10: Einfügen, Ändern, Löschen
Einführung MySQL mit PHP
Datensicherheit.
ODBC (Open Database Connectivity)
IGEL UMS Universal Management Suite Oktober 2011 Florian Spatz
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Online-Systematiken im Netz
Projektarbeit PHP 5.3 / MySQL & Content Management Systems
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
Technisches Update Veeam Backup & Replication Version 7 Cloud Edition
Präsentation von Lukas Sulzer
Einführung in 2 Betriebssysteme
Seite 1 - Security in TYPO3 Willkommen Security in (und rund um) TYPO3 Christian Kurta
UHZ / 2Roberto Mazzoni - Informatikdienste Geschichte MySql-Service im Portfolio der Informatikdienste seit 2000 Ablösung der Filemaker.
Structured Query Language
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
CODA - Installation Installation der Binärdateien –Venus: Client-Programm –Vice: Server-Programm –Für Windows existiert eine Alpha-Version (Coda Client.
Termin Festlegung Einführung MySQL Runterladen MySQL, Pentaho Design Studio Betrachtung Pentaho
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
PHPmyadmin Maya Kindler 6c.
Datenbanken erstellen mit PostgreSQL
Datenbanken abfragen mit SQL
Eine Zeitreise mit Oracle 10g: Praktisches mit Flashback DOAG Regionaltreffen/Gütersloh Petra Flach Ventara AG.
© 2003, Rudolf Jansen Einsatz der XML-Features der Oracle 9i DB zur Systemintegration Rudolf Jansen Freiberuflicher Entwickler und Autor
By Thorsten Zisler 1 SQL Datenbank Anbindung an den Supervisor.
Dr. Klaus Ruhlig Technology & Product Consulting Sun Microsystems, München Skalierbare Rechnerarchitekturen für ein DWH: Eine vergleichende Analyse.
Theorie. Was ist Drupal? Content-Management-System, Open Source Software Hauptanwendung in der Organisation von Websites In PHP geschrieben und wird als.
Reorganisation und Administration großer SAP-DB Manfred Riemer SAP AG (z.B. MCOD-Systeme)
 Allgemeines zum Thema Sicherheit & Sicherung  Das Datei-Image und seine Bedeutung  Die einfache Abgleichen von Dateien und Ordnern (heutiges Thema)
Linux Administration Was mache ich nach der erfolgreichen Linuxinstallation? Jörg Hoh Jörg HohCCC Stuttgart, 06/07/2006.
1 Datensicherung Quelle:
LINUX II Unit Remote Zugriff via SSH.
IS: Datenbanken, © Till Hänisch 2000 Einführung Worüber reden wir hier eigentlich ?
LINUX II Unit 6 RAID & LVM.
Kaseya System Backup and Recovery
Standby Database Autor:
RMAN versus NSR-ORA Vergleich und Bewertung
Oracle Migration mit Shareplex
Sprachumfang von SQL Vier Kategorien DDL (Data Definition Language)
VFP-Praxis Reparatur von VFP Datenbanken
D-SQL SQLization – endlich Client/Server!
MySQL – Die freie Datenbank
Mandantenkopie / SAP* reaktivieren
Vorlesung #7 Fehlerbehandlung
• Projektdialog paralleler Plagiatschutz- projekte
Create Table, Rechte und Rollen
Migration eines Windows Active Directory Domänencontrollers
Vorlesung #7 Fehlerbehandlung
Vorlesung #7 Fehlerbehandlung
Die Stadt Aarau setzt für das Backup im RZ auf
Cloud Computing.
Installation und Beispiele
Indexierung Oracle: indexes Indexierung.
Fachberatertreffen 2017 Informationen und Update zu Schild-NRW
Vorlesung #10 Fehlerbehandlung
Datenbanken online sowie offline verfügbar machen
Präsentation von Darleen und Michèle
Sicherheitslabor — Einführung
Systemprogramm Time Machine
(Structured Query Language)
 Präsentation transkript:

1 Sun Microsystems Methoden zur Absicherung und Datensicherung eines MySQL- Servers Lenz Grimmer MySQL Community Relations Manager

2 Übersicht Verbesserung der Server-Sicherheit > Integrierte Funktionalität > Auf Betriebssystem-Ebene MySQL Datensicherung > physikalisch vs. logisch > Methoden und Werkzeuge

3 MySQL-Absicherung Wichtige Arbeitsschritte nach Erstinstallation Sicherheit der Standardinstallation bereits relativ hoch Zusätzliche Sicherungsmaßnahmen des Betriebssystems flankieren die im Server enthaltenen Funktionen

4 Benutzerkonten Kennwort für den root-User $ mysql ­u root mysql mysql> SET PASSWORD FOR Entfernen des anonymen Benutzers Entfernen der test -Datenbank Script: mysql_secure_installation Konten: nur die erforderlichen Privilegien: nur die notwendigen

5 Prüfung der Zugriffsrechte Verbindungsaufbau > Server überprüft anhand der user -Tabelle, ob ein passender Eintrag für username, host und passwort existiert SQL-Abfrage > Server überprüft Privilegien anhand der user, db, tables_priv and column_privs Tabellen

6 MySQL-Zugangskontrolle Query true false db true Query executed Permission denied false columns_priv false tables_priv false user true

7 Sicherheitsfunktionen Nützliche Optionen in my.cfg: > bind-address – lauscht nur am einem TCP-Interface (z.B ) > skip-networking – Kommunikation nur lokal (via socket-Datei) Wichtige SQL-Anweisungen: SHOW GRANTS, SET PASSWORD, GRANT/REVOKE PROCESS/SUPER/FILE Privilegien minimieren

8 Weitere Hinweise Keine Benutzerkennwörter im Klartext in Tabellen speichern MD5() oder SHA1(), nicht PASSWORD() Verschlüsselung (SSL, SSH, VPN) LOAD DATA LOCAL deaktivieren: --local-infile=0 Nie mysqld als root-Benutzer ausführen History-Datei ~/.mysql_history absichern oder löschen MySQL root -User umbenennen

9 Views & Stored Procedures VIEW s können Zugriff auf bestimmte Spalten regeln > Stored Procedures schirmen die realen Tabellen vor direkten Zugriffen durch Anwender und Applikationen ab > Seit MySQL 5.0 enthalten

10 Absicherung auf OS-Ebene Zugriff auf das Datenverzeichnis beschränken ( chown/chmod ) > Tabellen und Log-Dateien schützen Keine Shell-Konten auf dem DB-Server Kein direkter Zugriff auf Port 3306 aus dem Internet! Firewall/DMZ/iptables SELinux, AppArmor, RBAC chroot(), Zones/Container, VMs

11 Security Auditing Regelmäßige, automatische Überprüfung oak-security-audit (openark kit)

12 Datensicherung Notwendigkeit > Hardware-Ausfall > Anwender- oder Applikationsfehler Zu sichernde Daten > Datenbankinhalte > Log-Dateien Weitere Aspekte > Sicherungszeitpunkt > Ort der Sicherung und Aufbewahrung

13 Wann werden Sicherungen benötigt? Datenverlust durch Hardwarefehler > Absturz wg. Hardwareschaden > Festplattenausfall > Defekte Hardware Anwender- und Applikationsfehler > DROP TABLE oder DELETE FROM ohne WHERE - Klausel > Development vs. Production DB > Öffnen der Tabellendateien mit der falschen Anwendung

14 Was sollte gesichert werden? Datenbankinhalte > Für komplette Sicherungen > Logisch oder phyikalisch Log-Dateien > Für inkrementelle Sicherungen > Wiederherstellungszeitpunkte (Point in time recovery) Konfigurationsdateien > /etc/my.cnf > Cron-Jobs

15 Zeitpunkt der Datensicherung Regelmäßig Außerhalb der Lastspitzen Wenig veränderliche Daten weniger häufig

16 Speicherung der Sicherungskopien Auf dem DB-Server > Besser nicht! > Zumindest auf einem separaten Dateisystem/Volume oder Laufwerk Kopiert auf einen anderen Server > Onsite oder offsite Sicherung/Archivierung auf Band/Wechselplatte An verteilten Orten

17 Modulare Speicher-Engine-Architektur

18 MySQL Datenverzeichnis Alle Datenbanken und Logfiles werden standardmäßig hier gespeichert Ort abhängig von der MySQL distribution (einkompilierter Wert): > /usr/local/mysql/data (tarball) > /var/lib/mysql (RPM) Mit --datadir=/pfad/zum/datadir anpaßbar SHOW VARIABLES LIKE 'datadir'; InnoDB: innodb_data_home_dir

19 Das Binärlog Speichert alle datenverändernden SQL-Anweisungen (DML) z.B. CREATE, INSERT, DELETE, DROP, UPDATE Zweck: > Erleichtert Datenwiederherstellung > Replikation Enthält zusätzliche Informationen (Zeitstempel, Laufzeit) Binär codiert, mysqlbinlog zum decodieren Aktiviert mit -- log-bin[=datei]

20 Log-Management Server rotiert die Logs Log-Indexdatei verzeichnet alle Logs SHOW MASTER LOGS – listet alle auf dem Server vorhandenen logs FLUSH LOGS – rotiert logs RESET MASTER – löscht alle binärlogs PURGE MASTER – löscht alle binärlogs bis zu einem best. Zeitpunkt

21 Sicherungsmethoden logisch: SQL-Anweisungen physikalisch: Tabellendateien vollständig vs. inkrementell > Aktivieren des Binärlogs > Zeitpunktbezogene Wiederherstellung

22 Gängige MySQL-Sicherungspraktiken mysqldump > Vollständige Sicherung $ mysqldump mydb > mydb sql > Struktur und/oder Daten als SQL-Anweisungen: CREATE TABLE, INSERT > Einzelne Tabellen oder Datenbanken möglich > portabel, aber unhandlich bei großen Datenmengen Mit anderen Unix-Werkzeugen kombinierbar (Piping) $ mysqldump ­­opt world | mysql ­h remote.host.com world

23 mysqldump - Tipps --lock-all-tables – nützlich für konsistente MyISAM-Backups > Aber sperrt alle DML-Anweisungen --flush-logs – synchronisiert das Binärlog (Checkpointing)

24 Sicherung von InnoDB-Tabellen mysqldump --single-transaction erstellt konsistente Sicherungskopie ohne Locking Physikalische Sicherung > MySQL-Server herunterfahren! > Datenfiles, InnoDB log-Dateien,.frm-Dateien sichern > Server wieder starten

25 XtraBackup / Maatkit Online-Backup für InnoDB In my.cnf: > [xtrabackup] target_dir = /home/backups Backup-Kommando: > xtrabackup –backup Multi-threaded Perl wrapper scripts > mk-parallel-dump / mk-parallel-restore

26 Weitere Sicherungsmöglichkeiten Replikation > Sicherung erfolgt auf Slave > Bonus: erhöhte Verfügbarkeit Dateisystem-Snapshots > „semi-hot“ > Linux: LVM (mylvmbackup) > Solaris: ZFS (mysql-snapback) MySQL 6.0: Online Backup API

27 Backups über Dateisystem-Snapshots Bequeme und schnelle Lösung zur unterbrechungsfreien Sicherung vollständiger Datenbanken Geringer Platzbedarf des LVM-Snapshots (10-15% reichen üblicherweise aus) Backup der Dateien auf dem Snapshot Volumen mit beliebigen Tools Beeinträchtigung der I/O Performance (Linux LVM)

28 Linux LVM Snapshot-Erzeugung Funktionsprinzip: mysql> FLUSH TABLES WITH READ LOCK $ lvcreate -s –-size= --name=backup mysql> UNLOCK TABLES $ mount /dev/ /backup /mnt $ tar czvf backup.tar.gz /mnt/* $ umount /mnt $ lvremove /dev/ /backup

29 Das mylvmbackup-Script Script zur schnellen Erzeugung von MySQL-Backups mit LVM-Snapshots Snapshots werden in ein temporäres Verzeichnis eingehängt, die Daten werden mit tar,rsync oder rsnap gesichert Archivnames mit Zeitstempeln ermöglichen wiederholte Backup-Läufe ohne Überschreiben Kann vor dem Backup InnoDB-Wiederherstellung auf dem Snapshot durchführen Benötigt Perl, DBI and DBD::mysql

30 Werkzeuge Shell: cp, tar, cpio, gzip, zip, cron rsync, unison, rsnapshot, rdiff afbackup, Amanda/Zmanda, Bacula Nicht auf live-Daten anwenden! (ma.gnolia.com anyone?)

31 Wiederherstellung Letzte vollständige Sicherungskopie (+ binäre Logdatei) Einspielen des SQL-Dumps oder Kopieren der gesicherten Tabellendateien Wiederherstellung eines bestimmten Zeitpunkts (point-in-time recovery) durch Zeitstempel im Binärlog möglich

32 Beispiel Wiederherstellung Letzte vollständige Sicherung einspielen: $ mysql < backup.sql Einspielen der inkrementellen Änderungen seit der letzten vollständigen Sicherung: $ mysqlbinlog hostname-bin | mysql

33 Vergleich der Sicherungsmethoden Portabilität (SQL Dumps vs. Tabellendateien) Geschwindigkeit, Speicherbedarf Overhead und Beeinträchtigung des Betriebs

34 Sicherungsstrategien Regelmäßige Durchführung Binärlog aktivieren Log-Dateien synchronisieren (FLUSH LOGS) SQL-Dumps konsistent und verständlich benennen (z.B. mit Zeitstempel im Dateinamen) Aufbewahrung der Sicherungen auf anderen Dateisystemen

35 Generelle Backup-Hinweise Binärlogs auf einem anderen Laufwerk/Dateisystem ablegen > Verbesserte Performance > Vermeidet vollständigen Datenverlust Backups auf Vollständigkeit/Korrektheit überprüfen Prozeduren und Zeitpläne für Backups und Wiederherstellung festlegen Testen, ob sie auch wirklich funktionieren!

36 Vielen Dank! Fragen, Kommentare, Anregungen? Lenz Grimmer