#!/bin/bash # Script pour configurer l'accès à la base de données des adresses # avec segmentation par environnement basée sur les plages d'IPs echo "Configuration de l'accès à la base de données des adresses" echo "==========================================================" echo "" echo "Architecture des IPs par environnement :" echo "- DÉVELOPPEMENT : 13.23.33.40-49 (13.23.33.4%)" echo "- RECETTE : 13.23.33.30-39 (13.23.33.3%)" echo "- PRODUCTION : 13.23.33.20-29 (13.23.33.2%)" echo "" # Fonction pour créer l'utilisateur sur un container create_user_on_container() { local container=$1 local ip_pattern=$2 local env_name=$3 echo "" echo "Configuration pour $env_name ($container)..." echo "Pattern IP autorisé : $ip_pattern" # Se connecter au container MariaDB et créer l'utilisateur incus exec $container -- mysql -u root -p -e " -- Créer l'utilisateur pour l'accès depuis la plage IP de l'environnement CREATE USER IF NOT EXISTS 'adresses_user'@'$ip_pattern' IDENTIFIED BY 'd66,AdrGeo.User'; GRANT SELECT ON adresses.* TO 'adresses_user'@'$ip_pattern'; -- Créer aussi un utilisateur localhost pour les tests directs CREATE USER IF NOT EXISTS 'adresses_user'@'localhost' IDENTIFIED BY 'd66,AdrGeo.User'; GRANT SELECT ON adresses.* TO 'adresses_user'@'localhost'; FLUSH PRIVILEGES; -- Vérifier SELECT user, host FROM mysql.user WHERE user = 'adresses_user' ORDER BY host; " if [ $? -eq 0 ]; then echo "✓ Utilisateur créé sur $container" else echo "✗ Erreur lors de la création sur $container" fi } # Fonction pour tester la connexion test_connection() { local api_container=$1 local maria_ip=$2 local env_name=$3 echo "" echo "Test de connexion $env_name : $api_container -> $maria_ip..." incus exec $api_container -- mysql -h $maria_ip -u adresses_user -p'd66,AdrGeo.User' -e " SELECT CONCAT('Connexion réussie depuis ', @@hostname, ' vers ', '$maria_ip') as Status; SELECT DATABASE(); SHOW TABLES FROM adresses LIMIT 3; " 2>/dev/null if [ $? -eq 0 ]; then echo "✓ Connexion réussie!" else echo "✗ Échec de la connexion" fi } # Menu de sélection echo "" echo "Que voulez-vous configurer ?" echo "1. Environnement DÉVELOPPEMENT uniquement (dva-maria)" echo "2. Environnement RECETTE uniquement (rca-maria)" echo "3. Environnement PRODUCTION uniquement (pra-maria)" echo "4. Tous les environnements" echo "" read -p "Votre choix (1-4): " choice case $choice in 1) create_user_on_container "dva-maria" "13.23.33.4%" "DÉVELOPPEMENT" ;; 2) create_user_on_container "rca-maria" "13.23.33.3%" "RECETTE" ;; 3) create_user_on_container "pra-maria" "13.23.33.2%" "PRODUCTION" ;; 4) create_user_on_container "dva-maria" "13.23.33.4%" "DÉVELOPPEMENT" create_user_on_container "rca-maria" "13.23.33.3%" "RECETTE" create_user_on_container "pra-maria" "13.23.33.2%" "PRODUCTION" ;; *) echo "Choix invalide" exit 1 ;; esac # Tests de connexion echo "" echo "==========================================================" echo "Tests de connexion" echo "==========================================================" read -p "Voulez-vous tester les connexions? (o/n): " test_choice if [ "$test_choice" = "o" ]; then case $choice in 1) test_connection "dva-api" "13.23.33.46" "DÉVELOPPEMENT" ;; 2) test_connection "rca-api" "13.23.33.36" "RECETTE" ;; 3) test_connection "pra-api" "13.23.33.26" "PRODUCTION" ;; 4) test_connection "dva-api" "13.23.33.46" "DÉVELOPPEMENT" test_connection "rca-api" "13.23.33.36" "RECETTE" test_connection "pra-api" "13.23.33.26" "PRODUCTION" ;; esac fi echo "" echo "Configuration terminée!" echo "" echo "Récapitulatif de la sécurité mise en place :" echo "- Chaque environnement a sa propre plage d'IPs autorisée" echo "- DÉVELOPPEMENT : seuls les containers en 13.23.33.4x peuvent accéder à dva-maria" echo "- RECETTE : seuls les containers en 13.23.33.3x peuvent accéder à rca-maria" echo "- PRODUCTION : seuls les containers en 13.23.33.2x peuvent accéder à pra-maria" echo "" echo "Cela empêche un container de DEV d'accéder aux données de PROD par exemple."