Aller au contenu principal
Retour à l’accueil

Sécurité & traitement des données — Estimateur FinOps CTN

_CTN Solutions — architecture hébergée (v1). Document destiné aux équipes techniques et sécurité des prospects._

L'estimation FinOps CTN analyse votre facture AWS pour en chiffrer les économies possibles. Elle fonctionne en lecture seule, depuis nos comptes, sans rien installer ni exécuter chez vous. Ce document décrit précisément ce à quoi nous accédons, ce que nous ne pouvons pas faire, où vos données vivent, et comment tout révoquer.

En bref

  • Accès en lecture seule par défaut. Le rôle IAM standard n'autorise que les lectures de coût et de métadonnées énumérées ci-dessous. Le seul bloc de modification possible concerne Compute Optimizer ; il est désactivé par défaut et n'est ajouté qu'après un choix explicite de l'opérateur.
  • Aucune compute chez vous. Nous n'installons aucun agent, aucune Lambda, aucun collecteur dans votre compte. Toute l'analyse s'exécute côté CTN, sous nos propres identifiants, après un AssumeRole sur le rôle que vous contrôlez.
  • Confused-deputy fermé par ExternalId. La relation de confiance impose un sts:ExternalId unique de 128 bits que nous seuls connaissons — un tiers ne peut pas nous tromper pour assumer votre rôle.
  • Suppression à 30 jours des données de travail. Les objets de collecte, findings, rapports, étapes/événements détaillés et jetons de rapport expirent automatiquement. Les fiches prospect et les métadonnées synthétiques de run sont conservées séparément ; elles ne font pas partie de cette promesse d'expiration automatique.
  • Révocation en une commande. Vous supprimez la stack CloudFormation quand vous voulez ; l'accès disparaît immédiatement et définitivement.

Ce que vous déployez

Vous déployez une stack CloudFormation (un lien pré-rempli, deux clics dans votre console AWS) qui crée un seul rôle IAM : CTNFinOpsEstimatorRole. La relation de confiance de ce rôle :

  • fait confiance uniquement au broker de production stable exact arn:aws:iam::077770363028:role/ctn-prod-prospect-access-broker ; aucun principal racine du compte CTN n'est présent ;
  • impose un `sts:ExternalId` obligatoire (secret de 128 bits propre à votre relation), qui ferme la faille du _confused deputy_ : personne d'autre que la pipeline CTN ne peut assumer ce rôle.

Le broker de staging ne peut être ajouté que si le paramètre est activé et si CloudFormation s'exécute dans le compte canari interne Minggle 039320700774. Un compte client externe ne peut donc pas activer cette confiance.

Le nom du rôle est fixe et la liste d'actions est figée. Le SHA-256 du template publié est vérifiable (clés versionnées immuables templates/vX.Y.Z/) — vous auditez exactement ce que vous déployez.

Le périmètre exact (lecture seule)

