# Les actions liées aux coûts cloud des agents IA nécessitent une limite stricte

Un agent IA peut lire une facture cloud, regrouper les ressources inutilisées et estimer une possibilité d'économie avec peu de risques. La situation change lorsqu'il redimensionne une base de données, achète une réservation, déplace une relation de facturation ou ferme un compte. Ces actions modifient l'argent, la capacité de service, les engagements contractuels ou les possibilités de récupération. Elles nécessitent une limite que ne demande pas un simple rapport utile.

Les équipes commettent souvent cette erreur parce que les API cloud placent les rapports et les modifications derrière la même identité. Un agent reçoit un jeton étendu pour pouvoir examiner les coûts, puis quelqu'un lui demande d'« appliquer les économies évidentes ». Le modèle d'autorisation qui en résulte demande à l'agent de décider où s'arrête l'analyse et où commence l'autorité. Ne déléguez pas cette distinction à un modèle.

## Les rapports ne doivent pas donner le droit de dépenser

Un rapport de coûts explique ce qui s'est passé ou ce qui pourrait se produire. Une opération qui modifie les dépenses crée un nouveau fait dans le compte du fournisseur. Placez ces deux tâches derrière des identifiants distincts, des outils distincts, ou les deux.

Un agent peut produire une liste de candidats sans danger lorsqu'il lit les exports de facturation, les métriques d'utilisation, l'inventaire et les données tarifaires. Sa sortie doit indiquer les éléments qui l'étayent et les informations manquantes. Elle ne doit pas transformer silencieusement un candidat en requête d'API parce qu'une économie prévue dépasse un certain seuil.

La distinction est brouillée par des commandes aux noms rassurants. Un point d'accès de « recommandation » peut créer un export. Un point d'accès d'« engagement » peut établir un devis, acheter, modifier ou annuler selon la valeur d'un seul champ. Une demande de capacité peut être une estimation chez un fournisseur et une modification contraignante chez un autre. Consultez la documentation de référence de l'API du fournisseur pour connaître l'opération exacte, plutôt que de vous fier au libellé affiché au-dessus d'un bouton dans la console.

Les recommandations Cloud FinOps de la FinOps Foundation distinguent les activités d'information, d'optimisation et d'exploitation. C'est un modèle métier utile, mais il ne crée pas de modèle d'autorisation. Une personne ou un agent peut informer sans avoir la permission d'exploiter. Traitez cet écart comme un choix de conception délibéré, pas comme de la paperasse.

Donnez au volet des rapports un contrat limité. Il peut demander une période définie, des comptes nommés, des régions nommées et un type de rapport. Il renvoie les chiffres avec leurs unités et leur provenance. Un outil doit refuser une requête illimitée comme « afficher tous les enregistrements de facturation » lorsque la tâche concerne un seul compte de production.

Un rapport doit aussi fournir assez de contexte pour éviter une fausse confiance. Conservez au minimum :

- le périmètre du compte de facturation ou du projet
- la période et la fraîcheur des données
- la devise, la base tarifaire et la présence éventuelle des taxes ou crédits
- les identifiants des ressources à l'origine de chaque recommandation
- les hypothèses utilisées pour une prévision

Ce n'est pas de la bureaucratie. Un coût mensuel amorti et une dépense quotidienne en espèces peuvent tous deux être exacts, tout en conduisant à des conclusions opposées sur un engagement proposé.

## Classez l'action selon ses conséquences, pas selon le verbe de l'API

Un verbe comme `update` ne vous apprend presque rien sur le risque. Classez une action liée aux coûts cloud selon ce qu'elle modifie, l'étendue de son effet et la difficulté à l'annuler.

J'utilise quatre catégories. La première regroupe les observations : lister les ressources, récupérer les factures, consulter l'utilisation et générer une prévision. La deuxième regroupe les modifications locales réversibles : ajuster le seuil minimal de mise à l'échelle automatique ou modifier la taille d'un worker non critique lorsque l'équipe dispose d'un retour en arrière testé. La troisième regroupe les engagements encadrés : acheter une réservation, modifier un savings plan, déplacer une ressource vers une autre formule tarifaire ou modifier une alerte budgétaire. La quatrième regroupe les actions destructrices ou de gouvernance : supprimer des exports de facturation, retirer des contrôles de paiement, transférer la propriété, supprimer des ressources partagées et fermer un compte.

