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

126 lines
3.6 KiB
Markdown

# 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
```bash
cd ~/furious-to-zitadel
python3 -m venv venv
source venv/bin/activate
pip install requests pyjwt cryptography
```
### 2. Fichier `.env`
```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](../../docs/06-import-furious.md).
Placer le fichier dans le dossier sous le nom `zitadelfuriousimportkey.json` avec `chmod 600`.
---
## 🚀 Procédure complète
```bash
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](../../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
- [docs/06-import-furious.md](../../docs/06-import-furious.md) — Doc complète de l'import
- [docs/07-rbac-intranet.md](../../docs/07-rbac-intranet.md) — Suite : attribution des rôles
- [matrices/job-title-to-role.csv](../../matrices/job-title-to-role.csv) — Matrice de mapping