Files
geo/api/scripts/setup_addresses_access_by_env.sh
Pierre 0687900564 fix: Récupérer l'opération active depuis la table operations
- Corrige l'erreur SQL 'Unknown column fk_operation in users'
- L'opération active est récupérée depuis operations.chk_active = 1
- Jointure avec users pour filtrer par entité de l'admin créateur
- Query: SELECT o.id FROM operations o INNER JOIN users u ON u.fk_entite = o.fk_entite WHERE u.id = ? AND o.chk_active = 1
2026-01-26 16:57:08 +01:00

136 lines
4.4 KiB
Bash
Executable File

#!/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."