Les deux catégories intermédiaires provoquent le plus de mauvaises décisions. Les équipes qualifient un redimensionnement de réversible parce qu'elles peuvent envoyer une autre requête de redimensionnement. Elles oublient le temps de redémarrage, les limites de capacité, la disponibilité des familles d'instances, les disques locaux et les applications qui supposent l'ancienne configuration. Elles parlent d'une réservation comme d'un achat parce que la console affiche « acheter ». C'est aussi une prévision de l'utilisation future éligible, à laquelle s'ajoutent une durée et une obligation de paiement.

Utilisez une fiche de conséquences avant qu'un agent puisse appeler une opération de modification. Cette fiche doit indiquer la cible, l'effet attendu sur les coûts, l'effet sur le service, la méthode de récupération et l'approbation humaine requise. Un JSON simple suffit :

```json
{
  "action": "resize_compute_group",
  "scope": {
    "billing_account": "finance-prod",
    "region": "eu-west-1",
    "resource_group": "batch-workers"
  },
  "before": {"instance_type": "c6i.2xlarge", "minimum": 6},
  "after": {"instance_type": "c6i.xlarge", "minimum": 6},
  "expected_monthly_delta": {"currency": "USD", "amount": -412},
  "service_effect": "rolling replacement of batch workers",
  "rollback": "restore c6i.2xlarge and wait for replacements",
  "approval": "per_call"
}
```

Cet artefact évite une défaillance récurrente : l'agent envoie une requête valide vers une cible que le réviseur n'a jamais vue. Le fournisseur vérifie seulement si la charge utile peut être exécutée. Il ne vérifie pas si le demandeur voulait dire `finance-prod`, si la prévision utilise le bon prix ou si le groupe de workers dispose d'assez de capacité disponible.

N'évaluez pas le risque uniquement à partir du montant prévu. Un petit redimensionnement peut interrompre un service générateur de revenus. Un achat important mais limité peut être acceptable si le service financier l'a déjà budgété. Le périmètre, la réversibilité et la dépendance opérationnelle doivent apparaître à côté des économies prévues.

## Une recommandation est une preuve, pas une instruction

Un agent doit formuler ses recommandations de coûts de manière à ce qu'un réviseur puisse les réfuter. S'il ne peut pas expliquer pourquoi une ressource semble gaspiller de l'argent, quelles mesures il a utilisées et ce qui rendrait la recommandation fausse, il a produit une supposition entourée d'un tableau.

Pour un redimensionnement de calcul, exigez une utilisation couvrant un cycle opérationnel pertinent, et non un échantillon pratique pris un après-midi calme. Incluez le processeur, la mémoire si elle est disponible, la profondeur de file, la latence, le taux d'erreur et les pics planifiés. Le processeur seul ment souvent. De nombreux services attendent la mémoire, le stockage, le réseau, un pool de connexions ou une limite de licence.

Pour une modification du stockage, distinguez la taille allouée des octets utilisés, les performances provisionnées des IOPS observées et la conservation des snapshots du coût actuel du volume. Une proposition visant à réduire un volume peut être absurde si le fournisseur ne permet pas de le réduire sur place. Une proposition visant à supprimer d'anciens snapshots peut détruire la seule copie récupérable d'une base de données que personne n'a testée depuis des années.

La même rigueur s'applique aux recommandations d'engagement. L'agent a besoin de l'utilisation éligible, et non des dépenses totales. Un engagement qui ne s'applique qu'à une famille, une région, un système d'exploitation, une location ou une option d'achat particulière ne peut pas couvrir toute une catégorie de service. La remise apparente compte moins que le volume d'utilisation stable réellement éligible.

Demandez à l'agent de s'abstenir explicitement lorsque les preuves sont insuffisantes. Une bonne abstention peut ressembler à ceci :

> J'ai constaté une faible utilisation du processeur sur ces workers, mais je ne dispose d'aucune métrique de mémoire ni d'un historique de leur pic planifié. Je peux préparer une requête de redimensionnement lorsque le propriétaire aura confirmé la charge maximale et la fenêtre de retour en arrière.

Cette réponse est plus utile qu'une recommandation assurée qui oblige un opérateur à reconstituer les prémisses manquantes. Les modèles ont tendance à compléter les schémas. Votre interface d'action doit leur offrir une manière prévue de s'arrêter.

## Les engagements méritent un examen d'achat distinct

Les réservations, les engagements d'économies, les blocs de capacité et les remises similaires nécessitent un examen d'achat, même lorsque les calculs de l'agent sont exacts. Ils transforment une prévision d'utilisation en obligation.

