Files
gestion-certificats2/mysql/init.sql
2025-06-14 19:03:54 +02:00

55 lines
3.4 KiB
SQL

-- Script d'initialisation de la base de données MySQL
-- Ce script est exécuté automatiquement par le conteneur MySQL au premier démarrage.
-- Création de la base de données si elle n'existe pas
CREATE DATABASE IF NOT EXISTS `cert_gestion` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Utilisation de la base de données
USE `cert_gestion`;
-- Table pour stocker les informations des utilisateurs
CREATE TABLE IF NOT EXISTS `users` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`username` VARCHAR(255) UNIQUE NOT NULL, -- Nom d'utilisateur unique
`password` VARCHAR(255) NOT NULL, -- Mot de passe haché
`role` ENUM('admin', 'user') DEFAULT 'user', -- Rôle de l'utilisateur (admin ou utilisateur simple)
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- Date de création du compte
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Table pour stocker les périmètres fonctionnels
CREATE TABLE IF NOT EXISTS `functional_perimeters` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) UNIQUE NOT NULL, -- Nom unique du périmètre fonctionnel
`intermediate_cert_name` VARCHAR(255) UNIQUE NOT NULL, -- Nom du fichier du certificat intermédiaire associé
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- Date de création du périmètre
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Table pour stocker les informations sur les certificats
CREATE TABLE IF NOT EXISTS `certificates` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) UNIQUE NOT NULL, -- Nom du fichier du certificat (ex: www.example.com.pem)
`type` ENUM('root', 'intermediate', 'simple') NOT NULL, -- Type de certificat
`functional_perimeter_id` INT NULL, -- Clé étrangère vers functional_perimeters (NULL pour le certificat root)
`expiration_date` DATETIME NOT NULL, -- Date d'expiration du certificat
`is_revoked` BOOLEAN DEFAULT FALSE, -- Indique si le certificat est révoqué
`revoked_at` DATETIME NULL, -- Date de révocation si révoqué
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Date de création du certificat
FOREIGN KEY (`functional_perimeter_id`) REFERENCES `functional_perimeters`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Table pour historiser les actions des utilisateurs
CREATE TABLE IF NOT EXISTS `action_logs` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`user_id` INT NOT NULL, -- ID de l'utilisateur qui a effectué l'action
`action_type` VARCHAR(50) NOT NULL, -- Type d'action (ex: 'login', 'create_cert', 'revoke_cert', 'create_user')
`description` TEXT NOT NULL, -- Description détaillée de l'action
`ip_address` VARCHAR(45) NOT NULL, -- Adresse IP de l'utilisateur
`action_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Date et heure de l'action
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Note sur l'initialisation du premier administrateur et du certificat root:
-- La création du premier compte administrateur et du certificat root
-- sera gérée par l'application PHP au premier lancement pour des raisons de flexibilité et de sécurité.
-- Le mot de passe de l'administrateur sera haché par l'application PHP.