Numérique et Sciences Informatiques1ère

Sécurité des accès
Exercices corrigés

Maîtrisez la sécurité des accès aux bases de données : authentification, autorisations, rôles, cryptage et bonnes pratiques grâce à ces 5 exercices détaillés.

Concepts & Exercices
Authentification → Autorisation → Audit
Piliers de la sécurité
Authentification
Identifie l'utilisateur (mot de passe, certificat)
Autorisation
Détermine ce que l'utilisateur peut faire
Cryptage
Protège les données sensibles
🔒
Exercice 1
Créer un utilisateur avec des droits limités
Exercice 2
Accorder des privilèges spécifiques à un utilisateur
Exercice 3
Créer un rôle pour gérer les permissions
Exercice 4
Protéger les mots de passe avec hashage
Exercice 5
Configurer l'accès distant sécurisé
Corrigé : Exercices 1 à 3
1 Création d'utilisateur
Définition :

Utilisateur de base de données : Compte qui permet d'accéder à une base de données avec des droits spécifiques.

Méthode de création :
  1. Se connecter en tant qu'administrateur
  2. Créer le nouvel utilisateur avec mot de passe
  3. Configurer les options de sécurité
  4. Accorder les privilèges nécessaires
-- Connexion en tant qu'administrateur -- Création d'un utilisateur avec droits limités CREATE USER 'lecteur'@'localhost' IDENTIFIED BY 'MotDePasse123!'; -- Application de restrictions RENAME USER 'lecteur'@'localhost' TO 'lecteur'@'localhost'; SET PASSWORD FOR 'lecteur'@'localhost' = PASSWORD('MotDePasse123!');
Étape 1 : Création de l'utilisateur

On utilise CREATE USER 'lecteur'@'localhost' pour créer le compte

Étape 2 : Attribution du mot de passe

On spécifie un mot de passe fort avec IDENTIFIED BY

Étape 3 : Limitation de l'accès

L'utilisateur ne peut se connecter que depuis localhost

Réponse finale :

Utilisateur 'lecteur' créé avec accès local et mot de passe sécurisé

Règles appliquées :

Principe de moindre privilège : Accorder uniquement les droits nécessaires

Mot de passe fort : Longueur, majuscules, minuscules, chiffres et caractères spéciaux

Restriction géographique : Limiter l'accès à certaines IP ou hôtes

2 Attribution de privilèges
Définition :

Privilèges : Permissions spécifiques accordées à un utilisateur pour effectuer certaines actions sur des objets de la base.

-- Attribution de privilèges spécifiques GRANT SELECT ON base_donnees.clients TO 'lecteur'@'localhost'; GRANT SELECT ON base_donnees.commandes TO 'lecteur'@'localhost'; -- Revocation de privilèges REVOKE INSERT, UPDATE, DELETE ON base_donnees.clients FROM 'lecteur'@'localhost'; -- Verification des privilèges SHOW GRANTS FOR 'lecteur'@'localhost';
Étape 1 : Attribution des droits de lecture

On accorde SELECT sur les tables spécifiques

Étape 2 : Restriction des droits d'écriture

On retire les droits INSERT, UPDATE, DELETE pour protéger les données

Étape 3 : Vérification des permissions

On utilise SHOW GRANTS pour confirmer les droits accordés

Réponse finale :

Utilisateur 'lecteur' autorisé uniquement en lecture sur certaines tables

Règles appliquées :

SELECT seulement : L'utilisateur ne peut modifier les données

Restriction granulaire : Droits accordés sur des objets spécifiques

Vérification continue : Vérifier régulièrement les permissions

3 Création de rôle
Définition :

Rôle : Ensemble prédéfini de privilèges pouvant être assigné à plusieurs utilisateurs.

-- Création d'un rôle pour les analystes CREATE ROLE 'analyste'; -- Attribution de privilèges au rôle GRANT SELECT ON base_donnees.* TO 'analyste'; GRANT USAGE ON *.* TO 'analyste'; -- Attribution du rôle à un utilisateur GRANT 'analyste' TO 'marie'@'localhost'; -- Activation du rôle pour la session SET DEFAULT ROLE 'analyste' FOR 'marie'@'localhost';
Étape 1 : Création du rôle

On crée un rôle 'analyste' pour regrouper les permissions

Étape 2 : Attribution des privilèges

On accorde les droits SELECT sur toutes les tables de la base

Étape 3 : Attribution du rôle

On assigne le rôle à l'utilisateur 'marie'

Étape 4 : Activation du rôle

On configure le rôle par défaut pour l'utilisateur

Réponse finale :

Rôle 'analyste' créé et attribué à l'utilisateur 'marie'

Règles appliquées :

Gestion centralisée : Les rôles facilitent la gestion des droits

Scalabilité : Ajouter un utilisateur à un rôle est plus efficace que d'attribuer individuellement

