Skip to content

Commit 679286c

Browse files
authored
Minor updates to policy config and other readme changes (#130)
1 parent 59ba8f2 commit 679286c

12 files changed

Lines changed: 1184 additions & 51 deletions

File tree

MANIFEST.in

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ recursive-include security *.md *.json *.sh
99
# Include documentation
1010
recursive-include docs *.md
1111

12-
# Include example configuration
13-
include cleancloud/cleancloud.yaml
14-
1512
# Exclude test files and caches
1613
global-exclude __pycache__
1714
global-exclude *.py[co]

README.fr.md

Lines changed: 111 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
---
1313

14-
CleanCloud vous indique exactement ce qu'il faut supprimer dans votre cloud — avec le coût par ressource.
14+
CleanCloud vous indique exactement ce qu'il faut supprimer dans votre cloud — avec le coût par ressource. Détecte les ressources IA/ML inactives qui brûlent 500–23 000 $/mois en silence. L'application policy-as-code signifie que les exceptions, les seuils et les règles vivent dans git aux côtés de votre infrastructure.
1515

1616
**Aucun agent. Pas de SaaS. Lecture seule.**
1717

@@ -138,10 +138,10 @@ Pas encore de compte cloud ? `cleancloud demo` affiche un exemple de sortie sans
138138

139139
## Fonctionnalités clés
140140

141+
- **Détection du gaspillage IA/ML sur les 3 clouds :** endpoints SageMaker, clusters AML Compute et endpoints Vertex AI inactifs, facturés 500–23 000 $/mois par ressource en silence. Ressources GPU flaggées risque HIGH. Les outils natifs montrent la facture — CleanCloud indique quel endpoint supprimer. Opt-in via `--category ai`
142+
- **Gouvernance policy-as-code :** `cleancloud.yaml` pour la configuration par règle, les exceptions avec dates d'expiration, les seuils de coût et de confiance, les exclusions par tag — versionné aux côtés de votre infrastructure. Chaque exception est une approbation auditée dans git.
143+
- **Application de politique (opt-in) :** `--fail-on-confidence HIGH` ou `--fail-on-cost 500` — appliquer des seuils de gaspillage en CI/CD sur un planning, géré par les équipes platform ou FinOps
141144
- **33 règles de détection sélectives et haut signal :** volumes orphelins, bases de données inactives, instances arrêtées, registres inutilisés, et plus — conçues pour éviter les faux positifs en environnements IaC, chacune avec une estimation de coût déterministe
142-
- **Détection du gaspillage IA/ML sur les 3 clouds :** endpoints SageMaker inactifs (AWS), clusters AML Compute inactifs (Azure), et endpoints Vertex AI Online Prediction inactifs (GCP). Ressources GPU flaggées risque HIGH. Opt-in via `--category ai` ou `--category all`
143-
- **Gouvernance policy-as-code :** `cleancloud.yaml` pour la configuration par règle, les exceptions avec dates d'expiration, les seuils de coût et de confiance, les exclusions par tag — versionné aux côtés de votre infrastructure
144-
- **Application de politique (opt-in) :** `--fail-on-confidence HIGH` ou `--fail-on-cost 100` — appliquer des seuils de gaspillage sur un planning, géré par les équipes platform ou FinOps
145145
- **Scan multi-comptes (AWS) :** scannez des AWS Organizations entières en une exécution — fichier de config, IDs inline, ou auto-découverte via `--org`
146146
- **Scan multi-abonnements (Azure) :** scannez tous les abonnements Azure en parallèle — auto-découverte via Management Group, détail des coûts par abonnement inclus
147147
- **Scan multi-projets (GCP) :** scannez tous les projets GCP accessibles en parallèle — auto-découverte via Application Default Credentials, détail des coûts par projet inclus
@@ -165,6 +165,8 @@ Entièrement en lecture seule. Sûr pour la production et les environnements ré
165165
| Nomme exactement les ressources à nettoyer || partiel ||
166166
| Estimation de coût déterministe par ressource ||||
167167
| Détecte le gaspillage IA/ML (SageMaker, AML, Vertex AI — dont les endpoints GPU) ||||
168+
| **Policy-as-code (exceptions + seuils dans git)** ||||
169+
| **Approbations d'exceptions auditées dans git** ||||
168170
| Lecture seule, aucun agent ||||
169171
| Fonctionne en environnements air-gapped / réglementés ||||
170172
| Aucun compte SaaS ni accès vendor requis ||||
@@ -189,12 +191,88 @@ Entièrement en lecture seule. Sûr pour la production et les environnements ré
189191
```bash
190192
pipx install cleancloud
191193
cleancloud demo # aucun credential requis
192-
cleancloud scan --provider aws --all-regions
193194
```
194195

196+
**Choisissez votre chemin :**
197+
198+
| Je veux… | Par ici |
199+
|---|---|
200+
| Scanner AWS | [Configuration AWS (politique IAM, régions, multi-comptes) →](docs/aws.md) |
201+
| Scanner Azure | [Configuration Azure (RBAC, abonnements, Workload Identity) →](docs/azure.md) |
202+
| Scanner GCP | [Configuration GCP (IAM, projets, ADC) →](docs/gcp.md) |
203+
| Utiliser en CI/CD | [Guide CI/CD (GitHub Actions, GitLab, codes de sortie) →](docs/ci.md) |
204+
| Supprimer des findings / définir des seuils | [Référence de configuration policy-as-code →](docs/configuration.md) |
205+
| Filtrage par tag, patterns d'exceptions, déploiement progressif | [Bonnes pratiques →](docs/best-practices.md) |
206+
| Scanner plusieurs comptes AWS | [Configuration multi-comptes →](docs/aws.md#multi-account-scanning) |
207+
| Résoudre une erreur | [Dépannage →](docs/troubleshooting.md) |
208+
195209
Pas sûr que vos credentials aient les bonnes permissions ? Lancez d'abord `cleancloud doctor --provider aws`.
196210

197-
Docker, CloudShell, ou problèmes d'installation ? → **[Guide d'installation →](docs/aws.md)**
211+
Docker, CloudShell, ou problèmes d'installation ? → **[Guide de configuration AWS →](docs/aws.md)**
212+
213+
---
214+
215+
## Détection du gaspillage IA/ML
216+
217+
L'infrastructure IA/ML inactive est la source de gaspillage cloud invisible à la croissance la plus rapide. Contrairement au compute ou au stockage, ces ressources facturent à plein tarif même sans aucune activité — les endpoints GPU ne passent pas à zéro.
218+
219+
| Ressource | Coût inactif |
220+
|---|---|
221+
| Endpoint SageMaker (GPU) | 500 – 23 000 $ / mois |
222+
| Cluster AML Compute Azure (GPU) | 600 – 15 000 $ / mois |
223+
| Endpoint Vertex AI Online Prediction (GPU) | 449 – 23 000+ $ / mois |
224+
225+
CleanCloud détecte les endpoints à zéro invocation / zéro prédiction sur les 3 clouds et les signale risque HIGH. Les outils natifs montrent la facture — ils ne vous disent pas *quel endpoint* supprimer.
226+
227+
```bash
228+
cleancloud scan --provider aws --category ai # endpoints SageMaker
229+
cleancloud scan --provider azure --category ai # clusters AML Compute
230+
cleancloud scan --provider gcp --category ai # endpoints Vertex AI
231+
cleancloud scan --provider aws --category all # hygiène + IA/ML ensemble
232+
```
233+
234+
Aucune configuration requise — opt-in avec `--category ai`. Compatible avec les scans multi-comptes et multi-projets :
235+
236+
```bash
237+
cleancloud scan --provider aws --org --all-regions --category all
238+
```
239+
240+
**[Règles IA/ML →](docs/rules.md)**
241+
242+
---
243+
244+
## Gouvernance as Code
245+
246+
Déposez un `cleancloud.yaml` à la racine de votre repo. Chaque exception est une approbation auditée dans git — versionnée aux côtés de votre infrastructure.
247+
248+
```yaml
249+
# cleancloud.yaml
250+
defaults:
251+
confidence: MEDIUM # ignorer les findings à faible signal
252+
min_cost: 10 # ignorer les findings en dessous de 10$/mois
253+
254+
exceptions:
255+
- rule_id: aws.ec2.instance.stopped
256+
resource_id: i-0abc1234567890def
257+
reason: "Bastion host — démarré à la demande"
258+
expires_at: "2026-12-31" # expiration automatique — forçage de révision
259+
260+
- rule_id: aws.rds.instance.idle
261+
resource_id: "db-test-*" # glob — supprime toutes les bases de test
262+
reason: "Les bases de test sont intentionnellement éphémères"
263+
264+
thresholds:
265+
fail_on_confidence: HIGH # exit 2 en CI si un finding HIGH confidence reste
266+
fail_on_cost: 500 # exit 2 si le gaspillage total dépasse 500$/mois
267+
```
268+
269+
Appliquer en CI/CD :
270+
271+
```bash
272+
cleancloud scan --provider aws --org --all-regions # détecte cleancloud.yaml automatiquement
273+
```
274+
275+
**[Référence complète de configuration →](docs/configuration.md)** · [Bonnes pratiques →](docs/best-practices.md)
198276

199277
---
200278

@@ -360,6 +438,31 @@ Guide complet : [Configuration GCP →](docs/gcp.md)
360438

361439
---
362440

441+
## FAQ
442+
443+
**Est-il sûr de l'exécuter en production ?**
444+
Oui. CleanCloud est en lecture seule — il n'appelle que les APIs `List`, `Describe` et `Get`. Aucune écriture, aucune suppression, aucune modification de votre compte cloud.
445+
446+
**CleanCloud envoie-t-il mes données quelque part ?**
447+
Non. Il s'exécute entièrement dans votre environnement. Aucune télémétrie, pas de SaaS, aucune connexion sortante sauf vers les APIs de votre cloud provider.
448+
449+
**Signalera-t-il des ressources gérées par Terraform / CDK ?**
450+
CleanCloud détecte un état réellement inactif (zéro connexion, zéro trafic, zéro invocation) — pas l'existence d'une ressource. Une instance RDS gérée par Terraform avec zéro connexion depuis 30 jours sera quand même signalée. Utilisez le filtrage par tag ou les exceptions pour supprimer les ressources intentionnelles.
451+
452+
**Comment supprimer une ressource spécifique ?**
453+
Deux options : taguez-la avec `cleancloud-ignore: true` (filtrage par tag), ou ajoutez une exception explicite dans `cleancloud.yaml` (policy-as-code). Les exceptions supportent les patterns glob et les dates d'expiration. Voir [Configuration policy-as-code →](docs/configuration.md#exceptions).
454+
455+
**Mon CI échoue sur des findings qui ne m'intéressent pas. Comment corriger ?**
456+
Ne désactivez pas l'application — supprimez le bruit spécifique. Utilisez `min_cost` pour ignorer les findings bon marché, `confidence: MEDIUM` pour ignorer ceux à faible signal, ou ajoutez des exceptions pour les ressources intentionnelles. Voir [Dépannage →](docs/troubleshooting.md).
457+
458+
**Puis-je l'utiliser sans `cleancloud.yaml` ?**
459+
Oui. Sans fichier de config, toutes les règles sont activées avec leurs valeurs par défaut. La config est optionnelle — vous pouvez démarrer avec un simple flag CLI et ajouter une config plus tard.
460+
461+
**Fonctionne-t-il dans des environnements air-gapped / privés ?**
462+
Oui. CleanCloud n'a besoin d'accès réseau qu'aux endpoints API de votre cloud provider. Aucune dépendance externe, aucun téléchargement de paquets lors du scan.
463+
464+
---
465+
363466
## Ce que CleanCloud détecte
364467

365468
33 règles pour AWS, Azure et GCP — conservatives, haut signal, conçues pour éviter les faux positifs en environnements IaC.
@@ -416,6 +519,8 @@ Les règles sans marqueur de confiance sont MEDIUM — elles utilisent des heuri
416519
- [`docs/gcp.md`](docs/gcp.md) — Permissions IAM GCP et configuration Application Default Credentials
417520
- [`docs/ci.md`](docs/ci.md) — Automatisation, scans planifiés et intégration CI/CD
418521
- [`docs/configuration.md`](docs/configuration.md) — Policy-as-code : exceptions, seuils, filtrage par tag
522+
- [`docs/best-practices.md`](docs/best-practices.md) — Stratégie de déploiement, filtrage par tag, patterns d'exceptions
523+
- [`docs/troubleshooting.md`](docs/troubleshooting.md) — Erreurs courantes et solutions
419524
- [`docs/example-outputs.md`](docs/example-outputs.md) — Exemples de sortie complets
420525
- [`SECURITY.md`](SECURITY.md) — Politique de sécurité et modèle de menace
421526
- [`docs/infosec-readiness.md`](docs/infosec-readiness.md) — IAM Proof Pack, modèle de menace

0 commit comments

Comments
 (0)