M OD UL E B D D

50
MODULE BDD MODULE BDD Mathieu GOULIN : [email protected] ASRALL 2020 Le Langage SQL

Transcript of M OD UL E B D D

Page 1: M OD UL E B D D

MODULE BDDMODULE BDDMathieu GOULIN :

[email protected]

ASRALL

2020

Le Langage SQL

Page 2: M OD UL E B D D

SOMMAIRESOMMAIREPartie 1: Prérequis

Comprendre ce qu'est une base de donnéesAlgèbre relationnelleLe langage SQL

Page 3: M OD UL E B D D

SOMMAIRESOMMAIREPartie 2: Administration

Motivations?Sécurité/intégritéSauvegarde/restaurationPerformancesGestion du changementMise en œuvre

Page 4: M OD UL E B D D

SÉCURITÉSÉCURITÉ

Page 5: M OD UL E B D D

DÉFINITIONSDÉFINITIONSSécurité:

Protection de la base de données contre lesutilisateurs non autorisésVéri�cation que ce que les utilisateurs veulentfaire est autoriséProtection contre les aléas de l’informatique

Page 6: M OD UL E B D D

DÉFINITIONSDÉFINITIONSIntégrité:

Cohérence des données entre ellesprotection de la base de données contre lesutilisateurs autorisés

L’objectif est de garantir la persistance des donnéesdans un état accessible et exploitable par l’utilisateur�nal, peu importe ce qui pourrait se produire.

Page 7: M OD UL E B D D

EXEMPLESEXEMPLESBug logiciel, provoquant une corruption des données.Fausse manipulation d’un utilisateur dans la baseréalisant des suppressions de tables.Accès d’une personne non autorisé et accès à desdonnées con�dentielles.Modi�cation frauduleuse de données.Panne matériel provoquant l’indisponibilité de labase.

Page 8: M OD UL E B D D

SÉCURITÉSÉCURITÉ

Page 9: M OD UL E B D D

INCIDENT DÉFINITIONINCIDENT DÉFINITIONITIL V3: Evènement imprévu provoquantl’interruption d’un service, ou la réduction de saqualité.

Un incident peut être impactant ou non pour lesutilisateurs

Se prémunir contre la survenance d’incidents oupréparer des solutions de contournement fait partiede la politique sécurité.

Page 10: M OD UL E B D D

DIFFÉRENTS NIVEAUX DE SÉCURITÉDIFFÉRENTS NIVEAUX DE SÉCURITÉ

Page 11: M OD UL E B D D

Au niveau du SGBD:Authenti�cation/autorisation d’accès pour lesutilisateursFaille de sécurité dans le logicielErreur de con�guration

Au niveau de l’OS:Droits d’accès à l’OS (mdp root compromis)Droits en lecture des �chiers (export base, binairesde la base).

Au niveau du réseau

Page 12: M OD UL E B D D

DIFFÉRENTS NIVEAUX DE SÉCURITÉDIFFÉRENTS NIVEAUX DE SÉCURITÉAu niveau physique:

Redondance disque (RAID, SAN)Load balancing/clusteringSalles blanches, sécurité incendie

Au niveau applicatif:Utilisateurs, rôles, droits, actions possibles Vues,Procédures stockésRisque d’injection SQL sur les applications Web

Risque humain:MDP trop simple, session restée ouverte, etc

Page 13: M OD UL E B D D

Ne jamais exposer un serveur BDD sur InternetBloquer le port d’écoute du serveur au niveau du�rewall

Restreindre les accès au serveur BDD, et éviter de lepartager avec d’autres fonctionsToujours dé�nir des mots de passe complexes pourles utilisateurs de droits forts

Ne pas laisser les mdps en clair sur un wiki interneou sur un post-it sur l’écranChanger les mdps par défaut

Page 14: M OD UL E B D D
Page 15: M OD UL E B D D

LES ACCÈSLES ACCÈSSuivant le niveau de sécurité con�guré, postgreSQLpeut accepter des connexions avec ou sans mot de

passe, en local uniquement ou à distance.