La règle faible habituelle dit : « approuver les engagements au-dessus d'un certain montant ». Elle est populaire parce qu'elle est facile à expliquer et à automatiser. Elle échoue parce qu'un engagement peu coûteux peut fragmenter la couverture entre plusieurs équipes, tandis qu'un engagement plus important peut correspondre à une base documentée déjà approuvée par le service financier. Un seuil mesure la taille du dossier, pas la qualité de la décision.

Exigez que la proposition indique clairement :

- la base d'utilisation éligible par heure ou par jour
- le niveau de couverture que l'agent propose d'acheter
- la durée, l'option de paiement et le périmètre
- les charges de travail qui pourraient perdre leur éligibilité après une migration prévue
- la personne responsable de la prévision

Une bonne proposition distingue également trois chiffres que l'on confond souvent : les dépenses à la demande, les dépenses remisées pour l'utilisation couverte et le coût des engagements inutilisés. Les deux premiers rendent la remise attractive. Le troisième indique jusqu'à quel point la prévision peut être erronée avant que les économies ne disparaissent.

Supposons qu'un agent observe une utilisation stable sur plusieurs groupes de calcul et propose une couverture pour l'ensemble. C'est peut-être raisonnable, ou c'est peut-être un piège. Une équipe peut retirer son groupe au trimestre suivant, une autre changer de région et une troisième utiliser un type de plateforme non éligible. L'agent doit signaler chaque contributeur ainsi que tout changement à venir qu'il a trouvé. Le réviseur peut alors exclure la demande incertaine au lieu de discuter d'un seul graphique agrégé.

La documentation des fournisseurs décrit généralement les règles d'éligibilité avec précision, tandis que les consoles de facturation les résument souvent de manière approximative. Lorsque les deux vues diffèrent, utilisez l'API et la documentation de facturation comme sources de vérité. Les « économies estimées » d'une console sont un scénario, pas un examen contractuel.

Ne donnez pas à un agent général d'optimisation des coûts le pouvoir d'acheter parce qu'il a la permission de créer des rapports. Créez un parcours spécifique aux achats, qui n'accepte qu'une proposition entièrement définie et exige un approbateur comprenant à la fois le budget et le plan de charge de travail.

## Le redimensionnement de la capacité peut interrompre les services avant de faire économiser de l'argent

Un redimensionnement modifie un système en fonctionnement, même lorsque le fournisseur le considère comme une opération courante. L'agent doit présenter la conséquence opérationnelle avant que quiconque n'approuve la facture réduite.

Le scénario de panne est bien connu. L'agent repère des instances dont l'utilisation moyenne du processeur est faible, sélectionne une configuration plus petite et envoie une mise à jour progressive. Les nouvelles instances ont moins de mémoire. Le service commence à utiliser le swap pendant son pic quotidien de trafic, la latence des files augmente, la mise à l'échelle automatique ajoute des nœuds et la facture mensuelle augmente. Dans une autre variante, les anciens nœuds utilisaient un stockage temporaire local et le remplacement supprime le travail inachevé. Le rapport de coûts ne contenait aucune de ces informations.

Une proposition de redimensionnement doit comporter un propriétaire de service, une condition de maintenance et un seuil de retour en arrière. « Revenir en arrière si les erreurs augmentent » est trop vague, car chaque service a un certain taux d'erreur. Définissez le signal et la fenêtre d'observation. Par exemple, le propriétaire peut exiger une limite d'âge de file, un objectif de latence ou la réussite d'un cycle de traitement avant que l'agent puisse signaler le succès.

La requête d'exécution doit lier tous les sélecteurs de cible. N'autorisez jamais une commande libre comme `resize all nonproduction workers` à franchir une limite d'autorisation. Résolvez d'abord la liste des cibles, présentez-la, puis envoyez les identifiants plutôt qu'une requête par étiquette qui pourrait correspondre à de nouvelles ressources après l'approbation.

Une séquence d'exécution utile comporte quatre étapes :

1. L'agent collecte les métriques et résout les ressources exactes.
2. Il crée une fiche de modification avec la configuration actuelle, la configuration proposée, le retour en arrière et la condition de test.
3. Une personne approuve cette fiche immuable pour les ressources nommées.
4. Le lanceur d'actions envoie la requête, enregistre l'identifiant de l'opération fourni et ne signale ensuite que les contrôles prévus par le contrat.