La politique de permissions par défaut contient exactement 74 entrées d'action en lecture seule, gelées avec les collecteurs de coûts, d'inventaire et les huit vérifications « quick-win » que nous exécutons. Une entrée est le wildcard de lecture contrôlé compute-optimizer:Get* ; les 73 autres sont nommées individuellement. L'option Compute Optimizer ajoute exactement 3 entrées, soit 77 uniquement dans cette configuration explicitement activée :

  • Cost Explorerce:Get*, ce:List* (dépenses par service, recommandations de rightsizing et de Savings Plans), dont la couverture et l'utilisation des engagements : ce:GetSavingsPlansCoverage, ce:GetSavingsPlansUtilization, ce:GetReservationCoverage, ce:GetReservationUtilization (part d'usage non couverte par un Savings Plan / une réservation, et taux d'utilisation de l'engagement souscrit).
  • Cost Optimization Hub / Compute Optimizercost-optimization-hub:ListEnrollmentStatuses, ListRecommendations, GetRecommendation ; compute-optimizer:Get*.
  • EC2 / EBS / réseauec2:Describe* (volumes, snapshots, adresses Elastic IP, instances, passerelles NAT, régions).
  • Load balancerselasticloadbalancing:Describe*.
  • CloudWatchcloudwatch:GetMetricData, ListMetrics (mesures d'inactivité sur 14 jours).
  • CloudWatch Logslogs:DescribeLogGroups (métadonnées des groupes de logs : rétention et volume stocké, pour le constat « rétention illimitée »). Jamais logs:GetLogEvents / logs:FilterLogEvents : aucun contenu de log n'est lu.
  • Inventaire S3 / DynamoDB / EKS — métadonnées uniquement, dont s3:ListBucketMultipartUploads (clés et dates des téléversements incomplets, jamais le contenu des objets ou leurs parties), dynamodb:DescribeTimeToLive (état TTL), eks:ListAddons et eks:DescribeAddon (configuration de l'add-on d'observabilité). Un test mécanique dérive les actions IAM de chaque commande SDK de production exécutée sous le rôle assumé et échoue si l'une d'elles manque au template ; les droits réservés à des collecteurs planifiés sont signalés comme inutilisés sans faire échouer le test.

*Il n'y a pas de `pricing:** dans votre compte : les prix catalogue proviennent d'une table statique côté CTN et d'un GetProducts` mis en cache sous nos identifiants. Nous ne lisons aucune donnée applicative, aucun contenu de bucket S3, aucune base de données, aucun secret. Nous voyons la _forme_ et le _coût_ de votre infrastructure, jamais ce qui tourne dedans.

Ce que le rôle ne peut pas faire

Par défaut, la politique attachée ne contient aucune action mutante. Le rôle ne peut pas : créer, modifier ou supprimer une ressource ; lire le contenu d'un bucket, d'une base ou d'un secret ; lancer ou arrêter une instance ; toucher à l'IAM. Un AssumeRole refusé ou une action hors périmètre est rejeté par AWS, pas par notre bonne volonté.

Une seule option, désactivée par défaut dans le template, le lien pré-rempli et l'interface CTN, peut être activée par un choix explicite de l'opérateur : l'opt-in Compute Optimizer. Elle ajoute uniquement compute-optimizer:UpdateEnrollmentStatus, iam:CreateServiceLinkedRole et iam:PutRolePolicy, ces deux dernières actions étant limitées au rôle lié au service Compute Optimizer. Elle n'active que Compute Optimizer, jamais Cost Optimization Hub.

Coût pour vous

La seule dépense directe dans votre compte vient de l'API Cost Explorer, qu'AWS facture 0,01 $ par page de résultats. Une invocation Lambda est plafonnée à 25 requêtes pour les dépenses/rightsizing historique et 50 requêtes pour le collecteur d'engagements, soit 75 requêtes ou 0,75 $. La machine d'état autorise 2 nouvelles tentatives après l'échec d'une tâche de collecte : le plafond absolu du workflow est donc de 225 requêtes, soit 2,25 $, calculé ainsi : (25 + 50) × (1 tentative initiale + 2 nouvelles tentatives). Ce plafond correspond au chemin d'échec ; une tâche réussie n'est pas rejouée. Les appels AssumeRole et les autres lectures sont gratuits, hors faible tarification propre aux métriques CloudWatch.

Où vivent vos données, et combien de temps

  • Région. La collecte, l'agrégation, la génération des rapports et le stockage côté AWS sont en eu-west-1 (Irlande). Cost Explorer et Cost Optimization Hub sont des services us-east-1 par nature (AWS), interrogés en lecture seule. Les requêtes publiques d'affichage d'un rapport sont traitées par un projet Vercel dédié, qui lit uniquement les enregistrements et objets du rapport dans AWS via un rôle OIDC distinct et limité.
  • Hébergement. L'infrastructure AWS CTN est serverless (Lambda, Step Functions, DynamoDB, S3) et l'interface publique est hébergée sur Vercel. Aucun identifiant de base de données n'existe : l'accès à AWS est entièrement porté par des rôles IAM.
  • Rétention des données de travail. Tous les objets du bucket de findings (résultats de collecte, JSON, HTML et PDF), les lignes détaillées d'étapes/événements, les états d'e-mail et les jetons de rapport expirent à 30 jours via le cycle de vie S3 et DynamoDB TTL. La suppression AWS après expiration est asynchrone, sans garantie d'heure précise. Les fiches prospect et les lignes Run META (identifiants de compte/contact, statut, dates et synthèse) n'ont actuellement pas de TTL et restent dans la console opérateur jusqu'à leur suppression par le processus de gestion de compte CTN. Elles sont explicitement exclues de la promesse d'expiration automatique à 30 jours.
  • Rapport partagé. Votre rapport est accessible via un lien à jeton (≥128 bits, stocké haché en SHA-256), non indexable (X-Robots-Tag: noindex), expirant à 30 jours et révocable à tout moment depuis notre console.

Révoquer l'accès

À tout moment, sans nous prévenir : supprimez la stack CloudFormation. CloudFormation détruit le rôle CTNFinOpsEstimatorRole, l'accès CTN cesse immédiatement et définitivement, et il ne reste rien dans votre compte. Nous recommandons de le faire dès que vous avez reçu votre rapport — l'analyse n'a besoin de l'accès que le temps d'une exécution (moins de 30 minutes).

Vérification du template

  • Publication en attente : v1.3.0 (ce n'est pas encore une version publiée)
  • SHA-256 : ef72cd2aaa1a601206f57d2fb570d743e38312d40e6dee5af296cfa3b27c40b7 — empreinte exacte du candidat v1.3.0 de 35235 octets utilisant les brokers stables. Cette modification source ne revendique aucune publication S3. Les clés des versions précédentes ne sont jamais écrasées.

Avant le déploiement, calculez shasum -a 256 estimator-role.yaml et comparez le résultat à cette valeur.

Résumé pour votre revue sécurité

Résumé pour votre revue sécurité
QuestionRéponse
Type d'accèsRôle IAM, politique par défaut de 74 entrées d'action en lecture seule
Qui exécute quoi, oùCollecte/stockage AWS en eu-west-1 ; requêtes rapport sur Vercel ; rien chez vous
Défense confused-deputysts:ExternalId obligatoire de 128 bits
Données applicatives luesAucune (pas de contenu S3, base, secret)
Actions mutantesAucune par défaut ; opt-in Compute Optimizer explicite et limité
Coût dans votre compte≤ 2,25 $ au pire (225 requêtes CE avec les retries du workflow)
RétentionDonnées de travail : 30 jours ; métadonnées prospect/run : conservation séparée
RévocationSuppression de la stack CloudFormation, effet immédiat
Auditabilité du templateSHA-256 publié, clés versionnées immuables

_Des questions de votre équipe sécurité ? Écrivez à corentin@ctn-solutions.com — nous répondons avec le template complet et la politique IAM exacte._

Prêt à lancer votre estimation ?

L’accès n’est demandé qu’au moment de l’analyse, et vous le révoquez en supprimant la stack. Laissez-nous vos coordonnées, nous revenons vers vous sous 48 h.

Demander une estimation