Ctrl+Alt+Prod : automatisation, infra et bonnes pratiques pour admins et devops

  • Dynamic Resource Allocation dans Kubernetes : fini le bricolage pour piloter tes GPU

    Dynamic Resource Allocation dans Kubernetes : fini le bricolage pour piloter tes GPU

    Si tu gères des nœuds GPU sur un cluster Kubernetes, tu connais sûrement la mécanique historique : déclarer nvidia.com/gpu comme ressource étendue, poser des labels et des taints sur les nœuds, et croiser les doigts pour que le scheduler place correctement les pods. Ça fonctionne, mais ça reste rigide — impossible d’exprimer finement « je veux un GPU avec au moins 20 Gio de VRAM » ou « je préfère telle référence, mais telle autre fera l’affaire ». C’est précisément ce que corrige la Dynamic Resource Allocation (DRA), passée en disponibilité générale avec Kubernetes 1.35. Voici ce qu’elle change concrètement pour toi.

    Le problème avec l’ancien modèle

    Le mécanisme des ressources étendues (resources.requests/resources.limits avec nvidia.com/gpu: 1) traite un GPU comme un simple compteur, sans notion de caractéristiques du matériel. Résultat : pour cibler un type de GPU précis, tu dois passer par des nodeSelector ou des règles d’affinité, ce qui t’oblige à colocaliser des types de matériel spécifiques sur des nœuds dédiés et à maintenir ce mapping à la main. Dès que ton parc GPU devient hétérogène (T4, A100, H100 mélangés), ça devient vite ingérable.

    Dynamic Resource Allocation, en résumé

    Introduite en alpha dès Kubernetes 1.30, la Dynamic Resource Allocation a atteint la disponibilité générale avec Kubernetes 1.35 : le feature gate DynamicResourceAllocation est désormais verrouillé et ne peut plus être désactivé, ce qui en fait un mécanisme désormais considéré comme stable et recommandé pour piloter du matériel spécialisé (GPU, TPU, FPGA…).

    ResourceClaim et ResourceClaimTemplate

    Un ResourceClaim représente une demande de ressource matérielle faite par un pod — l’équivalent d’un PersistentVolumeClaim, mais pour du matériel plutôt que du stockage. Un ResourceClaimTemplate permet de générer ces claims automatiquement à partir d’un modèle, exactement comme un PodTemplate génère des pods.

    DeviceClass et ResourceSlice

    Une DeviceClass définit les caractéristiques et sélecteurs d’une famille de matériels (par exemple, « tous les GPU NVIDIA de la classe compute 8.0+ »). Une ResourceSlice, elle, est publiée par le driver de ressource pour annoncer l’inventaire disponible sur chaque nœud — le scheduler s’appuie dessus pour prendre ses décisions de placement.

    # Exemple simplifié : une DeviceClass ciblant des GPU avec au moins 20 Gio de VRAM
    apiVersion: resource.k8s.io/v1
    kind: DeviceClass
    metadata:
      name: gpu-20gb-minimum
    spec:
      selectors:
        - cel:
            expression: "device.attributes['gpu.nvidia.com'].memory.compareTo(quantity('20Gi')) >= 0"
    ---
    apiVersion: resource.k8s.io/v1
    kind: ResourceClaimTemplate
    metadata:
      name: gpu-claim-template
    spec:
      spec:
        devices:
          requests:
            - name: gpu
              deviceClassName: gpu-20gb-minimum
    

    Ce que ça change concrètement pour toi

    Une sélection fine, exprimée en CEL

    Plutôt que de jongler avec des labels de nœuds, tu exprimes tes contraintes matérielles directement via des expressions CEL (Common Expression Language) qui examinent les attributs et la capacité des devices. Tu peux aussi exprimer des préférences classées (firstAvailable) : privilégier un GPU A5000, et accepter un T4 si aucun A5000 n’est disponible — sans avoir à écrire deux DeploymentSpec différents.

    Le partage de GPU devient natif

    DRA supporte plusieurs pods (ou plusieurs conteneurs d’un même pod) partageant un même GPU via ResourceClaim, ainsi que du time slicing pour faire tourner plusieurs charges sur une seule carte — utile pour des environnements de développement ou de test où monopoliser un GPU entier par pod serait du gaspillage.

    Et sur AKS ?

    À ce jour, les stratégies de partitionnement GPU documentées pour AKS reposent encore principalement sur le modèle historique : ressources étendues nvidia.com/gpu, combinées à du MIG (partitionnement matériel), du time-slicing ou du MPS via le NVIDIA GPU Operator. DRA étant un mécanisme du cœur de Kubernetes, sa disponibilité effective sur AKS dépend de la version de Kubernetes du cluster et du support du driver NVIDIA associé — vérifie les notes de version AKS avant de migrer une charge de production, et commence par un nodepool de test si tu veux évaluer DRA dès maintenant.

    FAQ

    DRA remplace-t-il complètement le device plugin NVIDIA ?

    Pas immédiatement : les deux modèles peuvent coexister le temps de la transition. Mais DRA est désormais la direction recommandée par le projet Kubernetes pour tout nouveau déploiement ciblant du matériel spécialisé.

    Ai-je besoin d’un driver de ressource spécifique pour utiliser DRA avec NVIDIA ?

    Oui, le driver DRA NVIDIA (distribué avec le GPU Operator) doit être installé sur ton cluster pour que les ResourceSlice soient correctement publiées et que le scheduler puisse allouer les GPU dynamiquement.

    DRA fonctionne-t-il aussi pour du matériel non-GPU ?

    Oui, le mécanisme est générique : il s’applique à toute ressource matérielle nécessitant une allocation fine — FPGA, cartes réseau spécialisées (SmartNIC), ou futurs types d’accélérateurs.

    En résumé

    Si tu pilotes un cluster GPU hétérogène pour des charges IA, la Dynamic Resource Allocation vaut clairement le détour : elle remplace des contournements fragiles par un modèle d’allocation pensé pour ça, avec la maturité de la GA depuis Kubernetes 1.35. Pour aller plus loin sur la gestion de ton cluster, notre article sur les nouveautés de Kubernetes 1.37 et notre guide pour sécuriser un cluster Kubernetes en 2026 complètent bien ce sujet, tout comme notre article sur la migration vers la Gateway API si tu prépares une mise à niveau plus large de ton cluster.

  • FinOps pour l’IA : ce que change le framework FinOps 2026 sur Azure

    FinOps pour l’IA : ce que change le framework FinOps 2026 sur Azure

    Tu as sans doute déjà vécu ça : une facture Azure qui grimpe d’un coup après le déploiement d’un service IA, sans que personne ne sache vraiment pourquoi. Les coûts de calcul GPU, les tokens consommés par un modèle managé, les instances de fine-tuning qu’on oublie d’éteindre… la facturation à l’usage de l’IA casse les habitudes de pilotage financier classiques. C’est exactement le problème que le FinOps Framework 2026 de la FinOps Foundation vient adresser de façon structurée. Dans cet article, tu vas voir ce qui a changé dans ce framework, pourquoi l’IA y a désormais sa propre catégorie, et comment appliquer concrètement ces principes sur Azure avec le FinOps toolkit.

    Pourquoi les coûts IA cassent les modèles FinOps classiques

    Le FinOps « traditionnel » s’est construit autour du cloud public : tu réserves de la capacité, tu optimises tes VM, tu négocies des remises sur engagement, et la facture reste globalement prévisible d’un mois sur l’autre. Les charges IA ne respectent pas ces règles. Un cluster de GPU H100 loué à l’heure, un modèle managé facturé au token, un pipeline de fine-tuning qui tourne une nuit entière : la variance de coût peut être énorme d’une semaine à l’autre, et elle dépend directement de décisions prises par des équipes produit ou data qui n’ont pas forcément de visibilité sur l’impact financier de leurs choix.

    Résultat : les tableaux de bord FinOps historiques, pensés pour du cloud IaaS/PaaS classique, ne suffisent plus à donner une image fidèle de la dépense IA — ni à l’attribuer correctement à la bonne équipe ou au bon produit.

    Ce que change le FinOps Framework 2026

    La FinOps Foundation a fait évoluer son framework de référence en 2026 pour répondre à ce constat. Trois changements structurants à retenir :

    Une définition élargie : au-delà du seul cloud

    Le framework ne parle plus seulement de « maximiser la valeur business du cloud », mais de maximiser la valeur business de la technologie au sens large — cloud public, SaaS, data center on-premise, plateformes data (Snowflake, Databricks, BigQuery) et IA. L’idée : une organisation qui pilote ses coûts IA en silo, sans les rapprocher du reste de sa dépense technologique, perd en cohérence de décision.

    Une catégorie technologique dédiée à l’IA

    C’est le changement le plus concret pour toi : le framework introduit désormais une page de guidance dédiée « FinOps for AI », qui traite explicitement de la complexité des coûts IA, de leur imprévisibilité, et des besoins de gouvernance associés — sachant qu’une dépense IA peut être répartie simultanément entre data center, cloud public et SaaS.

    Un alignement stratégique avec la direction (Executive Strategy Alignment)

    Nouvelle capacité du framework : le FinOps ne se limite plus au reporting de coûts, il devient un partenaire direct des décisions de budget et d’investissement technologique — utile quand une direction doit arbitrer entre financer un projet IA supplémentaire ou renforcer l’infrastructure existante.

    Concrètement, comment appliquer ça sur Azure

    Microsoft n’a pas attendu 2026 pour outiller le FinOps sur Azure, mais l’arrivée de cette catégorie IA dans le framework donne une bonne occasion de vérifier que ton setup est prêt à absorber la variabilité des coûts IA.

    FinOps hubs et FinOps toolkit

    Le FinOps toolkit de Microsoft reste ton point d’entrée : il fournit des modèles ARM/Bicep pour déployer des FinOps hubs (plateforme de reporting basée sur Cost Management, Azure Data Explorer ou Microsoft Fabric), des rapports Power BI prêts à l’emploi, et un module PowerShell pour automatiser les exports de coûts. Pour une charge IA qui varie fortement d’un jour à l’autre, avoir un export de coûts quotidien plutôt que mensuel change vraiment la donne côté visibilité :

    # Créer un export de coûts quotidien avec le module PowerShell FinOps toolkit
    Install-Module -Name FinOpsToolkit -Scope CurrentUser
    
    New-FinOpsCostExport `
        -Name "export-couts-ia-quotidien" `
        -Scope "/subscriptions/<subscription-id>" `
        -StorageAccountId "/subscriptions/<subscription-id>/resourceGroups/rg-finops/providers/Microsoft.Storage/storageAccounts/safinopshub" `
        -StorageContainer "cost-exports" `
        -Dataset "FocusCost"
    

    FOCUS pour allouer correctement les coûts IA

    La spécification FOCUS (FinOps Open Cost and Usage Specification) normalise le format des données de coûts pour qu’elles soient exploitables sans transformation lourde, quel que soit le fournisseur cloud. Pour des ressources IA facturées de façon hétérogène (à l’heure, au token, à la capacité réservée), c’est ce qui te permet de ramener tout ça à des colonnes communes — ServiceCategory, ChargeCategory, EffectiveCost — et donc de construire des rapports d’attribution par équipe ou par projet IA qui tiennent la route.

    Les pièges courants à éviter

    Sur le terrain, la plupart des dérapages de coûts IA viennent de trois causes assez classiques : des ressources GPU provisionnées « au cas où » et jamais redimensionnées après les tests, l’absence de tags de coût cohérents sur les workloads IA (donc impossible de savoir quelle équipe consomme quoi), et des environnements de fine-tuning ou d’expérimentation laissés actifs after-hours faute d’automatisation d’arrêt. Si tu as déjà mis en place du tagging et des budgets Azure pour tes charges classiques, la bonne nouvelle est que les mêmes réflexes s’appliquent à l’IA — il faut juste les appliquer plus tôt dans le cycle de vie du projet, avant que les coûts ne deviennent difficiles à démêler.

    FAQ

    Le FOCUS spec couvre-t-il déjà les services IA managés d’Azure ?

    FOCUS normalise la structure des données de coûts, pas un service en particulier : tant qu’un service IA facture via Cost Management (ce qui est le cas des principaux services Azure AI), ses données peuvent être exposées au format FOCUS. Vérifie toujours la couverture exacte dans la documentation du toolkit, qui évolue régulièrement.

    Faut-il une équipe FinOps dédiée pour appliquer ces principes à l’IA ?

    Non, surtout si ton organisation est petite ou moyenne : l’essentiel est d’impliquer les équipes qui décident des ressources IA (data, ML, plateforme) dans la boucle de visibilité des coûts, pas forcément de créer un rôle dédié dès le départ.

    Le FinOps toolkit est-il gratuit ?

    Oui, le toolkit lui-même est open source ; tu paies uniquement l’infrastructure Azure sous-jacente (stockage, Data Explorer ou Fabric) utilisée pour héberger tes hubs de reporting.

    En résumé

    Le FinOps Framework 2026 acte ce que beaucoup d’équipes infra vivaient déjà sur le terrain : les coûts IA ne se pilotent pas comme des coûts cloud classiques. Si tu gères des charges IA sur Azure, c’est le bon moment pour vérifier ton dispositif de reporting — exports quotidiens, tagging, FOCUS — avant que la prochaine facture ne te surprenne. Si tu veux creuser l’attribution de coûts sur des workloads conteneurisés, notre article sur FinOps pour Kubernetes avec AKS Cost Analysis complète bien cette approche, et notre guide FinOps 2026 sur Azure Cost Management reste la bonne base si tu démarres tout juste ta démarche.

  • OpenTelemetry et Prometheus en 2026 : l’interopérabilité qui devient enfin simple

    OpenTelemetry et Prometheus en 2026 : l’interopérabilité qui devient enfin simple

    Pendant longtemps, faire cohabiter OpenTelemetry et Prometheus dans la même stack d’observabilité relevait du bricolage : exporters à double emploi, noms de métriques qui ne correspondaient pas, labels à retraiter à la main. Une enquête publiée en 2026 par le projet OpenTelemetry, menée auprès de 81 utilisateurs actifs des deux écosystèmes, montre que cette friction a nettement reculé depuis 2024. Si tu hésites encore entre migrer intégralement vers OTel ou garder ton stack Prometheus historique comme évoqué dans notre tour d’horizon Grafana 13 / Prometheus 3 / OpenTelemetry, voici ce que dit ce retour terrain — et comment configurer l’interopérabilité concrètement sur ton cluster.

    Ce que révèle l’enquête 2026

    Le constat principal : la coexistence des deux écosystèmes est devenue nettement plus simple, et la tendance de fond n’est pas la migration totale vers l’un ou l’autre, mais la cohabitation assumée.

    • Facilité d’usage perçue : la note moyenne passe de 3,1 à 3,6 sur 5 entre 2024 et 2026 ; la part des répondants trouvant l’intégration difficile chute de 29 % à 10 %, et plus personne ne la juge « très difficile » (contre 7 % en 2024)
    • Instrumentation infra : 72 % utilisent encore des exporters Prometheus classiques, 57 % des receivers OTel — et près de la moitié des répondants font tourner les deux en parallèle plutôt que de migrer intégralement
    • Instrumentation applicative : les SDK OTel sont en tête avec 65 % d’adoption, devant les SDK Prometheus natifs (52 %) ; 41 % des répondants utilisent exclusivement l’instrumentation OTel
    • Traitement des données : 53 % passent par l’OpenTelemetry Collector open source, 54 % gardent des règles de relabeling Prometheus ; 65 % déclarent maintenir une stack « vanilla » sans surcouche propriétaire

    Les points de friction qui restent, d’après les retours de la communauté : l’unification des modèles de données entre les deux mondes, la gestion des attributs de ressource (resource attributes), et les frictions de nommage entre conventions Prometheus et sémantique OTel.

    Comment ça marche concrètement : Prometheus comme backend OTLP

    Depuis Prometheus 3.x, le serveur peut recevoir directement des métriques au format OTLP, sans passer par un collector intermédiaire pour le stockage final. La documentation officielle Prometheus décrit la configuration minimale :

    # Démarrer Prometheus avec le receiver OTLP activé
    # (désactivé par défaut pour des raisons de sécurité)
    prometheus --web.enable-otlp-receiver
    
    # Côté application ou collector, pointer vers l'endpoint Prometheus
    export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
    export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://localhost:9090/api/v1/otlp

    Le chemin /v1/metrics est ajouté automatiquement à l’URL — pas besoin de le préciser toi-même dans la variable d’environnement.

    UTF-8 et noms de métriques

    Depuis la version 3.x, Prometheus supporte l’UTF-8 dans les noms de métriques et de labels, ce qui règle une bonne partie des frictions de nommage évoquées dans l’enquête. Tu peux choisir entre quatre stratégies de traduction (translation_strategy), dont NoTranslation et NoUTF8EscapingWithSuffixes qui préservent les caractères UTF-8 des métriques OTel sans les réencoder — utile si tes métriques utilisent des points ou des caractères non-ASCII issus des conventions sémantiques OTel.

    Attributs de ressource : à promouvoir en labels

    Par défaut, les attributs de ressource OTel (service.name, service.instance.id, k8s.namespace.name…) ne sont pas automatiquement exposés comme labels Prometheus interrogeables en PromQL. La documentation recommande de les promouvoir explicitement — sans ça, tu perds une bonne partie de la valeur du contexte OTel une fois les métriques stockées côté Prometheus.

    Temporalité delta : encore expérimental

    OpenTelemetry gère nativement la temporalité delta pour certaines métriques, alors que Prometheus attend du cumulatif. Un processeur delta-to-cumulative existe côté collector, mais reste marqué comme expérimental et nécessite d’activer le feature flag otlp-deltatocumulative — à tester en environnement de non-prod avant de t’y fier en production. Le détail des transformations appliquées à l’export OTLP vers Prometheus est documenté sur la page de compatibilité officielle OpenTelemetry.

    Faut-il migrer entièrement vers OTel, ou garder Prometheus ?

    Le message de l’enquête est clair : la cohabitation n’est plus une solution de transition bancale, c’est devenu un choix d’architecture assumé par une majorité de répondants. Concrètement :

    • Si ton parc applicatif est déjà majoritairement instrumenté en Prometheus (exporters, client libraries), le receiver OTLP de Prometheus 3.x te permet d’absorber progressivement les nouvelles applications instrumentées en OTel sans tout réécrire
    • Si tu démarres un nouveau projet ou migres un service, l’instrumentation OTel-native (SDK OTel) te donne la portabilité vers d’autres backends si tu changes un jour de stack d’observabilité
    • Dans tous les cas, prévois du temps pour la promotion des attributs de ressource en labels — c’est le point qui casse le plus souvent les dashboards PromQL existants après une migration partielle

    Si tu utilises déjà l’instrumentation zero-code via eBPF (OBI) pour tes applications non instrumentées manuellement, cette interopérabilité Prometheus/OTLP s’applique de la même façon en aval — le format de sortie reste OTLP, quelle que soit la méthode de collecte utilisée en amont.

    FAQ

    Le receiver OTLP de Prometheus remplace-t-il l’OpenTelemetry Collector ?

    Non. Le receiver OTLP permet à Prometheus de recevoir directement des métriques au format OTLP en fin de chaîne, mais l’OpenTelemetry Collector reste utile pour le traitement intermédiaire (filtrage, enrichissement, routage vers plusieurs backends) — d’ailleurs 53 % des répondants de l’enquête continuent à s’en servir même avec un backend Prometheus.

    Dois-je réinstrumenter toutes mes applications pour profiter de cette interopérabilité ?

    Non, c’est justement le point de l’enquête : près de la moitié des organisations font tourner exporters Prometheus classiques et receivers OTel en parallèle, sans migration forcée.

    Le support OTLP de Prometheus est-il activé par défaut ?

    Non, il faut explicitement démarrer Prometheus avec le flag --web.enable-otlp-receiver — désactivé par défaut pour limiter la surface d’exposition du endpoint.

    En bref

    L’interopérabilité OTel/Prometheus est passée d’un point de friction reconnu à un fonctionnement quasi transparent pour la majorité des équipes qui l’utilisent en 2026 — la cohabitation des deux écosystèmes, plutôt que le tout-ou-rien, est en train de devenir la norme. Si ta stack actuelle jongle encore entre exporters Prometheus et efforts d’instrumentation OTel séparés, active le receiver OTLP sur un environnement de test cette semaine et vérifie la promotion de tes attributs de ressource en labels avant de généraliser.

  • Proxmox VE 9.2 : équilibrage de charge automatique, SDN et CPU custom

    Proxmox VE 9.2 : équilibrage de charge automatique, SDN et CPU custom

    Si tu as migré vers Proxmox VE ces derniers mois — que ce soit par choix ou pour fuir la facture Broadcom — la version 9.2, sortie le 21 mai 2026, est la première mise à jour majeure qui s’attaque vraiment aux angles morts de l’hyperviseur face à VMware : l’équilibrage de charge automatique, le réseau SDN avancé et la gestion des CPU virtuels. Trois briques qui, jusqu’ici, obligeaient encore pas mal d’admins à bricoler des scripts maison ou à revenir en douce vers l’écosystème VMware pour certains cas d’usage.

    On fait le tour de ce qui change concrètement, comment l’activer, et dans quels cas ça vaut le coup de mettre à jour ton cluster.

    Le Dynamic Load Balancer : la fin des migrations manuelles de VM

    C’est la fonctionnalité qui fait le plus parler d’elle dans cette version. Jusqu’à Proxmox VE 9.1, le Cluster Resource Scheduler (CRS) ne s’activait qu’au démarrage d’une VM ou lors d’un événement HA (failover d’un nœud, par exemple) — impossible de rééquilibrer la charge d’un cluster qui dérive progressivement parce qu’un nœud héberge trop de VM gourmandes en CPU.

    Avec la 9.2, le CRS passe en mode dynamique : il s’appuie sur l’utilisation réelle des ressources (CPU, RAM) des nœuds et des VM, pas seulement sur leur configuration statique, pour migrer automatiquement les invités gérés par la stack HA et réduire les déséquilibres entre nœuds. Concrètement, ça se configure depuis Datacenter → Options → Cluster Resource Scheduling, avec un curseur de sensibilité qui détermine à partir de quel écart de charge le rééquilibrage se déclenche — voir le détail des options dans la roadmap officielle Proxmox VE.

    Ce que ça change pour toi

    • Plus besoin de surveiller manuellement la répartition de charge et de migrer les VM à la main un vendredi soir
    • Moins de contention CPU/RAM sur les nœuds « populaires » du cluster, surtout utile sur des clusters à taille variable (edge, PME)
    • Le rééquilibrage reste borné par la stack HA : seules les VM/CT gérés en HA sont concernés pour l’instant

    Attention toutefois : le Dynamic Load Balancer migre des VM en live, ce qui consomme de la bande passante réseau et du CPU pendant le transfert. Sur un cluster avec un réseau de stockage déjà sollicité (Ceph, ZFS over iSCSI), commence avec une sensibilité basse et surveille l’impact avant de la resserrer.

    SDN : WireGuard, BGP et EVPN passent à l’échelle

    Le module Software-Defined Networking continue sa montée en puissance, avec plusieurs ajouts qui rapprochent Proxmox des fonctionnalités réseau qu’on trouve chez les gros éditeurs de virtualisation :

    • Support natif de WireGuard et BGP comme protocoles de fabric SDN, en plus d’OSPF déjà disponible
    • Filtrage EVPN via route maps et prefix lists, pour maîtriser précisément quelles routes sont annoncées entre zones
    • Redistribution de routes OSPF vers les fabrics EVPN
    • Support IPv6 pour l’underlay EVPN, utile si ton datacenter est déjà en dual-stack ou IPv6-only

    Si tu gères un cluster multi-sites ou que tu commences à multiplier les VLAN/VRF pour isoler des environnements clients, ces ajouts SDN valent le détour — ils évitent de dépendre entièrement de ta stack réseau physique pour la segmentation.

    Gestion des modèles de CPU personnalisés, enfin dans l’interface web

    Autre irritant corrigé : jusqu’ici, créer un modèle de CPU personnalisé (pour garantir la compatibilité vMotion-like entre nœuds aux CPU légèrement différents) passait obligatoirement par l’édition de fichiers de configuration en ligne de commande. La 9.2 ajoute une section dédiée dans Datacenter → CPU Models de l’interface web, avec un sélecteur de flags CPU qui affiche directement les flags supportés par chaque nœud du cluster.

    C’est un détail, mais ça change la vie sur les clusters hétérogènes (nœuds achetés à des générations différentes) où définir un modèle de CPU custom compatible avec tout le monde demandait auparavant de croiser manuellement les sorties de lscpu sur chaque nœud.

    HA Arm/Disarm : de la maintenance sans stress

    La 9.2 introduit aussi une fonction pour suspendre temporairement le HA Manager à l’échelle du cluster, le temps d’une fenêtre de maintenance — sans perdre la configuration des ressources HA. Une fois la maintenance terminée, tu « réarmes » le HA Manager et les ressources reprennent leur état précédent automatiquement, plutôt que de devoir tout redéclarer à la main.

    Base technique : Debian Trixie et kernel 7.0

    Sous le capot, Proxmox VE 9.2 s’appuie sur Debian 13.5 « Trixie », le noyau Linux 7.0, QEMU 11.0, LXC 7.0 et ZFS 2.4 — une base technique à jour qui profite en particulier aux configurations matérielles récentes (support GPU, NVMe, réseau 100G).

    Comment mettre à jour depuis une 9.x existante

    # Sur chaque nœud du cluster, un par un
    apt update && apt full-upgrade
    
    # Vérifier la version après redémarrage
    pveversion

    Comme toujours sur un cluster, mets à jour les nœuds un par un plutôt qu’en même temps, et vérifie que la quorum device (si tu en utilises un) reste disponible pendant l’opération. Les retours d’expérience de la communauté sur cette version, y compris quelques cas particuliers avec Ceph, sont regroupés sur le fil du forum officiel Proxmox, à consulter avant une montée de version sur un cluster critique. Si tu viens tout juste de migrer depuis VMware, le guide de migration VMware vers Proxmox VE détaille les étapes de bascule initiale — la 9.2 s’applique ensuite normalement par-dessus.

    FAQ

    Le Dynamic Load Balancer fonctionne-t-il sans la stack HA ?

    Non, dans cette version le rééquilibrage automatique ne concerne que les VM et conteneurs gérés par la High Availability. Pour les autres, la migration reste manuelle ou scriptée.

    Faut-il upgrader immédiatement en production ?

    Comme pour toute montée de version majeure d’hyperviseur, teste d’abord sur un nœud ou un cluster de non-prod, en particulier si tu utilises Ceph ou des configurations SDN avancées. Les changements de cette 9.2 sont additifs (pas de breaking change signalé), mais la prudence reste de mise sur un cluster de production.

    Proxmox VE 9.2 est-il compatible avec les modèles de CPU définis en 9.0/9.1 ?

    Oui, la mise à jour ne modifie pas la configuration existante — la nouvelle interface web vient seulement en simplifier la gestion pour les futurs modèles.

    En bref

    Proxmox VE 9.2 comble trois écarts fonctionnels réels avec les hyperviseurs propriétaires : équilibrage de charge automatique, réseau SDN de niveau entreprise, et gestion des CPU sans ligne de commande. Si tu envisageais encore de garder un pied chez VMware ou Hyper-V « au cas où », cette version rétrécit un peu plus la liste des raisons de le faire. Si ton cluster tourne encore en 8.x, c’est aussi l’occasion de planifier la double montée de version (l’article sur le choix entre VMware, Hyper-V et Azure Local reste pertinent si tu hésites encore sur ta plateforme cible).

    Programme une fenêtre de test cette semaine, et vérifie en particulier le comportement du Dynamic Load Balancer sur ton réseau de stockage avant de le généraliser à tout le cluster.

  • Veeam Data Cloud Vault pour Azure : l’immuabilité par défaut, sans la configurer

    Veeam Data Cloud Vault pour Azure : l’immuabilité par défaut, sans la configurer

    Une sauvegarde immuable, c’est la base d’une vraie stratégie anti-ransomware — mais dans les faits, la rendre réellement immuable sur du stockage cloud self-managé demande de configurer des politiques de verrouillage, d’isoler l’architecture, et de surveiller que rien ne dérive dans le temps. Fin août 2026, Veeam a lancé Veeam Data Cloud Vault pour Azure : un stockage immuable entièrement managé, pensé spécifiquement pour recevoir les sauvegardes Veeam. Voici ce que ça change concrètement pour tes sauvegardes Azure, et où sont ses limites.

    Le problème que Veeam Vault vient résoudre

    Si tu as déjà mis en place le principe 3-2-1-1-0, tu sais que la copie « immuable » est justement celle censée survivre à une attaque, même si l’attaquant a compromis tes identifiants d’administration. Le problème, c’est que sur du stockage cloud auto-géré, cette immuabilité n’est pas automatique : il faut activer des politiques WORM (write once, read many), les verrouiller au bon niveau, isoler l’architecture (abonnement dédié, RBAC strict), et rester vigilant dans la durée — une simple erreur de configuration, ou une fenêtre de latence entre la création de la sauvegarde et l’activation du verrouillage, suffit à ouvrir une brèche.

    Veeam Vault change l’approche : il s’agit d’un stockage cloud entièrement managé, construit sur Azure Blob Storage, mais où l’immuabilité est appliquée par défaut, pas configurée. Toute sauvegarde qui atterrit dans Veeam Vault se retrouve automatiquement en état WORM, sans verrouillage manuel à paramétrer et sans fenêtre de vulnérabilité où une sauvegarde toute fraîche serait encore modifiable.

    Comment ça s’intègre à ton environnement Veeam

    Vault n’est pas un produit à part : il s’intègre nativement à Veeam Data Platform. Si tu utilises déjà Veeam Backup for Microsoft Azure, tu peux cibler Veeam Vault directement comme destination, sans connecteur ni outillage supplémentaire à déployer. Il fonctionne aussi avec Veeam Kasten pour les charges Kubernetes, si une partie de ton infra tourne en conteneurs.

    Détail important côté souveraineté des données : Vault se déploie dans ton propre abonnement Azure, pas dans une infrastructure tierce partagée. Les sauvegardes restent donc dans ton tenant, ce qui simplifie les questions de gouvernance et de conformité par rapport à un stockage immuable hébergé ailleurs.

    Le modèle de facturation : prévisible, au To par an

    Un des points de friction classiques du stockage cloud, c’est la facture qui varie selon les appels API, les lectures, les restaurations et la sortie de données (egress) — difficile à prévoir en amont. Veeam Vault fonctionne avec une facturation forfaitaire, au téraoctet et à l’année, qui englobe le stockage, les appels API, les lectures, les restaurations et l’egress dans un seul prix. Ça t’évite la mauvaise surprise en fin de mois si tu dois restaurer un volume important après un incident.

    Vault natif Azure Backup : l’alternative déjà en place

    Si tu n’utilises pas Veeam, sache que Microsoft propose depuis un moment son propre mécanisme d’immuabilité pour Azure Backup, les immutable vaults, directement au niveau des coffres de sauvegarde (Recovery Services vault et Backup vault). La différence principale : côté Azure natif, c’est à toi de configurer et de verrouiller cette immuabilité toi-même, alors que Veeam Vault l’impose par construction dès la première sauvegarde. Le bon choix dépend surtout de l’outil de sauvegarde que tu utilises déjà — Veeam Vault n’a de sens que si Veeam Backup & Replication ou Veeam Backup for Microsoft Azure fait déjà partie de ta stack, sinon les immutable vaults natifs restent la voie la plus directe.

    Ça complète bien la réflexion sur la couverture de Microsoft 365 Backup : les deux approches partagent la même logique — un stockage de secours qui doit rester hors de portée d’un attaquant ayant compromis tes accès principaux.

    Les limites à connaître avant de basculer

    • Veeam Vault n’est pas disponible dans les régions Azure Government à ce jour — à vérifier si tu opères dans ce contexte.
    • Ça suppose d’avoir déjà (ou de vouloir déployer) Veeam Backup for Microsoft Azure comme brique de sauvegarde — ce n’est pas un service autonome sans l’écosystème Veeam.
    • Compare le coût réel face aux immutable vaults natifs Azure Backup selon ton volume : le forfait au To/an de Veeam n’est pas forcément plus avantageux pour tous les profils d’usage, notamment sur de très gros volumes rarement restaurés.

    FAQ

    Faut-il Veeam pour bénéficier de sauvegardes immuables sur Azure ?

    Non. Azure Backup propose ses propres immutable vaults nativement, sans dépendance à un éditeur tiers. Veeam Vault est une option supplémentaire, pertinente si tu es déjà sur l’écosystème Veeam et que tu veux une immuabilité appliquée par défaut sans la configurer toi-même.

    Les données restent-elles dans mon tenant Azure ?

    Oui, Veeam Vault se déploie dans ton propre abonnement Azure, pas dans une infrastructure partagée par Veeam.

    Est-ce compatible avec Azure Government ?

    Non, pas à ce jour — Veeam Vault n’est pas disponible dans les régions Azure Government.

    Ça remplace complètement la règle 3-2-1-1-0 ?

    Non, ça sécurise une des copies de cette règle — la copie immuable. Le reste de la stratégie (copies multiples, support différent, copie hors site, zéro erreur vérifiée) reste à construire autour.

    Ce qu’il faut retenir

    Veeam Data Cloud Vault pour Azure répond à un vrai point de friction : la difficulté de garantir une immuabilité fiable sur du stockage cloud auto-géré. Si Veeam fait déjà partie de ta stack de sauvegarde, ça vaut le coup d’évaluer le forfait au To/an face à tes immutable vaults Azure Backup actuels — surtout si la configuration manuelle de ces derniers a déjà généré des ratés dans ton environnement. Dans tous les cas, l’essentiel reste le même : teste régulièrement une restauration réelle depuis ta copie immuable, pas seulement sa présence.

  • WSUS en 2026 : la faille CVSS 9.8 qui doit accélérer ta migration

    WSUS en 2026 : la faille CVSS 9.8 qui doit accélérer ta migration

    Tu as peut-être laissé WSUS tourner en arrière-plan depuis des années, sans trop y toucher : ça patchait, ça marchait, pas de raison de changer. Sauf qu’en octobre 2025, une faille critique non authentifiée a rappelé à tout le monde que « déprécié » ne veut pas dire « sans risque ». Dans cet article, tu as le point complet sur l’état réel de WSUS en 2026 : ce qui s’est passé avec la CVE-2025-59287, ce que « déprécié » signifie concrètement pour ton parc, et surtout les alternatives à envisager selon tes machines — postes Windows, serveurs, ou environnement ConfigMgr.

    Ce qui s’est passé : la CVE-2025-59287

    Le 14 octobre 2025, Microsoft publie un correctif dans le cadre du Patch Tuesday pour une vulnérabilité de désérialisation de données non fiables dans le rôle serveur WSUS. Quelques jours plus tard, il devient clair que ce correctif initial est insuffisant : Microsoft doit publier un correctif hors bande le 23 octobre 2025 pour combler la faille pour de bon.

    Le problème est sérieux à plusieurs titres :

    • Elle permet une exécution de code à distance sans authentification, en envoyant un événement forgé au service WSUS.
    • Elle note 9.8 sur 10 à l’échelle CVSS — quasiment le score maximal.
    • Des campagnes d’exploitation active ont été observées avant même la sortie du correctif définitif, ciblant les ports par défaut 8530 et 8531, avec des scripts PowerShell malveillants exécutés via les processus worker IIS pour extraire des informations réseau et de domaine.
    • Un exploit public (PoC) a circulé, et la vulnérabilité a été ajoutée au catalogue Known Exploited Vulnerabilities de la CISA.

    Si tu gères encore un serveur WSUS exposé, la priorité absolue est de vérifier que le correctif hors bande d’octobre 2025 est bien installé, puis de t’assurer que le rôle n’est pas accessible depuis Internet sans filtrage :

    # Vérifier si le correctif hors bande d'octobre 2025 est présent
    Get-HotFix | Where-Object { $_.HotFixID -match "KB5070882|KB5070883|KB5070884" }
    
    # Vérifier que WSUS n'écoute pas sur une interface exposée publiquement
    Get-NetTCPConnection -LocalPort 8530,8531 | Select-Object LocalAddress, State, OwningProcess

    WSUS en 2026 : où en est vraiment la dépréciation ?

    Microsoft a annoncé la dépréciation de WSUS le 20 septembre 2024. Concrètement, ça veut dire que le rôle n’est plus en développement actif — pas de nouvelle fonctionnalité, pas d’évolution — mais il continue d’être livré avec Windows Server 2025, reste supporté en production, et reçoit les correctifs de sécurité et de qualité selon le cycle de vie du produit, comme le confirme la documentation officielle Microsoft Learn.

    En pratique, WSUS hérite donc du cycle de vie de Windows Server 2025, ce qui repousse son support jusqu’en octobre 2034 pour le support étendu — c’est le seul horizon que Microsoft s’est engagé à tenir jusqu’ici. Ça te laisse du temps, mais ce n’est pas une raison pour ne rien faire : un composant qui ne reçoit plus d’investissement actif reçoit aussi moins d’attention défensive, comme l’a montré cette CVE critique un an à peine après l’annonce de dépréciation.

    Autre point à connaître si tu es dans un environnement Configuration Manager : le rôle Software Update Point (SUP) de ConfigMgr n’est officiellement pas affecté par la dépréciation, mais il continue de dépendre d’une installation WSUS locale pour fonctionner. Microsoft n’a annoncé aucun découplage à ce jour.

    Faut-il migrer maintenant ? Les alternatives selon ton parc

    Postes Windows 10/11 : Windows Update for Business + Intune + Autopatch

    Pour les postes de travail, la trajectoire recommandée par Microsoft passe par Windows Autopatch, orchestré via Microsoft Intune et les stratégies Windows Update for Business. Si tu es encore sous ConfigMgr, le co-management te permet de basculer progressivement la charge de travail « mises à jour Windows » vers Intune sans devoir migrer tout ton parc d’un coup — tu déplaces juste ce curseur-là, le reste continue de fonctionner comme avant.

    L’arrivée de l’Intune Suite dans les licences M365 E3/E5 rend cette trajectoire moins coûteuse qu’avant : ce que le bundling change pour toi.

    Serveurs Windows et Linux : Azure Update Manager

    Pour tes serveurs, Azure Update Manager (AUM) centralise l’évaluation et le déploiement des correctifs, sur Azure comme en hybride via Azure Arc. Ce qui est intéressant, c’est que ça peut ne rien te coûter en plus dans plusieurs cas de figure, d’après la FAQ tarifaire officielle :

    • Tes VM sont directement dans Azure : gratuit.
    • Tu as Microsoft Defender for Servers Plan 2 activé sur l’abonnement.
    • Tes serveurs bénéficient d’Extended Security Updates via Azure Arc.
    • Tes licences Windows Server ont une Software Assurance active, ou tu utilises le pay-as-you-go Windows Server via Arc.

    Hors de ces cas, la facturation est au jour et par serveur Arc-enabled connecté — vérifie ta situation avant de basculer un parc entier.

    Environnement ConfigMgr : pas de sortie de secours immédiate

    Si le Software Update Point reste ton mode de distribution principal, WSUS reste architecturalement nécessaire tant que tu n’abandonnes pas l’orchestration des correctifs par Configuration Manager. La bascule vers le cloud se fait alors workload par workload, via le co-management, plutôt qu’en une migration unique.

    Si tu restes sur WSUS pour l’instant : la checklist minimale

    Migrer prend du temps, et ce n’est pas toujours la priorité de cette semaine. En attendant, voici ce qui t’évite de rester exposé sur une faille déjà exploitée activement :

    • Confirme l’installation du correctif hors bande d’octobre 2025 sur tous tes serveurs WSUS, pas seulement le principal.
    • Vérifie qu’aucun serveur WSUS n’expose les ports 8530/8531 directement sur Internet — c’est le vecteur observé dans les campagnes d’exploitation.
    • Surveille les journaux IIS pour des exécutions PowerShell inhabituelles issues du processus worker (w3wp.exe) hébergeant WSUS.
    • Segmente le réseau autour du serveur WSUS comme n’importe quel système avec des privilèges élevés sur ton parc.

    Pour t’entraîner à prioriser, reprends le Patch Tuesday de septembre 2026 et ses deux zero-days.

    FAQ

    WSUS va-t-il être supprimé de Windows Server ?

    Pas à court terme. Le rôle reste livré et supporté jusqu’à la fin du support étendu de Windows Server 2025, soit octobre 2034. « Déprécié » signifie ici « plus de nouvelles fonctionnalités », pas « retiré ».

    Azure Update Manager est-il vraiment gratuit ?

    Ça dépend de ta situation : gratuit pour les VM Azure natives, et gratuit pour les serveurs Arc-enabled dans plusieurs cas (Defender for Servers Plan 2, Software Assurance, ESU via Arc). Sinon, c’est une facturation journalière par serveur connecté.

    Dois-je migrer en urgence à cause de cette CVE ?

    Le correctif d’octobre 2025 traite la vulnérabilité elle-même — s’il est installé, le risque immédiat est couvert. Mais l’épisode illustre bien pourquoi il vaut mieux planifier ta sortie de WSUS plutôt que d’attendre la prochaine alerte.

    ConfigMgr peut-il se passer complètement de WSUS ?

    Pas aujourd’hui. Le Software Update Point reste dépendant d’une installation WSUS locale, et Microsoft n’a pas annoncé de découplage.

    Ce qu’il faut retenir

    WSUS n’a pas disparu et ne disparaîtra pas cette année — mais son statut « déprécié » se traduit concrètement par moins d’investissement défensif, comme la CVE-2025-59287 vient de le démontrer. Si tu ne l’as pas encore fait, profite de ce signal pour cartographier tes machines encore rattachées à WSUS et planifier leur bascule vers Windows Autopatch ou Azure Update Manager selon leur profil. Et si tu dois rester dessus encore quelques mois, commence au minimum par vérifier que le correctif d’octobre 2025 est bien en place partout.

  • Ephemeral OS Disk avec Full Caching : la GA qui muscle la résilience de tes VMs Azure

    Ephemeral OS Disk avec Full Caching : la GA qui muscle la résilience de tes VMs Azure

    Une panne de stockage distant qui fait tomber tes VM stateless, ça n’a rien de théorique — les coupures liées aux intempéries ou aux incidents d’alimentation en ont fait l’expérience à plus d’un admin. Azure vient de rendre généralement disponible une option qui change la donne pour ce scénario précis : le full caching pour les disques OS éphémères. Voyons ce que ça change concrètement, pour qui, et comment l’activer.

    Un rappel rapide : à quoi sert un disque OS éphémère

    Un disque OS éphémère (Ephemeral OS Disk) est créé directement sur le stockage local de la VM plutôt que sur le stockage Azure distant. Résultat : latence de lecture/écriture plus faible, réimagage bien plus rapide, et aucun coût de disque managé associé. La contrepartie logique, c’est que ces disques sont pensés pour des charges de travail sans état (stateless) : pas de déallocation possible, pas de snapshot, pas d’Azure Backup ni d’Azure Site Recovery dessus. Si ta VM doit survivre à un redémarrage avec ses données intactes, ce n’est pas l’outil qu’il te faut.

    Jusqu’ici, le mode par défaut — le partial caching — répartissait le disque OS entre un disque de différences en local (qui reçoit toutes les écritures) et un disque de base sur le stockage managé (qui sert les lectures des fichiers d’origine). Ça fonctionne bien, mais ça garde une dépendance résiduelle au stockage distant pour les lectures.

    Ce que change le full caching (désormais GA)

    Avec le full caching, l’intégralité du disque OS est mise en cache sur le stockage local : la dépendance au stockage distant disparaît complètement en régime stabilisé. Concrètement, à la création de la VM, l’espace de stockage local disponible est réduit de deux fois la taille du disque OS, cet espace servant à stocker la copie complète du disque. La mise en cache se fait en arrière-plan après le démarrage de la VM, donc sans impact sur le temps de création.

    Le bénéfice est double : de meilleures performances (plus aucune latence de lecture/écriture distante en régime stabilisé) et une résilience accrue face aux coupures de stockage distant, puisque le disque OS reste disponible même si Azure Storage rencontre un incident dans la région. C’est exactement le scénario visé par Microsoft : limiter les interruptions de service causées par des événements externes (intempéries, coupures d’alimentation) plutôt que par une panne applicative.

    Prérequis et VM compatibles

    Avant de te lancer, vérifie ces points :

    • Le disque OS doit être stateless (c’est déjà une condition du mode éphémère en général).
    • La taille du stockage local de la taille de VM choisie doit être supérieure à 2 fois la taille du disque OS + 1 Gio.
    • Il faut utiliser la version d’API 2025-04-01 ou ultérieure.
    • Seules les tailles de VM avec 8 vCPU ou plus sont éligibles pour l’instant (le support des tailles à 2 et 4 vCPU est prévu pour une version future) : toutes les séries N, L, M et H, ainsi que les séries D, DC, E, Eb et EC en v5/v6/v7, et les séries F en v6/v7.

    Autre bonne nouvelle côté budget : le full caching ne coûte rien de plus que les tarifs standards de VM et de disque — un point confirmé explicitement dans la FAQ officielle Microsoft Learn. Si tu suis de près tes coûts Azure comme on en parlait dans notre article FinOps sur Cost Management, c’est un gain de résilience qui ne vient pas grignoter ton budget.

    Comment l’activer

    Avec Azure CLI

    az vm create \
      --resource-group monGroupeRessources \
      --name maVM \
      --image imageChoisie \
      --size Standard_D8ds_v6 \
      --ephemeral-os-disk true \
      --ephemeral-os-disk-placement NvmeDisk \
      --ephemeral-os-disk-enable-full-caching true \
      --os-disk-caching ReadOnly \
      --admin-username azureuser \
      --generate-ssh-keys
    

    Le paramètre clé est --ephemeral-os-disk-enable-full-caching true. Pour un scale set, le même paramètre s’applique avec az vmss create.

    Avec un template ARM

    Ajoute la propriété diffDiskSettings à la ressource Microsoft.Compute/virtualMachines (ou virtualMachineScaleSets), en définissant enableFullCaching à true et en utilisant la version d’API 2025-04-01 ou ultérieure. Si tu déploies tes VM via des modules standardisés — comme les Azure Verified Modules abordés dans notre article sur les Azure Landing Zones — c’est le genre de paramètre à intégrer directement dans ton module de VM réutilisable plutôt qu’à activer VM par VM.

    Pour quelles charges de travail ça change vraiment la donne

    Le full caching a un intérêt particulier pour les charges IO-intensives et stateless : entraînement et inférence IA, bases de données à quorum, analytique de données, traitement temps réel. Ce sont des workloads où éliminer la latence de lecture/écriture distante en régime stabilisé se traduit directement par un gain de débit mesurable, pas juste un confort théorique.

    FAQ

    Puis-je activer le full caching sur une VM existante ?

    Non. Comme pour le mode éphémère en général, le full caching ne peut être configuré qu’à la création de la VM ou du scale set, pas appliqué après coup.

    Quelle différence avec le mode partiel (par défaut) ?

    En mode partiel, les écritures vont sur un disque local et les lectures des fichiers d’origine viennent d’un disque de base distant. En full caching, tout le disque OS — lectures et écritures en régime stabilisé — reste local, ce qui élimine la dépendance résiduelle au stockage distant.

    Le full caching fonctionne-t-il sur les VM à 2 ou 4 vCPU ?

    Pas encore : seules les tailles à 8 vCPU ou plus sont éligibles aujourd’hui. Le support des plus petites tailles est prévu pour une version future, sans date précise communiquée.

    Est-ce compatible avec Azure Kubernetes Service ?

    Une version équivalente pour les node pools AKS existe, mais elle est encore en préversion (et uniquement à la création d’un node pool, pas en mise à jour d’un pool existant) — à ne pas confondre avec la disponibilité générale sur les VM et VMSS classiques.

    Ce qu’il faut retenir

    Le full caching pour les disques OS éphémères est l’un de ces changements peu spectaculaires mais concrètement utiles : zéro coût additionnel, configuration à la création de VM, et un vrai gain de résilience pour tes workloads stateless les plus sensibles à la latence. Si tu déploies des VM ou des scale sets IO-intensifs sur des tailles éligibles, c’est une case à cocher qui ne coûte rien à essayer dès ton prochain déploiement.

  • PowerShell 7.7, OpenSSH et DSC v3 : la feuille de route 2026 de Microsoft

    PowerShell 7.7, OpenSSH et DSC v3 : la feuille de route 2026 de Microsoft

    Tu es passé à PowerShell 7.6 LTS et tu as fait le ménage dans tes modules avec PSResourceGet ? Bonne nouvelle : l’équipe PowerShell vient de publier sa feuille de route détaillée pour la suite de 2026, et elle touche à peu près tout ce que tu utilises au quotidien — la console, la gestion des modules, la connexion à distance, et même l’intégration avec les assistants IA. Voici ce qui arrive, et pourquoi ça vaut le coup de t’y préparer dès maintenant.

    PowerShell 7.7 : des irritants du quotidien enfin traités

    Fini les profils et modules planqués dans OneDrive

    Si tes utilisateurs synchronisent leur dossier Documents avec OneDrive ou un autre outil cloud, tu as sans doute déjà vu PowerShell ramer au démarrage : c’est là que sont stockés par défaut les modules utilisateur, les profils et l’aide. La relocalisation expérimentale du PSUserContentPath, attendue en preview, vise justement à sortir ce contenu du chemin de synchronisation cloud pour éviter cette dégradation de performance — un correctif attendu depuis longtemps par qui gère des postes en environnement d’entreprise.

    Chargement de modules sans toucher au profil

    Autre irritant pour qui distribue des outils PowerShell à une équipe : enregistrer un tab-completer ou un Feedback Provider oblige aujourd’hui à modifier le script de profil de chaque utilisateur. La fonctionnalité de chargement de module non basé sur le profil doit permettre d’enregistrer ces extensions sans toucher au profil — un vrai soulagement pour les développeurs d’outils internes qui n’ont plus à demander à chacun de coller une ligne dans son $PROFILE.

    PSReadLine : de l’autocomplétion qui connaît le contexte

    PSReadLine évolue vers une IntelliSense prédictive contextuelle, capable de tenir compte de l’état du répertoire courant — par exemple proposer des complétions différentes selon que tu es dans un dépôt Git ou non. En parallèle, un travail de fond découple la saisie clavier du rendu du terminal, ce qui ouvre la voie à de futures capacités sans dégrader la réactivité de la console.

    Un serveur MCP pour connecter PowerShell aux assistants IA

    Signe des temps : l’équipe développe un serveur Model Context Protocol (MCP) pour PowerShell, avec un premier axe de travail explicitement centré sur la sécurité. L’idée est de permettre à un assistant IA d’interagir avec ton environnement PowerShell de façon structurée et contrôlée, plutôt qu’en lui laissant exécuter des commandes en aveugle. On avait déjà vu Microsoft avancer sur ce terrain côté gouvernance des identités d’agents IA dans Entra ID : la sécurisation des interactions IA devient un fil rouge sur toute la pile Microsoft, pas seulement côté identité.

    PSResourceGet : encore plus rapide, encore plus fiable

    Après la bascule que tu as probablement déjà entamée depuis PowerShellGet, PSResourceGet continue d’évoluer : la migration complète vers le Microsoft Artifact Registry (MAR) comme dépôt de confiance par défaut se poursuit, avec en prime un support du téléchargement et de l’installation concurrents pour accélérer la récupération de plusieurs modules à la fois. L’objectif affiché reste la fiabilité et la scalabilité — utile si tu gères des pipelines CI/CD qui installent des dizaines de modules à chaque run.

    Windows OpenSSH : l’authentification Entra ID à l’étude

    Encore au stade d’exploration active, le support de l’authentification Microsoft Entra ID pour les connexions SSH sur Windows OpenSSH serait une avancée notable : plus besoin de gérer des paires de clés SSH en parallèle de ton infrastructure d’identité, avec la possibilité d’appliquer les mêmes politiques d’accès conditionnel qu’ailleurs dans ton tenant. C’est une piste à suivre plutôt qu’une fonctionnalité disponible aujourd’hui, mais elle s’inscrit dans une tendance de fond : faire d’Entra ID le point de contrôle unique, y compris pour l’administration à distance historiquement gérée par clés.

    DSC v3 : la configuration as code passe un cap

    Desired State Configuration continue sa transformation en plateforme multiplateforme indépendante de PowerShell. DSC v3.2 doit atteindre la disponibilité générale sur la première moitié de 2026, avec des premières préversions d’un adaptateur Python permettant de créer des ressources pour Linux — un signe clair que DSC ne se limite plus à l’écosystème Windows. Le développement de la version 3.3 doit suivre juste après.

    Concrètement, DSC v3 fonctionne comme un outil autonome piloté en ligne de commande, avec des documents de configuration en YAML ou JSON :

    # Vérifier l'état actuel par rapport à la configuration désirée
    dsc config test --file ./serveur-web.config.dsc.yaml
    
    # Appliquer la configuration désirée
    dsc config set --file ./serveur-web.config.dsc.yaml
    

    Tu peux toujours réutiliser tes ressources PowerShell DSC existantes, mais l’outil lui-même ne dépend plus de PowerShell pour fonctionner — un choix d’architecture qui facilite son adoption sur des machines Linux ou macOS. Toute la documentation de référence, y compris le détail des commandes dsc config et dsc resource, est disponible sur Microsoft Learn.

    FAQ

    Faut-il déjà migrer vers PowerShell 7.7 ?

    Non, la plupart de ces fonctionnalités sont encore en développement ou en préversion : reste sur PowerShell 7.6 LTS pour tes environnements de production, et garde un œil sur les préversions 7.7 dans un environnement de test si tu veux anticiper les changements.

    DSC v3 va-t-il remplacer complètement DSC 1.1 / PowerShell DSC 2.0 ?

    À terme, c’est la direction prise par Microsoft, mais aucune date de fin de support n’a été annoncée pour les versions historiques. Si tu démarres un nouveau projet de configuration as code aujourd’hui, DSC v3 est le choix le plus pérenne.

    Le serveur MCP PowerShell est-il déjà utilisable ?

    Il est en cours de développement, avec un focus initial sur la sécurité plutôt que sur la disponibilité immédiate de fonctionnalités. Ce n’est pas encore un outil à déployer en production.

    L’authentification Entra ID pour OpenSSH remplace-t-elle les clés SSH classiques ?

    Pas dans l’immédiat : c’est une piste explorée par l’équipe, pas une fonctionnalité livrée. Continue de gérer tes clés SSH selon tes procédures actuelles en attendant une annonce plus concrète.

    Ce qu’il faut retenir

    Cette feuille de route confirme une tendance de fond : PowerShell se modernise sur trois fronts en parallèle — l’expérience développeur au quotidien (PSReadLine, chargement de modules), la gestion d’infrastructure as code multiplateforme (DSC v3), et l’intégration sécurisée avec les assistants IA (serveur MCP). Garde un œil sur les préversions si tu veux anticiper ces changements, mais rien ici ne justifie de bousculer ta feuille de route de production actuelle.

  • GitHub Actions et npm en 2026 : les défenses anti-supply-chain à activer maintenant

    GitHub Actions et npm en 2026 : les défenses anti-supply-chain à activer maintenant

    En mars, les attaques supply chain contre l’écosystème npm et GitHub Actions t’avaient donné des sueurs froides (on en a tiré les leçons dans cet article). Depuis, GitHub n’est pas resté les bras croisés : toute une série de protections concrètes ont été livrées tout au long de 2026, la dernière — les Workflow Execution Protections — étant passée en disponibilité générale le 17 septembre. Tu vas voir lesquelles activer en priorité sur tes pipelines, et comment.

    Pourquoi ça continue de te concerner

    Un pipeline CI/CD, c’est un accélérateur formidable… et une cible de choix. Il tourne avec des identifiants à privilèges (tokens de publication, secrets de déploiement, accès cloud), il exécute du code que tu ne maîtrises pas toujours entièrement (dépendances tierces, contributions externes), et il le fait à grande vitesse et sans supervision humaine directe. Les attaquants l’ont bien compris : plutôt que de viser une application, ils visent la chaîne qui la construit et la publie.

    La bonne nouvelle, c’est que GitHub a industrialisé ses réponses en 2026 autour de quatre axes : empêcher le compromis initial, empêcher l’exfiltration d’identifiants, ralentir la propagation d’un package compromis, et te permettre de réagir vite si ça arrive quand même. On les prend dans l’ordre.

    Empêcher le compromis initial de ton pipeline

    Un pull_request_target plus sûr par défaut

    Le déclencheur pull_request_target reste le piège numéro un : contrairement à pull_request, il exécute le workflow avec les secrets et les permissions du dépôt de base, même quand la pull request vient d’un fork. Si ton job fait un checkout du code de la fork et l’exécute (tests, build, script), tu ouvres la porte à un « pwn request » : du code non fiable qui tourne avec tes accès et peut exfiltrer tes secrets.

    GitHub a changé le comportement par défaut de actions/checkout dans ce contexte : il faut désormais un opt-out explicite après revue du risque pour que du code de fork s’exécute avec les privilèges du dépôt de base. C’est le genre de garde-fou qui t’évite l’erreur de configuration silencieuse. Le détail des bonnes pratiques est documenté dans le guide officiel « Securely using pull_request_target ».

    Workflow Execution Protections : la liste blanche des déclencheurs (GA depuis le 17 septembre 2026)

    C’est la nouveauté la plus structurante de septembre : tu peux désormais définir, au niveau entreprise, organisation ou dépôt, une liste blanche qui contrôle qui a le droit de déclencher un workflow (règles d’acteur) et quels événements peuvent le démarrer (règles d’événement), avec la possibilité de cibler des fichiers de workflow précis. Un mode « evaluate » te permet de tester la politique en conditions réelles avant de l’appliquer réellement, sans rien bloquer par erreur le premier jour.

    Détail important : sur les dépôts publics, une règle par défaut désactive désormais les événements pull_request_target, d’abord en mode évaluation — l’application effective (le blocage réel) est prévue pour le 2 novembre 2026. Si tu as des workflows publics qui en dépendent légitimement, c’est le moment de les auditer et de créer une exception explicite plutôt que de découvrir le blocage en novembre.

    Cache-mode : qui a le droit de lire ou d’écrire le cache (GA)

    Le cache d’Actions est une cible d’attaque sous-estimée : un attaquant qui parvient à écrire dans un cache partagé peut y déposer une dépendance piégée, que récupérera ensuite un job de confiance. La clé cache-mode, désormais généralement disponible, te permet d’appliquer le principe de moindre privilège au niveau du workflow ou du job :

    name: build
    on: pull_request_target
    cache-mode: read      # niveau workflow : autorise la restauration, bloque l'écriture
    
    jobs:
      build:
        runs-on: ubuntu-latest
        # cache-mode: write   # un job de confiance peut surcharger localement
        steps:
          - uses: actions/checkout@v5
          - uses: actions/cache@v4
            with:
              path: ~/.npm
              key: npm-${{ hashFiles('package-lock.json') }}
    

    Quatre valeurs possibles : read (restauration seule), write (restauration et écriture), write-only (écriture seule), none (aucun accès). Le réglage au niveau du job prévaut sur celui du workflow, y compris à travers des workflows réutilisables — un workflow appelé ne peut jamais hériter de plus de droits que celui qui l’appelle. GitHub affiche même une annotation d’avertissement si tu déclares un accès en écriture sur un événement à faible confiance comme pull_request_target. Le détail est dans le changelog GitHub officiel.

    Empêcher l’exfiltration d’identifiants

    Trusted publishing : la fin programmée des secrets à longue durée de vie

    Le trusted publishing (OIDC) permet de publier un package npm sans stocker le moindre token à durée de vie longue dans ton pipeline : GitHub échange un jeton d’identité éphémère contre une autorisation de publication au moment précis où elle a lieu. En 2026, ce mécanisme s’est étendu au-delà de GitHub Actions, avec l’ajout du support CircleCI — un signe que la filière converge vers « zéro secret long-lived » comme standard, quel que soit ton système de CI.

    Actions Network Firewall : voir ce qui sort réellement de tes runners (aperçu technique)

    Encore en aperçu technique, cette fonctionnalité journalise tout le trafic sortant de tes workflows et t’aide à repérer un comportement anormal — récupération de code malveillant, tentative d’exfiltration de credentials vers un domaine inconnu. Des restrictions d’egress réseau (bloquer les destinations non autorisées, pas seulement les journaliser) sont annoncées pour la suite. Si tu gères des pipelines sensibles, c’est une fonctionnalité à surveiller de près, y compris pendant sa phase preview.

    Ralentir la propagation d’un package compromis

    Dependabot cooldown : 3 jours de battement avant la mise à jour

    Une release npm fraîchement publiée est justement le moment où une compromission a le plus de chances de passer inaperçue. Dependabot applique désormais un délai minimum de trois jours avant d’ouvrir une pull request de mise à jour de dépendance — le temps que la communauté détecte et signale un package malveillant avant que tu ne l’intègres automatiquement. Les mises à jour de sécurité, elles, restent immédiates : ce cooldown ne s’applique qu’aux montées de version « de confort ».

    npm v12 : les scripts d’installation ne s’exécutent plus par défaut

    Beaucoup de compromissions npm passent par un postinstall malveillant qui s’exécute silencieusement dès npm install, avant même que tu aies lancé quoi que ce soit. Depuis npm v12, ces scripts d’installation sont désactivés par défaut : tu dois les réactiver explicitement si tu en as besoin, ce qui te force à une décision consciente plutôt qu’à une exécution automatique et invisible.

    Réagir vite si ça arrive quand même

    Malgré toutes ces couches de défense, prépare-toi aussi à l’incident : GitHub propose désormais une révocation d’identifiants en libre-service à l’échelle de l’entreprise (tous les identifiants utilisateurs d’un coup en cas de compromission avérée), et une API de révocation étendue qui couvre désormais les tokens OAuth et App en plus des tokens d’accès personnels. Avoir ce processus documenté et testé avant l’incident te fait gagner un temps précieux le jour où tu en as besoin.

    Check-list à appliquer cette semaine

    • Audite tes workflows utilisant pull_request_target et vérifie qu’aucun ne fait de checkout + exécution de code de fork sans contrôle.
    • Active les Workflow Execution Protections en mode évaluation sur tes dépôts sensibles pour voir l’impact avant l’application forcée du 2 novembre.
    • Passe en revue le cache-mode de tes workflows déclenchés par des événements à faible confiance.
    • Si tu publies sur npm, migre vers le trusted publishing pour éliminer les tokens de publication à longue durée de vie.
    • Documente (et teste) ta procédure de révocation de credentials en cas d’incident, avant d’en avoir besoin en urgence.

    FAQ

    Le cache-mode remplace-t-il les autres protections ?

    Non, c’est une couche parmi d’autres. Il réduit spécifiquement le risque de cache poisoning, mais ne protège pas contre l’exfiltration de secrets par un autre canal : tu as besoin des Workflow Execution Protections et d’un usage prudent de pull_request_target en complément.

    Dois-je m’inquiéter si j’utilise déjà GitHub-hosted runners standards ?

    Les runners hébergés par GitHub bénéficient déjà d’un bon niveau d’isolation par exécution, mais cela ne protège pas contre un secret exfiltré par un workflow mal configuré. Ces protections s’appliquent quel que soit le type de runner.

    Que se passe-t-il si je ne fais rien avant le 2 novembre 2026 ?

    Sur les dépôts publics, la règle par défaut désactivant pull_request_target passera du mode évaluation à l’application réelle : les workflows concernés seront bloqués s’ils ne respectent pas la politique. Autant l’anticiper maintenant en mode évaluation plutôt que de le découvrir en production.

    Ces protections concernent-elles aussi Azure Pipelines ou GitLab CI ?

    Les fonctionnalités détaillées ici sont spécifiques à GitHub Actions et à npm. D’autres plateformes CI/CD ont leurs propres mécanismes équivalents (protection des triggers, gestion des secrets, scan de dépendances) : le principe général — moindre privilège, zéro secret long-lived, délai avant adoption d’une nouvelle version — reste transposable partout.

    Pour aller plus loin

    Aucune de ces protections n’est magique prise isolément : c’est leur empilement qui fait la différence face à des attaques de plus en plus automatisées. Commence par la check-list ci-dessus sur tes dépôts les plus critiques, active le mode évaluation des Workflow Execution Protections dès maintenant, et reviens régulièrement vérifier l’avancement de l’Actions Network Firewall : c’est probablement la prochaine brique qui passera en disponibilité générale.

  • GitLab CVE-2026-85706 : faille critique CVSS 10, patch immédiat

    GitLab CVE-2026-85706 : faille critique CVSS 10, patch immédiat

    Si tu gères une instance GitLab self-managed (Community ou Enterprise Edition), il y a de fortes chances que tu aies déjà vu passer une alerte cette semaine : CVE-2026-85706, une faille de traversée de répertoire notée 10.0 sur 10 à l’échelle CVSS — le score maximal possible. Elle permet à un attaquant non authentifié de lire n’importe quel fichier sur ton serveur, y compris du code source et des identifiants, avec une simple requête HTTP. Elle est activement exploitée, elle figure dans le catalogue Known Exploited Vulnerabilities (KEV) de la CISA, et GitLab a publié un correctif d’urgence le 10 septembre 2026.

    Si ce n’est pas déjà fait, ce qui suit est prioritaire sur à peu près tout le reste de ta liste de tâches du jour.

    Ce que fait exactement la faille

    CVE-2026-85706 se situe dans l’API des commits de dépôt de GitLab. Le problème vient d’un défaut de confinement de chemin combiné à une absence de vérification d’authentification sur cet endpoint : un attaquant peut construire une requête qui sort du répertoire attendu pour aller lire des fichiers arbitraires sur le système de fichiers du serveur — configuration, clés, code source privé, tout ce qui est accessible au compte de service GitLab.

    Contrairement à beaucoup de vulnérabilités « critiques » qui nécessitent des conditions particulières pour être exploitables, celle-ci ne demande aucune authentification préalable. C’est ce qui explique à la fois le score CVSS maximal et la vitesse à laquelle l’exploitation active a démarré : des chercheurs ont observé du sondage actif dans les jours qui ont suivi la publication du correctif, le temps que les attaquants fassent de la rétro-ingénierie du patch pour reconstruire l’exploit.

    Es-tu concerné ?

    La faille touche les déploiements self-managed uniquement :

    • GitLab CE/EE versions 18.7 à 19.1 (avant 19.1.8)
    • GitLab CE/EE versions 19.2 (avant 19.2.6)
    • GitLab CE/EE versions 19.3 (avant 19.3.2)

    Tous les modes d’installation sont concernés — Omnibus, installation depuis les sources, Helm chart. GitLab.com et les instances Dedicated sont déjà protégées côté GitLab, tu n’as rien à faire pour ces offres managées. Si tu héberges toi-même ton instance, en revanche, la responsabilité du correctif t’incombe entièrement.

    Comment corriger

    Mets à jour vers l’une des versions patchées selon ta branche actuelle :

    # Vérifie ta version actuelle
    sudo gitlab-rake gitlab:env:info
    
    # Cible une des versions corrigées selon ta branche
    # 19.1.x -> 19.1.8
    # 19.2.x -> 19.2.6
    # 19.3.x -> 19.3.2
    

    GitLab est explicite sur ce point dans son avis de sécurité officiel : toutes les installations concernées doivent être mises à niveau vers la dernière version dès que possible, en dehors du cycle de correctifs habituel si nécessaire. Ce patch corrige aussi 19 autres vulnérabilités dans la même publication, dont deux autres failles critiques (désérialisation GraphQL et un dépassement de tampon) — une bonne raison supplémentaire de ne pas traîner.

    Point opérationnel à anticiper : le correctif inclut des migrations de base de données. Sur une installation mono-nœud, ça se traduit par une interruption de service pendant la mise à jour. Si tu es en configuration multi-nœuds, tu peux appliquer la procédure de mise à niveau zéro downtime documentée par GitLab pour éviter la coupure.

    Si tu ne peux pas patcher immédiatement

    Une mise à jour d’urgence n’est pas toujours possible dans l’instant, surtout un week-end ou sur une instance avec des dépendances lourdes. En attendant de patcher :

    • Restreins l’exposition réseau de ton instance GitLab à un VPN ou une liste d’IP de confiance si ce n’est pas déjà le cas — cette faille ne nécessitant aucune authentification, réduire la surface réseau exposée limite directement le risque
    • Surveille tes logs d’accès pour des motifs de requêtes suspectes sur l’API des commits (séquences `../` ou équivalents encodés dans les paramètres d’URL)
    • Considère une règle WAF temporaire bloquant les tentatives de traversée de chemin sur les endpoints de l’API des commits, en sachant que ce n’est qu’une mesure d’atténuation, pas un correctif

    Aucune de ces mesures ne remplace la mise à jour — elles réduisent la fenêtre de risque, elles ne la ferment pas.

    Après le patch : ne t’arrête pas là

    Vu la nature de la faille — lecture arbitraire de fichiers, potentiellement des identifiants ou des clés — patcher ne suffit pas si ton instance a été exposée avant la mise à jour. Il est recommandé de traiter cet incident comme une possible compromission :

    • Fais tourner (rotate) les secrets et identifiants stockés sur le serveur : clés SSH de déploiement, tokens d’intégration, secrets de variables CI/CD
    • Vérifie tes logs d’accès sur la période où ton instance a été exposée pour repérer des requêtes anormales vers l’API des commits
    • Si tu disposes d’outils de détection, des règles Sigma et Suricata/Snort spécifiques à cette CVE circulent déjà dans la communauté sécurité pour faciliter la chasse aux indicateurs de compromission

    Ce réflexe « patch + rotation + vérification des logs » rejoint directement la logique qu’on avait détaillée pour le Patch Tuesday de septembre : une faille critique activement exploitée se traite comme un incident potentiel, pas comme une simple case à cocher dans un tableau de suivi de patchs.

    FAQ

    GitLab.com est-il concerné ?

    Non. GitLab.com et les instances GitLab Dedicated sont des offres managées par GitLab et ont déjà été protégées côté éditeur. Seules les instances self-managed (que tu héberges et administres toi-même) nécessitent une action de ta part.

    Comment savoir si mon instance a déjà été ciblée ?

    Recherche dans tes logs d’accès des requêtes vers l’API des commits contenant des séquences de traversée de chemin (`../` ou leurs variantes encodées en URL) sur la période depuis la divulgation de la faille début septembre. Des scanners de détection dédiés à cette CVE sont disponibles publiquement si tu veux automatiser cette recherche.

    La CISA impose-t-elle un délai pour ce correctif ?

    La CISA a fixé une échéance de remédiation obligatoire au 14 septembre 2026, mais uniquement pour les agences fédérales américaines relevant de sa directive opérationnelle contraignante. Pour toute autre organisation, il n’y a pas d’obligation légale liée à la CISA — ce qui ne change rien à l’urgence réelle, vu l’exploitation active confirmée.

    En résumé

    Un CVSS de 10.0 combiné à une exploitation active et une absence totale de prérequis d’authentification, c’est la définition même d’une urgence à traiter en dehors des fenêtres de maintenance habituelles. Si tu gères une instance GitLab self-managed en version 19.3.1 ou antérieure, vérifie ta version dès maintenant, planifie la fenêtre de mise à jour si tu es en mono-nœud, et prévois la rotation de tes secrets si l’exposition a duré plus de quelques heures depuis la divulgation.