Le mot « immuable » est important. Si l'agent peut modifier la liste des cibles après l'approbation, la fiche d'approbation devient une mise en scène. Si une modification doit être étendue, créez une nouvelle fiche et demandez une autre approbation.

## La fermeture d'un compte nécessite un identifiant différent et une confirmation humaine

La fermeture d'un compte appartient à une catégorie distincte, car elle touche en même temps la facturation, l'identité, l'accès au support, les données conservées et les possibilités de récupération. Ne la placez pas derrière un workflow d'optimisation.

Un fournisseur peut utiliser une séquence plutôt qu'un seul appel d'API. Il peut exiger les identifiants du propriétaire, une vérification du paiement, un délai d'attente ou des actions distinctes pour les projets et les membres de l'organisation. Votre agent ne doit jamais considérer une première réponse positive comme la preuve que la fermeture est terminée ou que les données ont disparu. Il doit enregistrer l'état du fournisseur et indiquer à l'opérateur ce qu'il reste à faire.

Attribuez à la fermeture du compte un identifiant dédié, sans fonctions ordinaires de lecture ou de modification. Exigez une confirmation saisie manuellement ou une approbation affichant l'identifiant exact du compte, son nom juridique ou de facturation s'il figure dans vos données, ainsi qu'une description simple de l'effet attendu. Une requête indiquant « fermer le compte de test » ne suffit pas. Les noms sont réutilisés et les étiquettes sont copiées.

Séparez la fermeture du nettoyage. Un agent peut inventorier les ressources inutilisées et préparer un plan de suppression. Il ne doit pas déduire que la suppression de ces ressources lui donne la permission de fermer le compte. Les économies du nettoyage et la décision de gouvernance consistant à mettre fin à un compte ont des responsables différents.

La planification de la récupération modifie également la décision. Si une équipe peut exporter les enregistrements, vérifier les sauvegardes, transférer les domaines, conserver les preuves d'audit et documenter la suppression des dépendances, elle peut approuver une fermeture en connaissance de cause. Si elle ne le peut pas, l'agent doit produire un rapport de préparation et s'arrêter. Un workflow de fermeture qui échoue est gênant. Une fermeture menée à bien avec une dépendance oubliée est bien plus grave.

## L'approbation doit porter sur l'appel exact

Une approbation générale comme « autoriser l'optimisation cloud pour cette session » convient pour recueillir des éléments. Elle protège mal contre les actions qui modifient les dépenses ou détruisent un accès. Un agent peut effectuer des dizaines de lectures raisonnables, puis envoyer une modification déraisonnable après que l'opérateur a cessé de le surveiller.

Liez l'approbation à une requête canonique. Cette requête comprend le type d'action, le compte, la région, les identifiants des ressources, les valeurs souhaitées ainsi que la durée ou l'option de paiement pour un achat. Affichez l'effet attendu sur les coûts comme contexte, mais ne l'utilisez pas comme identité de la requête. Les prévisions évoluent ; un appel au fournisseur doit rester dépourvu d'ambiguïté.

La couche d'autorisation doit refuser toute différence significative entre la requête approuvée et la requête envoyée. Il peut s'agir d'un autre compte, d'un sélecteur plus large, d'une quantité modifiée, d'une autre région ou d'une durée d'engagement différente. Soyez également attentif aux champs omis. Les fournisseurs attribuent souvent des valeurs par défaut, et ces valeurs peuvent changer entre les versions d'API ou les comptes.

La confirmation par appel a un coût : elle interrompt les personnes. Utilisez-la pour le groupe restreint d'opérations où l'interruption coûte moins cher que le regret. Autorisez le processus de l'agent à inspecter les données du périmètre pendant la session, puis exigez une confirmation séparée pour chaque achat d'engagement, modification de capacité, action de gouvernance du compte ou utilisation d'un identifiant spécialement marqué.

Sallyport suit cette logique avec une autorisation de session pour un nouveau processus d'agent et une approbation facultative par clé à chaque utilisation de cet identifiant. Cette distinction est utile, car une exécution d'agent approuvée nécessite tout de même une décision humaine avant d'appeler un identifiant capable de modifier les dépenses.

Le texte de l'approbation doit montrer à la personne qui l'examine ce que le fournisseur recevra. Ne lui demandez pas d'approuver un nom d'outil comme `cloud.execute`. Affichez `resize_compute_group`, le groupe cible exact, les anciennes et nouvelles valeurs ainsi que la déclaration de retour en arrière. Si l'interface ne peut pas afficher ces informations, le contrat d'action est trop large.

