Jour 9

De NoocNooNet
Sauter à la navigation Sauter à la recherche

DMZ en réseau informatique[modifier]

DMZ

Notion[modifier]

En informatique, une zone démilitarisée, ou DMZ (en anglais, demilitarized zone) est un sous-réseau séparé du réseau local et isolé de celui-ci et d'Internet (ou d'un autre réseau) par un pare-feu. Ce sous-réseau contient les machines étant susceptibles d'être accédées depuis Internet, et qui n'ont pas besoin d'accéder au réseau local.

Les services susceptibles d'être accédés depuis Internet seront situés en DMZ, et tous les flux en provenance d'Internet sont redirigés par défaut vers la DMZ par le pare-feu. Le pare-feu bloquera donc les accès au réseau local à partir de la DMZ pour garantir la sécurité. En cas de compromission d'un des services dans la DMZ, le pirate n'aura accès qu'aux machines de la DMZ et non au réseau local.

Le nom provient à l'origine de la zone coréenne démilitarisée[réf. nécessaire].

La figure ci-contre représente une architecture DMZ avec un pare-feu à trois interfaces. L'inconvénient est que si cet unique pare-feu est compromis, plus rien n'est contrôlé. Il est cependant possible d'utiliser deux pare-feu en cascade afin d'éliminer ce risque. Il existe aussi des architectures de DMZ où celle-ci est située entre le réseau Internet et le réseau local, séparée de chacun de ces réseaux par un pare-feu.

Diagramme: [[1]]

PARE-FEUX:[modifier]

Notion[modifier]

Le pare-feu est jusqu'à ces dernières années considéré comme une des pierres angulaires de la sécurité d'un réseau informatique (il perd en importance au fur et à mesure que les communications basculent vers le HTTP sur TLS, court-circuitant tout filtrage). Il permet d'appliquer une politique d'accès aux ressources réseau (serveurs).

Il a pour principale tâche de contrôler le trafic entre différentes zones de confiance, en filtrant les flux de données qui y transitent. Généralement, les zones de confiance incluent Internet (une zone dont la confiance est nulle) et au moins un réseau interne (une zone dont la confiance est plus importante).

Le but est de fournir une connectivité contrôlée et maîtrisée entre des zones de différents niveaux de confiance, grâce à l'application de la politique de sécurité et d'un modèle de connexion basé sur le principe du moindre privilège.

Le filtrage se fait selon divers critères. Les plus courants sont :

   l'origine ou la destination des paquets (adresse IP, ports TCP ou UDP, interface réseau, etc.) ;
   les options contenues dans les données (fragmentation, validité, etc.) ;
   les données elles-mêmes (taille, correspondance à un motif, etc.) ;
   les utilisateurs pour les plus récents.

Un pare-feu fait souvent office de routeur et permet ainsi d'isoler le réseau en plusieurs zones de sécurité appelées zones démilitarisées ou DMZ. Ces zones sont séparées suivant le niveau de confiance qu'on leur porte.

Enfin, le pare-feu est également souvent situé à l'extrémité de tunnel IPsec ou TLS. L'intégration du filtrage de flux et de la gestion du tunnel est en effet nécessaire pour pouvoir à la fois protéger le trafic en confidentialité et intégrité et filtrer ce qui passe dans le tunnel. C'est le cas notamment de plusieurs produits du commerce nommés dans la liste ci-dessous.

Exemple en images: [[2]] [[3]]

PARE-FEUX en version LIBRE[modifier]

Linux Netfilter/Iptables, pare-feu libre des noyaux Linux 2.4, 2.6, 3.0 et suivants.

   Linux Ipchains, pare-feu libre de l'ancien noyau Linux 2.2.
   Packet Filter ou PF, pare-feu libre de OpenBSD, importé depuis sur les autres BSD.
   IPFilter ou IPF, pare-feu libre de BSD et Solaris 10 et 11.
   Ipfirewall ou IPFW, pare-feu libre de FreeBSD.
   iSafer, pare-feu libre pour Windows