On pourra dé�nir ces paramètres dans les �chiers decon�guration système:

pg_hba.confpostgresql.conf

Ces �chiers sont dans le répertoire/etc/postgresql/[version]/[cluster]/.

Page 16: M OD UL E B D D

LES AUTORISATIONSLES AUTORISATIONSDifférentes autorisations sur la base

LectureInsertionMise à jourSuppression

Différentes autorisations sur la structure de la baseCréation/suppression d’indexRessources: création/suppression de nouvellesrelationsAltération des schémas: ajout/suppressiond’attributs

Page 17: M OD UL E B D D
Page 18: M OD UL E B D D

LES AUTORISATIONSLES AUTORISATIONSPrivilège: droit d’effectuer une action précise sur unobjet donnéNotion de rôle :

possibilité de gérer un ensemble de privilègesacquisdé�ni en fonction des besoins d’un certain grouped’utilisateurs

Page 19: M OD UL E B D D

Un utilisateur c’est un rôle auquel on peut seconnecter:

CREATE USER équivaut à CREATE ROLE avecLOGIN

Un groupe c’est un rôle, avec lequel on ne peut seconnecter, et que l’on donne à plusieurs utilisateurs.

CREATE ROLE NOLOGIN;GRANT TO ;

Page 20: M OD UL E B D D

GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCE[,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] nom_table [, ...] | ALL TABLES IN SCHEMA nom_schémTO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ];

GRANT nom_rôle [, ...] TO nom_rôle [, ...] [ WITH ADMIN OPTION ]

Page 21: M OD UL E B D D

Dans PostgreSQL, on peut affecter 5 types de droit àun utilisateur ou à un groupe

r pour SELECTa pour INSERTw pour UPDATEd pour DELETEx pour REFERENCES

Vous pouvez connaître les droits accordés avec lacommande \z

Page 22: M OD UL E B D D

SAUVEGARDE ETSAUVEGARDE ETRESTAURATIONRESTAURATION

Page 23: M OD UL E B D D

La perte irréversible des données d’une entreprisepeut provoquer sa disparition.Pour un DBA ne pas implémenter un système desauvegarde des BDD est à considérer comme unefaute grave!Sauvegarder c’est bien, pouvoir restaurer c’estmieux!

Page 24: M OD UL E B D D

Une sauvegarde est une image à un moment donnédans le temps d’un ensemble d’informations.Dans le cas d’une base de données, on peut souhaitersauvegarder:

Des donnéesUne tableUn ensemble de tablesUne baseLe sur-ensemble nécessaire et suf�sant pourpouvoir retourner dans une situation correcteaprès un désastre.

Page 25: M OD UL E B D D

Il faut donc sauvegarder régulièrement:

Les donnéesLes structures des tablesLes utilisateurs et leurs privilègesLes �chiers et paramètres de con�guration de la base

Page 26: M OD UL E B D D

Périodicité?Durée de rétention?Périmètre de la sauvegarde?Conditions de réalisation?Type de sauvegarde?Supports?

Page 27: M OD UL E B D D

Conserver sa sauvegarde dans un dossier du serveurau-delà du très court terme est une erreur!La stratégie de sauvegarde doit être validée par desrestauration (régulière) pour véri�cation.

Page 28: M OD UL E B D D

DIFFÉRENTS TYPES DE SAUVEGARDEDIFFÉRENTS TYPES DE SAUVEGARDE

Page 29: M OD UL E B D D

SAUVEGARDE LOGIQUE : EXPORT (DUMP)SAUVEGARDE LOGIQUE : EXPORT (DUMP)Le principe est de produire un �chier texte de

commandes SQL (appelé « �chier dump »), qui, si on lerenvoie au serveur, recrée une base de données

identique à celle sauvegardée.

Il s’agit ici d’une sauvegarde « logique ». PostgreSQLpropose pour cela le programme utilitaire : pg_dump

L'usage basique est :

pg_dump base_de_donnees > fichier_de_sortie

Page 30: M OD UL E B D D