## Conservez un enregistrement d'audit que l'agent ne peut pas réécrire

Une réponse cloud positive n'est pas une piste d'audit. Elle indique que le fournisseur a accepté une requête, mais peut ne pas conserver l'intention, l'autorisation, les cibles résolues ou les éléments ayant conduit à l'appel.

Stockez un enregistrement en ajout seulement avant que la requête ne quitte le point de contrôle. Enregistrez la proposition, les références aux preuves, la requête canonique, la décision d'autorisation, l'identité de l'appelant, l'horodatage, la réponse du fournisseur et l'identifiant de l'opération. Conservez aussi les réponses d'erreur. Une requête refusée explique souvent un contournement ultérieur ou montre qu'un agent a cherché à obtenir une permission plus large.

Le chaînage par hachage fournit un contrôle d'intégrité pratique. Chaque entrée contient l'empreinte de l'entrée précédente et son propre contenu. Si quelqu'un modifie, supprime ou réordonne une entrée historique, la vérification échoue à l'endroit de la rupture. Cela ne prouve pas que la requête initiale était judicieuse. Cela prouve que la séquence enregistrée n'a pas changé sans être détectée.

Le document NIST SP 800-92, Guide to Computer Security Log Management, recommande de protéger l'intégrité des journaux et de les rendre disponibles pour examen. Ce conseil est ancien parce que la défaillance est ancienne : les équipes collectent des journaux dans un emplacement où le même processus compromis peut les modifier. Pour les actions d'agents, gardez le rédacteur d'audit hors de l'accès direct de l'agent au système de fichiers et aux identifiants.

Sallyport projette ses journaux Sessions et Activity depuis un journal d'audit chiffré, chaîné par hachage et aveugle en écriture, et `sp audit verify` peut vérifier la chaîne hors ligne sans clé du coffre. C'est le type de propriété à exiger de toute passerelle d'actions : l'agent peut recevoir les résultats, mais il ne peut pas modifier l'enregistrement de ce qu'il a demandé.

Examinez l'enregistrement après une modification, et pas uniquement pendant un incident. Un échantillon hebdomadaire des propositions d'agents et des actions réalisées révèle les mauvais périmètres, les faibles déclarations de retour en arrière et les approbations que les personnes valident sans les lire. Vous trouverez les fuites de contrôle plus rapidement dans le travail courant que dans une analyse après incident.

## Créez des parcours d'action étroits plutôt qu'un superutilisateur cloud

Un identifiant de superutilisateur cloud placé derrière une interface de discussion conviviale reste un identifiant de superutilisateur cloud. Le raisonnement de l'agent peut s'améliorer, mais l'autorité ne devient pas plus sûre.

Créez des parcours d'action qui correspondent aux vraies décisions. Un parcours peut récupérer les enregistrements de coûts et d'utilisation pour un périmètre nommé. Un autre peut préparer une requête de redimensionnement, mais ne peut pas l'exécuter. Un parcours d'achat peut envoyer uniquement une proposition d'engagement après une approbation dédiée. Un parcours de fermeture ne devrait exister que si votre organisation a réellement besoin d'une préparation automatisée à la fermeture, et il doit s'arrêter au moment de la confirmation humaine.

Gardez l'injection des identifiants à l'intérieur du lanceur d'actions. L'agent doit recevoir des résultats structurés, et non des jetons bearer, des clés privées SSH, une sortie de commande temporaire exposant des secrets ou des espaces réservés qu'il pourrait accidentellement recopier dans une transcription. Cela protège les identifiants et réduit le risque qu'un agent emporte cette autorité vers des outils sans rapport.

Testez les parcours avec des cas d'échec avant de leur faire confiance. Essayez de remplacer la région après l'approbation. Essayez un sélecteur qui s'étend à une ressource nouvellement créée. Essayez une requête d'engagement sans durée. Essayez une demande de fermeture qui indique un alias plutôt qu'un identifiant de compte. Le parcours doit refuser chacune de ces requêtes avec une explication indiquant le champ manquant ou incohérent.

Le premier contrôle à construire n'est généralement pas un redimensionnement autonome. Créez un parcours de rapport qui produit un dossier de preuves, puis un parcours de proposition incapable d'appeler le fournisseur. Lorsque les réviseurs sauront accepter, refuser et modifier ces propositions de manière fiable, ajoutez une seule modification étroite avec une approbation liée et un retour en arrière testé. Les économies cloud qui vous obligent à expliquer une panne ou un achat indésirable n'étaient jamais des économies.