SGBD (SYSTEM de GESTION de BASE de DONNÉES[modifier]

Notion[modifier]

Un système de gestion de base de données (abr. SGBD) est un logiciel système servant à stocker, à manipuler ou gérer, et à partager des données dans une base de données, en garantissant la qualité, la pérennité et la confidentialité des informations, tout en cachant la complexité des opérations.

Un SGBD (en anglais DBMS pour database management system) permet d'inscrire, de retrouver, de modifier, de trier, de transformer ou d'imprimer les informations de la base de données. Il permet d'effectuer des comptes rendus des informations enregistrées et comporte des mécanismes pour assurer la cohérence des informations, éviter des pertes d'informations dues à des pannes, assurer la confidentialité et permettre son utilisation par d'autres logiciels1. Selon le modèle, le SGBD peut comporter une simple interface graphique jusqu'à des langages de programmation sophistiqués1.

Les systèmes de gestion de base de données sont des logiciels universels, indépendants de l'usage qui est fait des bases de données2. Ils sont utilisés pour de nombreuses applications informatiques, notamment les guichets automatiques bancaires, les logiciels de réservation, les bibliothèques numériques, les logiciels d'inventaire, les progiciels de gestion intégrés ou la plupart des blogs et sites web. Il existe de nombreux systèmes de gestion de base de données. En 2008, Oracle détenait près de la moitié du marché des SGBD avec MySQL et Oracle Database. Vient ensuite IBM avec près de 20 %, laissant peu de place pour les autres acteurs3.

Les SGBD sont souvent utilisés par d'autres logiciels ainsi que les administrateurs ou les développeurs. Ils peuvent être sous forme de composant logiciel, de serveur, de logiciel applicatif ou d'environnement de programmation.

En 2011, la majorité des SGBD du marché manipulent des bases de données relationnelles.

But Visé d'une SGBD[modifier]

But visé

Les SGBD sont les logiciels intermédiaires entre les utilisateurs et les bases de données. Une base de données est un magasin de données composé de plusieurs fichiers manipulés exclusivement par le SGBD. Ce dernier cache la complexité de manipulation des structures de la base de données en mettant à disposition une vue synthétique du contenu4.

L'ensemble SGBD et base de données est destiné à permettre le stockage de données d'une manière offrant de nombreux avantages par rapport à un enregistrement conventionnel dans des fichiers. Il permet d'obtenir et de modifier rapidement des données, de les partager entre plusieurs usagers. Il garantit l'absence de redondance, l'intégrité, la confidentialité et la pérennité des données tout en donnant des moyens d'éviter les éventuels conflits de modification et en cachant les détails du format de fichier des bases de données1.

Les données sont enregistrées sous forme de suites de bits représentant des lettres, des nombres, des couleurs, des formes, ... Le SGBD comporte différents mécanismes destinés à retrouver rapidement les données et de les convertir en vue d'obtenir des informations qui aient un sens1.

   à l'aide du SGBD plusieurs usagers et plusieurs logiciels peuvent accéder simultanément aux données. Le SGBD effectue les vérifications pour assurer qu'aucune personne non autorisée n'ait accès à des données confidentielles contenues dans la base de données, il arbitre les collisions lorsqu'il y a plusieurs modifications simultanées de la même information et comporte des mécanismes en vue d'éviter des pertes de données à la suite d'une panne1 ;
   la redondance désigne une situation de présence de plusieurs copies de la même donnée dont la modification peut amener à des incohérences se manifestant par des copies différentes. Le SGBD vérifie - voire refuse - la présence de redondances. Le SGBD effectue également sur demande des vérifications pour assurer que les données introduites soient correctes (valeurs dans les limites admises, format correct) et que les données soient cohérentes par rapport à ce qui se trouve déjà dans la base de données1 ;
   les données sont typiquement manipulées par un logiciel applicatif qui fait appel aux services du SGBD pour manipuler la base de données. Alors qu'un logiciel applicatif qui manipule un fichier tient compte du format de données de ce fichier, un logiciel qui manipule une base de données par l'intermédiaire d'un SGBD n'a pas connaissance du format de la base de données, les données sont présentées par le SGBD sous une forme qui cache les détails du format des fichiers dans lesquels elles sont enregistrées1.

Les SGBD contemporains sont des logiciels sophistiqués nécessitant du personnel hautement qualifié, et leur utilisation entraîne souvent une augmentation substantielle des coûts liés aux licences et à la formation4.

Fonctionnalités d'une SGBD[modifier]

Un SGBD permet d'enregistrer des données, puis de les rechercher, de les modifier et de créer automatiquement des comptes rendus (anglais report) du contenu de la base de données. Il permet de spécifier les types de données, la structure des données contenues dans la base de données, ainsi que des règles de cohérence telles que l'absence de redondance5.

Les caractéristiques des données enregistrées dans la base de données, ainsi que les relations, les règles de cohérence et les listes de contrôle d'accès sont enregistrées dans un catalogue qui se trouve à l'intérieur de la base de données et manipulé par le SGBD5.

Les opérations de recherche et de manipulation des données, ainsi que la définition de leurs caractéristiques, des règles de cohérence et des autorisations d'accès peuvent être exprimées sous forme de requêtes (anglais query) dans un langage informatique reconnu par le SGBD5. SQL est le langage informatique le plus populaire6,7, c'est un langage normalisé de manipulation des bases de données8. Il existe de nombreux autres langages comme le Databasic de Charles Bachman9, Dataflex, dBase ou xBaseScript (etc.).

Les bases de données peuvent être d'une taille de plusieurs téraoctets; une taille supérieure à la place disponible dans la mémoire centrale de l'ordinateur. Les bases de données sont enregistrées sur disque dur, ces derniers ont une capacité supérieure, mais sont moins rapides, et le SGBD est équipé de mécanismes visant à accélérer les opérations5. Les SGBD contemporains enregistrent non seulement les données, mais également leur description, des formulaires, la définition des comptes rendus, les règles de cohérence, des procédures; ils permettent le stockage de vidéos et d'images. Le SGBD manipule les structures complexes nécessaire à la conservation de ces informations4.

Les SGBD sont équipés de mécanismes qui effectuent des vérifications à l'insu de l'utilisateur, en vue d'assurer la réussite des transactions, éviter des problèmes dus aux accès concurrents et assurer la sécurité des données4 :

   transactions : une transaction est une opération unitaire qui transforme le contenu de la base de données d'un état A vers un état B. La transformation peut nécessiter plusieurs modifications du contenu de la base de données. Le SGBD évite qu'il existe des états intermédiaires entre A et B en garantissant que les modifications sont effectuées complètement ou pas du tout. En cas de panne survenue durant des opérations de modification de la base de données, le SGBD remet la base de données dans l'état ou elle était au début de la transaction (état A)5 ;
   concurrence : la base de données peut être manipulée simultanément par plusieurs personnes, et le contrôle de la concurrence vérifie que ces manipulations n'aboutissent pas à des incohérences. Par exemple dans un logiciel de réservation, le SGBD vérifie que chaque place est réservée au maximum par une personne, même si des réservations sont effectuées simultanément5 ;
   sécurité des données : le choix de permettre ou d'interdire l'accès à des données est donné par des listes de contrôle d'accès, et des mécanismes du SGBD empêchent des personnes non autorisées de lire ou de modifier des données pour lesquelles l'accès ne leur a pas été accordé5.

Index (base de données):[modifier]

En informatique, dans les bases de données, un index est une structure de données utilisée et entretenue par le système de gestion de base de données (SGBD) pour lui permettre de retrouver rapidement les données. L'utilisation d'un index simplifie et accélère les opérations de recherche, de tri, de jointure ou d'agrégation effectuées par le SGBD.

L’index placé sur une table va permettre au SGBD d'accéder très rapidement aux enregistrements, selon la valeur d'un ou plusieurs champs.

PRINCIPE:[modifier]

Un index est une structure entretenue automatiquement, qui permet de localiser facilement des enregistrements dans un fichier. L'utilisation des index est basée sur l'observation suivante: pour trouver un livre dans une bibliothèque, au lieu d'examiner un par un chaque livre (ce qui correspond à une recherche séquentielle), il est plus rapide de consulter le catalogue où ils sont classés par thème, auteur et titre1. Chaque entrée d'un index comporte une valeur extraite des données et un pointeur sur son emplacement d'origine. Un enregistrement peut être ainsi facilement retrouvé en recherchant sa localisation dans l'index2.

Un index peut être ordonné, haché, dense ou épars2:

   Un index ordonné contient une liste de valeurs extraites d'une table et triés.
   Dans un index haché les valeurs sont transformées par une fonction de hachage.
   Dans un index dense, la totalité des enregistrements d'une table est référencée.
   Dans un index épars seule une partie des enregistrements est référencée.

L'index primaire d'une table est le premier qui est utilisé pour localiser les enregistrements. Une table peut également contenir des index secondaires en complément de l'index primaire2. Chaque table peut comporter un ou plusieurs index. Un index peut être issu d'un seul champ ou peut combiner plusieurs champs1.

SQL (Structured Query Language):[modifier]

SQL (sigle de Structured Query Language, en français langage de requête structurée) est un langage informatique normalisé servant à exploiter des bases de données relationnelles. La partie langage de manipulation des données de SQL permet de rechercher, d'ajouter, de modifier ou de supprimer des données dans les bases de données relationnelles.

Outre le langage de manipulation des données :

   le langage de définition des données permet de créer et de modifier l'organisation des données dans la base de données,
   le langage de contrôle de transaction permet de commencer et de terminer des transactions,
   le langage de contrôle des données permet d'autoriser ou d'interdire l'accès à certaines données à certaines personnes.

Créé en 1974, normalisé depuis 1986, le langage est reconnu par la grande majorité des systèmes de gestion de bases de données relationnelles (abrégé SGBDR) du marché.

SQL fait partie de la même famille que les langages ALPHA (dont il est le descendant), SQUARE, QUEL (intégré à Ingres) ou QBE (Zloof). Il a été appelé SEQUEL à sa naissance, mais ce nom a été changé en SQL du fait que SEQUEL était une marque déposée de l'avionneur Hawker-Siddeley.

Utilisation[modifier]

Le langage SQL s'utilise principalement de trois manières :

   un programme écrit dans un langage de programmation donné utilise l'interface de programmation du SGBD pour lui transmettre des instructions en langage SQL. Ces programmes utilisent des composants logiciels tels que ODBC ou JDBC. Cette technique est utilisée par l'invite de commande qui permet à un administrateur d'effectuer des opérations sur les bases de données, opérations qu'il décrit en SQL ;
   technique dite embedded SQL : des instructions en langage SQL sont incorporées dans le code source d'un programme écrit dans un autre langage ;
   technique des procédures stockées : des fonctions écrites dans un langage procédural propre à chaque SGBD (PL/SQL pour Oracle, SQL/PSM pour MySQL ...) sont enregistrées dans la base de données en vue d'être exécutées par le SGBD. Cette technique est aussi utilisée pour les triggers - procédures déclenchées automatiquement sur modification du contenu de la base de données.