SAUVEGARDE LOGIQUE : EXPORT (DUMP)SAUVEGARDE LOGIQUE : EXPORT (DUMP)pg_dump doit avoir accès en lecture à toutes lestables à sauvegarder

Doit être lancé pratiquement toujours en tant quesuperutilisateur de la base.

Les sauvegardes créées par pg_dump sontcohérentes, ce qui signi�e que la sauvegardereprésente une image de la base de données aumoment où commence l'exécution de pg_dump.pg_dump bloque certaines opérations sur la base :verrou partagé

Page 31: M OD UL E B D D

SAUVEGARDE LOGIQUE : EXPORT (DUMP)SAUVEGARDE LOGIQUE : EXPORT (DUMP)Pour Restaurer la sauvegarde les �chiers texte crééspar pg_dump peuvent être lus par le programme psql.La syntaxe générale d'une commande de restaurationest :

psql base_de_donnees < fichier_d_entree

Page 32: M OD UL E B D D

SAUVEGARDE À FROIDSAUVEGARDE À FROIDCette stratégie de sauvegarde consiste à copierphysiquement les �chiers utilisés par PostgreSQLpour le stockage des données.N'importe quelle méthode de sauvegarde peut êtreutilisée, par exemple :

tar -cf sauvegarde.tar /var/lib/postgresql/9.6/main/

Page 33: M OD UL E B D D

SAUVEGARDE À FROIDSAUVEGARDE À FROIDrestrictions:

Le serveur de base de données doit être arrêtépour obtenir une sauvegarde utilisable.Le serveur doit également être arrêté avant derestaurer les données.On restaure toute la base, ou rien du tout!Impossible en l’état de ne restaurer qu’une seuletable.

Page 34: M OD UL E B D D

SAUVEGARDE À FROIDSAUVEGARDE À FROIDUne sauvegarde des �chiers de données n'est pasforcément moins volumineuse qu'une sauvegardeSQL.

Au contraire, pg_dump ne sauvegarde pas lecontenu des index, mais la commande pour lesrecréer.On sauvegarde également les « espaces vides » desdata�les.

Une sauvegarde des �chiers de données est plusrapide pour les grosses BDD.

Page 35: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDPostgreSQL maintient en permanence des journauxWAL (write ahead log) dans le sous-répertoirepg_xlog/ du répertoire de données du cluster.Ces journaux décrivent chaque modi�cationeffectuée sur les �chiers de données des bases.Ils existent principalement pour se prémunir dessuites d'un arrêt brutal : si le système s'arrêtebrutalement, la base de données peut être restauréedans un état cohérent en « rejouant » les entrées desjournaux enregistrées depuis le dernier point devéri�cation.

Page 36: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDL'existence de ces journaux rend possible l'utilisationd'une stratégie pour la sauvegarde des bases dedonnées : la combinaison d'une sauvegarde de niveausystème de �chiers avec la sauvegarde des �chiersWAL.Si la récupération est nécessaire, la sauvegarde estrestaurée, puis les �chiers WAL sauvegardés sontrejoués pour amener la sauvegarde jusqu'à la dateactuelle.

Page 37: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDBéné�ces :

Une longue séquence de �chiers WAL peut êtreassemblée pour être rejouée, une sauvegardecontinue est obtenue en continuant simplement àarchiver les �chiers WAL.Les entrées WAL ne doivent pas obligatoirement êtrerejouées intégralement.La ré-exécution peut être stoppée en tout point, touten garantissant une image cohérente de la base dedonnées telle qu'elle était à ce moment-là.

Page 38: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDCette technique autorise la récupération d'uninstantané (PITR – Point In Time Recovery) : il estpossible de restaurer l'état de la base de donnéestelle qu'elle était en tout point dans le temps depuisla dernière sauvegarde de base.c'est la technique de sauvegarde préférée dans denombreuses situations où une haute �abilité estrequise.

Page 39: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDInconvénients:

