You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.fr.md
+60-3Lines changed: 60 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,8 +23,9 @@ Hygiène cloud en lecture seule pour les environnements réglementés & souverai
23
23
CleanCloud scanne votre environnement cloud et rapporte ce qui gaspille de l'argent. Exécutez-le une fois pour un audit ponctuel, planifiez-le, ou intégrez-le en CI/CD pour bloquer les builds sur des violations de politique.
24
24
25
25
-**20 règles de détection haut signal :** volumes orphelins, bases de données inactives, load balancers vides, et plus
26
-
-**Gaspillage mensuel estimé :** par finding et en agrégat
27
-
-**Scan multi-comptes :** scannez des AWS Organizations entières en quelques minutes — fichier de config, IDs inline, ou auto-découverte via `--org`
26
+
-**Gaspillage mensuel estimé :** par finding et en agrégat, détaillé par compte et abonnement
27
+
-**Scan multi-comptes (AWS) :** scannez des AWS Organizations entières en quelques minutes — fichier de config, IDs inline, ou auto-découverte via `--org`
28
+
-**Scan multi-abonnements (Azure) :** scannez tous les abonnements Azure en parallèle avec une seule identité — auto-découverte via Management Group ou tous les accessibles — détail des coûts par abonnement inclus
28
29
-**Application de politique CI/CD (opt-in) :**`--fail-on-confidence HIGH` ou `--fail-on-cost 100` gate votre pipeline
29
30
-**Formats de sortie multiples :** lisible, JSON, CSV, et markdown (à coller dans vos PRs GitHub ou Slack)
30
31
-**Lecture seule par conception :** aucune suppression, aucune modification de tags, aucune mutation — jamais
> En CI/CD, `aws-actions/configure-aws-credentials` définit les variables `AWS_*` sur le runner — passez-les avec `-e VAR_NAME` et elles sont transmises au conteneur automatiquement. Voir [Guide CI/CD →](docs/ci.md#using-the-docker-image)
142
+
128
143
Prêt à scanner votre vrai environnement ? Authentifiez-vous d'abord, puis lancez :
129
144
130
145
```bash
@@ -385,12 +400,54 @@ Guide complet (politique IAM, trust policy, templates IaC) : [Configuration mult
385
400
386
401
---
387
402
403
+
## Scan multi-abonnements (Azure)
404
+
405
+
Conçu pour les entreprises gérant de grands tenants Azure. Scannez chaque abonnement en parallèle avec une seule identité — findings agrégés dans un rapport unique avec détail des coûts par abonnement.
406
+
407
+
```bash
408
+
# Scanner tous les abonnements accessibles (défaut)
-**Modèle d'identité plat** — un seul service principal, Reader au niveau du Management Group. Pas d'assumption de rôle inter-abonnements, pas de complexité hub-and-spoke.
437
+
-**Trois modes de découverte** — tous les accessibles (défaut), `--management-group` pour l'auto-découverte, `--subscription` pour un contrôle explicite.
438
+
-**Parallèle avec isolation** — chaque abonnement s'exécute dans son propre thread. Un abonnement en échec (permission refusée, timeout) n'affecte jamais les autres.
439
+
-**Gestion gracieuse des permissions** — les règles échouant avec 403 sont signalées comme ignorées (avec la permission manquante nommée), pas comme des échecs de scan.
440
+
-**Détail des coûts par abonnement** — la sortie indique le gaspillage mensuel estimé par abonnement pour identifier précisément lequel est problématique.
Copy file name to clipboardExpand all lines: README.md
+60-3Lines changed: 60 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,8 +23,9 @@ Read-only cloud hygiene for regulated & sovereign environments.
23
23
CleanCloud scans your cloud environment and reports what's wasting money. Run it once for a quick audit, schedule it, or wire it into CI/CD to fail builds on policy violations.
24
24
25
25
-**20 high-signal detection rules:** orphaned volumes, idle databases, empty load balancers, and more
26
-
-**Estimated monthly waste:** per finding and aggregate
27
-
-**Multi-account scanning:** scan entire AWS Organizations in minutes — config file, inline IDs, or auto-discovery via `--org`
26
+
-**Estimated monthly waste:** per finding and aggregate, broken down per account and subscription
27
+
-**Multi-account scanning (AWS):** scan entire AWS Organizations in minutes — config file, inline IDs, or auto-discovery via `--org`
28
+
-**Multi-subscription scanning (Azure):** scan all Azure subscriptions in parallel with one identity — auto-discovery via Management Group or all accessible — per-subscription cost breakdown included
28
29
-**CI-native enforcement (opt-in):**`--fail-on-confidence HIGH` or `--fail-on-cost 100` gates your pipeline
29
30
-**Multiple output formats:** human-readable, JSON, CSV, and markdown (paste into GitHub PRs or Slack)
30
31
-**Read-only by design:** no deletions, no tag changes, no mutations — ever
@@ -92,8 +93,18 @@ cleancloud demo # see sample findings without any cloud credentials
92
93
```bash
93
94
docker pull getcleancloud/cleancloud
94
95
docker run --rm getcleancloud/cleancloud demo
96
+
97
+
# With AWS credentials (Docker doesn't inherit local ~/.aws automatically)
> In CI/CD, `aws-actions/configure-aws-credentials` sets `AWS_*` env vars on the runner — pass them with `-e VAR_NAME` and they forward into the container automatically. See [CI/CD guide →](docs/ci.md#using-the-docker-image)
107
+
97
108
When you're ready to scan your real environment, authenticate first — then run:
98
109
99
110
```bash
@@ -124,6 +135,10 @@ Not sure if your credentials have the right permissions? Run `cleancloud doctor
124
135
--concurrency N Parallel accounts (default: 3)
125
136
--timeout SECONDS Total scan timeout in seconds (default: 3600)
126
137
138
+
# Multi-subscription — Azure only (optional)
139
+
--management-group ID Scan all subscriptions under a Management Group
140
+
--subscription ID Scan a single subscription (default: all accessible)
141
+
127
142
# Output (optional)
128
143
--output human|json|csv|markdown Output format (default: human)
129
144
--output-file FILE Write output to file instead of stdout
@@ -387,12 +402,54 @@ Full setup guide (IAM policy, trust policy, IaC templates): [AWS multi-account s
387
402
388
403
---
389
404
405
+
## Multi-Subscription Scanning (Azure)
406
+
407
+
Built for enterprises running large Azure tenants. Scan every subscription in parallel with one identity — findings aggregated into one report with a per-subscription cost breakdown.
408
+
409
+
```bash
410
+
# Scan all subscriptions the service principal can access (default)
-**Flat identity model** — one service principal, Reader at Management Group level. No cross-subscription role assumption, no hub-and-spoke complexity.
439
+
-**Three discovery modes** — all accessible (default), `--management-group` for auto-discovery, `--subscription` for explicit control.
440
+
-**Parallel with isolation** — each subscription runs in its own thread. One subscription failing (permission denied, timeout) never affects the others.
441
+
-**Graceful permission handling** — rules that fail with 403 are reported as skipped (with the missing permission named), not as scan failures.
442
+
-**Per-subscription cost breakdown** — output shows estimated monthly waste per subscription so you can see exactly which subscription is dirty.
0 commit comments