Maintenance : Modifier un rôle met à jour les droits de tous ses membres

Corrigé : Exercices 4 à 5
4 Protection des mots de passe
Définition :

Hashage : Processus de transformation d'un mot de passe en une chaîne de caractères unique et irreversible.

-- Stockage sécurisé des mots de passe dans une application -- Exemple en Python import hashlib import bcrypt # Hashage avec SHA-256 mot_de_passe = "MotDePasse123!" hash_sha256 = hashlib.sha256(mot_de_passe.encode()).hexdigest() # Hashage avec bcrypt (recommandé) mot_de_passe_bytes = mot_de_passe.encode('utf-8') sel = bcrypt.gensalt() hash_bcrypt = bcrypt.hashpw(mot_de_passe_bytes, sel) # Vérification du mot de passe def verifier_mot_de_passe(entree_utilisateur, hash_stocke): return bcrypt.checkpw(entree_utilisateur.encode('utf-8'), hash_stocke)
Étape 1 : Choix de l'algorithme

On utilise bcrypt car plus sécurisé que SHA-256 pour les mots de passe

Étape 2 : Hashage avec sel

On génère un sel aléatoire pour chaque mot de passe

Étape 3 : Vérification sécurisée

On compare le hash de l'entrée utilisateur avec le hash stocké

Réponse finale :

Mot de passe hashé et vérifié de manière sécurisée

Règles appliquées :

Salage : Chaque mot de passe doit être salé pour éviter les attaques par rainbow tables

Algorithme approprié : bcrypt, Argon2 ou PBKDF2 sont préférables à SHA-256

Jamais en clair : Les mots de passe ne doivent jamais être stockés en clair

5 Accès distant sécurisé
Définition :

Connexion sécurisée : Méthodes permettant d'accéder à une base de données distante sans compromettre la sécurité.

-- Configuration SSL pour MySQL [mysqld] ssl-ca=/chemin/ca-cert.pem ssl-cert=/chemin/server-cert.pem ssl-key=/chemin/server-key.pem -- Dans l'application, forcer SSL mysql -u utilisateur -p --ssl-mode=REQUIRED --ssl-ca=/chemin/ca-cert.pem -- Création d'utilisateur pour accès distant CREATE USER 'admin_dist'@'192.168.1.%' IDENTIFIED BY 'MotDePasse123!' REQUIRE SSL; -- Revocation des accès non sécurisés REVOKE ALL PRIVILEGES ON *.* FROM 'admin_dist'@'%'; GRANT SELECT, INSERT ON base_donnees.* TO 'admin_dist'@'192.168.1.%'; FLUSH PRIVILEGES;
Étape 1 : Configuration SSL

On active SSL sur le serveur MySQL avec des certificats valides

Étape 2 : Création utilisateur distant

On crée un utilisateur avec REQUIRE SSL pour forcer la connexion chiffrée

Étape 3 : Restriction des droits

On accorde uniquement les droits nécessaires et on révoque les accès non sécurisés

Réponse finale :

Accès distant sécurisé avec SSL et droits restreints

Règles appliquées :

Chiffrement obligatoire : Toutes les communications doivent être chiffrées

Restriction IP : Limiter l'accès aux plages IP autorisées

Moindre privilège : Accorder uniquement les droits strictement nécessaires

Cours bien détaillé
Authentification → Autorisation → Audit
Cycle de sécurité
🎯
Authentification : Processus de vérification de l'identité d'un utilisateur.
📏
Autorisation : Attribution des droits spécifiques à un utilisateur identifié.
📐
Chiffrement : Protection des données en transit et au repos.
📝
Audit : Surveillance et journalisation des accès pour la sécurité.
💡
Conseil : Toujours utiliser des mots de passe forts et les hacher
🔍
Attention : Ne jamais accorder plus de droits que nécessaire
Astuce : Utiliser des rôles pour gérer les permissions de manière centralisée
📋
Méthode : Activer SSL/TLS pour les connexions distantes
Vérification : Auditer régulièrement les droits et accès des utilisateurs
Bonnes pratiques :
  • Mots de passe : Longueur minimale de 12 caractères avec diversité
  • Revues de sécurité : Vérifier régulièrement les droits des utilisateurs
  • Journalisation : Activer les logs pour surveiller les accès
  • Isolation : Séparer les environnements de production et de développement
Règles fondamentales :
  • Le principe de moindre privilège doit être appliqué à chaque utilisateur
  • Les mots de passe doivent être hachés et salés, jamais stockés en clair
  • Les connexions distantes doivent être chiffrées avec SSL/TLS
  • Les rôles facilitent la gestion des droits de manière scalable
CREATE USER
Crée un nouvel utilisateur de base de données
GRANT/REVOKE
Accorde ou retire des privilèges
REQUIRE SSL
Force l'utilisation de la connexion sécurisée
Sécurité des accès Applications pratiques