Cette méthode ne supporte que la restauration d'uncluster de bases de données complet, pas d'un sous-ensemble.Un espace d'archivage important est requis : lasauvegarde de la base peut être volumineuse et unsystème très utilisé engendre un tra�c WAL àarchiver de plusieurs Mo.

Page 40: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDUne récupération fructueuse à partir de l'archivagecontinu ( « sauvegarde à chaud » ) nécessite uneséquence ininterrompue de �chiers WAL archivésqui s'étend au moins jusqu'au point de départ de lasauvegarde.Plus il y a de �chiers WAL à rejouer, plus larestauration est longue.

Page 41: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDProcédure de mise en œuvre:

S'assurer que l'archivage WAL est activé et fonctionnelSe connecter à la base de données en tant que superuti

SELECT pg_start_backup('label'); label : chaîne utilisée pour identifier de façon unique lpg_start_backup crée un fichier de label de sauvegarde nom

Page 42: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDEffectuer la sauvegarde du système de �chiers (avectar par exemple). Inutile de stopper la base. Le mieuxest d’utiliser « temporairement » un répertoiredisque (vitesse d’écriture).

Page 43: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDSe connecter à nouveau à la base de données en tantque superutilisateur et lancer la commande :

Cela met �n au processus de sauvegarde et réalise unbasculement automatique vers le prochain segmentWAL. Ce basculement est nécessaire pour permettreau dernier �chier de segment WAL écrit pendant lasauvegarde d'être immédiatement archivable.Attendre l’archivage des �chiers des segments WALutilisés lors de la sauvegarde (rapide).

SELECT pg_stop_backup();

Page 44: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDLe �chier identi�é par le résultat de pg_stop_backup est

le dernier segment à archiver pour terminer lasauvegarde. L'archivage de ces �chiers intervientautomatiquement si archive_command est déjàcon�guré. Reste ensuite à mettre sur bandes les

�chiers de données + WAL.

Page 45: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDPour restaurer une sauvegarde à chaud:

Arrêter le serveur s'il est en cours d'exécution.Effacer tous les �chiers et sous-répertoires existantsous le répertoire des données du cluster et sous lesrépertoires racines des tablespaces.Restaurer les �chiers de la base de données à partirde la sauvegarde. Il faut qu'ils soient restaurés avec lebon propriétaire (l'utilisateur système de la base dedonnées, et non pas root !) et avec les bons droits.

Page 46: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDSupprimer tout �chier présent dans pg_xlog/ Ilsproviennent de la sauvegarde et sont du coupprobablement obsolètes. Le sous-répertoirepg_xlog/archive_status/ doit aussi être créé.

Page 47: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDCréer un �chier de commandes de récupération recove

Si nécessaire, modi�er temporairement le �chier pg_hbde se connecter.

Les paramètres : restore_command (string) restore_command = 'cp /mnt/serveur/reparchives/%f "%p"' %f sera remplacé par le nom du fichier à récupérer à partir de l%p sera remplacé par le chemin vers le répertoire de copie sur lrecovery_target_time (timestamp) Le moment où arrêter la récupér

Page 48: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDDémarrer le serveur.

Le serveur se trouve alors en mode récupération etcommence la lecture des �chiers WAL archivés dont il abesoin. À la �n du processus de récupération, le serveur

renomme recovery.conf en recovery.done (pourempêcher de retourner accidentellement en mode derécupération en cas de nouvel arrêt brutal ultérieur),

puis passe en mode de fonctionnement normal.

Inspecter le contenu de la base de données pours'assurer que la récupération a bien fonctionné.

Page 49: M OD UL E B D D

SAUVEGARDE À CHAUDSAUVEGARDE À CHAUDSi tout va bien, le �chier pg_hba.conf peut-êtrerestauré pour autoriser les utilisateurs à sereconnecter. Le point clé de tout ceci est l'écritured'un �chier de commandes de récupération qui décritcomment et jusqu'où récupérer. Le �chierrecovery.conf.sample (normalement présent dans lerépertoire d'installation share/) peut être utilisécomme prototype.

Page 50: M OD UL E B D D

QUESTION ?QUESTION ?