seize-infra-doc/scripts/furious-to-zitadel/README.md
Hedi Kalboussi 1e90a85359 Documentation initiale infra Seize — passation J7
- 6 docs racine (README, HANDOVER, ARCHITECTURE, DECISIONS, INSTALL, OPERATIONS)
- 9 docs thématiques dans docs/
- 10 templates docker-compose dans configs/
- 7 scripts Python/Shell d'import Furious vers Zitadel
- 2 matrices RBAC

Etat infra au 5 juin 2026 :
- 88 users Furious importes dans Zitadel
- 8 roles RBAC crees et attribues
- Intranet filtre les cartes selon role (Approche A)
- 7 outils SSO operationnels
2026-06-05 17:49:43 +00:00

3.6 KiB

Scripts d'import Furious → Zitadel

Scripts Python/Shell pour l'import automatisé des collaborateurs Seize depuis Furious Squad vers Zitadel.


📁 Liste des scripts

Fichier Type Description
read-all-users.sh Shell Récupère les users depuis Furious API → JSON
test-auth.sh Shell Teste l'auth Furious
import-furious-to-zitadel.py Python Script principal d'import
merge-duplicates.py Python Fusion des doublons après import
generate-roles-mapping.py Python Génère le mapping email → rôle
assign-roles.py Python Attribue les rôles RBAC dans Zitadel
extract-distribution-csv.py Python Génère le CSV pour distribution Teams

🔧 Setup initial

1. Environnement Python

cd ~/furious-to-zitadel
python3 -m venv venv
source venv/bin/activate
pip install requests pyjwt cryptography

2. Fichier .env

FURIOUS_USERNAME=__creer_dans_furious_config__
FURIOUS_PASSWORD=__creer_dans_furious_config__
FURIOUS_API_URL=https://seize-consulting.furious-squad.com/api/v2

chmod 600 .env

3. Clé service account Zitadel

Voir docs/06-import-furious.md.

Placer le fichier dans le dossier sous le nom zitadelfuriousimportkey.json avec chmod 600.


🚀 Procédure complète

cd ~/furious-to-zitadel
source venv/bin/activate

# 1. Lire les users Furious
./read-all-users.sh

# 2. Test dry-run
python3 import-furious-to-zitadel.py --mode dry-run

# 3. Test sur 3 users
python3 import-furious-to-zitadel.py --mode test

# 4. Vérification dans Zitadel UI

# 5. Import production (les 85 restants)
python3 import-furious-to-zitadel.py --mode prod

# 6. Gérer les doublons (adapter DUPLICATES dans le script avant)
nano merge-duplicates.py
python3 merge-duplicates.py

# 7. Extraire CSV de distribution
python3 extract-distribution-csv.py

# 8. Générer le mapping pour RBAC intranet
python3 generate-roles-mapping.py

# 9. Attribuer les rôles RBAC
python3 assign-roles.py

# 10. Copier le mapping vers l'intranet
cp roles-mapping.json ~/docker/intranet/
cd ~/docker/intranet
docker compose down
docker compose up -d

⚠️ Fichiers générés (sensibles)

Ces fichiers contiennent des données sensibles, à protéger :

Fichier Contenu Action
furious-users-raw.json Toutes les infos Furious des collaborateurs chmod 600, ne pas commit
users-credentials.csv 89 lignes avec mdp temporaires chmod 600, supprimer après distribution
distribution-teams.csv 88 lignes (Nom, Email, Mdp) pour Teams chmod 600, supprimer après distribution
roles-mapping.json Mapping email → rôle OK à partager avec le mainteneur
zitadelfuriousimportkey.json Clé privée RSA service account chmod 600, ne JAMAIS partager
import.log Logs de l'import (peut contenir des emails) chmod 600

🔄 Synchronisation continue (à mettre en place)

Voir docs/06-import-furious.md section "Synchronisation périodique".

Idée : workflow n8n quotidien à 3h du matin qui :

  1. Compare la liste Furious vs Zitadel
  2. Crée les nouveaux
  3. Désactive les départs
  4. Met à jour les rôles

⏱️ ~1 journée de dev.


📚 Voir aussi