Tous les articles
-
Signaler un échec partiel de façon structurée
Renvoyer un résultat par opération ainsi qu'un état agrégé explicite, afin que le travail réussi ne soit pas répété après un résultat mixte.
-
Créer un miroir RAID1 logiciel avec mdadm et remplacer un disque défaillant
mdadm --create construit une grappe RAID logicielle Linux à partir de partitions ou de disques entiers ; sans entrée dans mdadm.conf et sans mise à jour de l'initramfs, la grappe peut ne pas se réassembler au démarrage suivant, alors qu'elle fonctionne parfaitement juste après sa création.
-
Diagnostiquer l'application des stratégies de groupe : gpresult, gpupdate et le module GroupPolicy
Comment lire les stratégies réellement appliquées à un ordinateur ou à un utilisateur avec gpresult /h et Get-GPResultantSetOfPolicy, forcer leur retraitement avec gpupdate /force, et sauvegarder un GPO avec Backup-GPO avant de le modifier.
-
Le traçage distribué en bref : spans, ID parent et propagation du contexte de trace W3C
Une trace est un arbre de spans, chacun doté d'un ID de trace, de son propre ID de span, d'un ID de span parent, d'horodatages, d'attributs et d'un statut ; l'en-tête W3C traceparent transporte l'ID de trace, l'ID parent et un indicateur sampled au-delà des frontières de processus, et un service qui se contente de transmettre les deux en-têtes conserve tout de même l'intégrité des traces.
-
Empoisonnement de mémoire : quand une instruction injectée survit dans toutes les sessions suivantes
Des agents dotés d'une mémoire persistante peuvent être amenés à enregistrer l'instruction d'un attaquant comme s'il s'agissait d'un fait ou d'une préférence ; elle influence ensuite des sessions qui n'ont jamais vu le contenu d'origine. Les écritures en mémoire ont besoin de provenance, de relecture et d'une expiration, et les lectures en mémoire doivent être traitées comme du texte non fiable.
-
Choisir le prochain contrôle de débogage selon les hypothèses qu'il permet de distinguer
Empêcher une investigation de répéter des diagnostics à faible valeur informative en choisissant chaque contrôle suivant en fonction des explications concurrentes que son résultat peut départager.
-
Stocker les mots de passe et les clés d'API
Les mots de passe ne sont stockés que sous forme de hachages lents et salés (Argon2id, scrypt, bcrypt) ; les clés d'API à forte entropie peuvent utiliser un hachage rapide à clé ; les deux sont comparés en temps constant et ne sont jamais journalisés ni renvoyés après leur émission.
-
Comparaison de la synchronisation d'horloge : chrony, systemd-timesyncd, w32tm, timed de macOS et xntpd d'AIX
Aide-mémoire pour vérifier si l'horloge d'un hôte est réellement synchronisée, avec les démons de temps utilisés sous Linux, Windows, macOS et AIX. Il ne s'agit pas d'une étude approfondie d'un outil en particulier, car la vérification a partout la même forme : une source est-elle configurée, et l'horloge est-elle actuellement synchronisée ?
-
Ajouter une autorité de certification privée au magasin de confiance système sur RHEL et dérivés, Debian et Ubuntu
Les distributions Linux des familles RHEL et Debian utilisent des mécanismes distincts pour ajouter un certificat d'AC approuvé localement : update-ca-trust avec des ancres sous /etc/pki/ca-trust, et update-ca-certificates avec des fichiers .crt sous /usr/local/share/ca-certificates. Un mauvais répertoire ou une mauvaise extension laisse l'AC non approuvée, sans aucune erreur.
-
Codes de sortie de wget et rsync : les codes 23 et 24 de rsync ne sont généralement pas l'échec qu'ils semblent être
wget attribue un petit code fixe à chaque classe d'erreur (réseau, SSL, authentification, protocole) ; la table de rsync, plus étendue, comprend 23 (transfert partiel dû à une erreur) et 24 (transfert partiel dû à des fichiers sources disparus), ce dernier signifiant couramment qu'un fichier a disparu en cours d'analyse, et ne prouvant pas que le transfert soit défaillant.
-
Conventional Commits : des types de commit lisibles par une machine
La spécification Conventional Commits ajoute aux messages de commit un préfixe typé (feat, fix, et d'autres) ainsi que des marqueurs de changement incompatible, afin que les journaux de changements et les incréments de version puissent être dérivés automatiquement.
-
Les mots de passe à usage unique basés sur le temps comme second facteur
TOTP (RFC 6238) dérive un code court d'un secret partagé et du pas de temps courant ; il protège contre la réutilisation de mot de passe mais pas contre le hameçonnage en temps réel, et nécessite un stockage sûr du secret, une tolérance d'horloge et des codes de récupération.
-
Acheminement des alertes : regroupement, inhibition, mises en sourdine et politiques d'escalade
Entre une alerte qui se déclenche et un téléphone se trouvent quatre décisions : quelle équipe et quel canal la reçoivent (arbre d'acheminement), quelles alertes voyagent ensemble (regroupement avec group_wait, group_interval et repeat_interval), lesquelles sont mises en sourdine parce qu'une alerte cause les explique déjà (inhibition) ou parce qu'une maintenance est planifiée (mises en sourdine / silences), et combien de temps un répondant dispose avant que l'alerte n'escalade vers la personne suivante.
-
Faire des requêtes HTTP correctement depuis Python
Définir un délai d'expiration (timeout) sur chaque requête, réutiliser un client pour la mise en commun des connexions (connection pooling), envoyer les en-têtes Accept et User-Agent, décoder selon le jeu de caractères déclaré, gérer délibérément les codes de statut et les nouvelles tentatives ; la bibliothèque standard et httpx le permettent toutes deux.
-
Exécuter un service sous systemd
Un fichier d'unité déclare comment un service démarre, redémarre et est confiné ; utiliser Type, Restart=on-failure, des limites de ressources et des directives de sandboxing, et lire les journaux avec journalctl plutôt que d'écrire sa propre démonisation.
-
Vérifier qu'un correctif de sécurité est bien appliqué : comparer les versions installées aux avis des éditeurs sur les différentes familles d'OS
Une tâche de mise à jour qui indique un succès ne prouve pas qu'une vulnérabilité donnée est corrigée : il faut comparer la version du paquet ou du build installé à l'avis de l'éditeur (USN Ubuntu, avis de la famille RHEL (RHSA sous RHEL) via dnf updateinfo --security, DSA Debian via debsecan, Get-HotFix sous Windows, numéro de build macOS face à la page de versions de sécurité d'Apple). Un redémarrage en attente peut en outre laisser tourner l'ancien binaire vulnérable, même quand cette vérification est concluante.
-
Les identifiants client OAuth 2.0 pour l'accès machine à machine
Le grant client credentials permet à un service ou à un agent d'obtenir un jeton d'accès avec son propre identifiant client et son secret, sans utilisateur ; les indicateurs de scope et de ressource délimitent le jeton, et le secret doit être traité comme un mot de passe : stocké haché par le serveur et régulièrement remplacé (roté) par le client.
-
Restreindre les règles du Pare-feu Windows Defender avec NetSecurity sans se couper de sa propre session
Get-NetFirewallProfile et New-NetFirewallRule permettent de gérer le Pare-feu Windows Defender depuis PowerShell. Limiter une règle avec -RemoteAddress et -Profile n'ouvre un port d'administration qu'aux adresses et aux types de réseau concernés, et un test depuis une seconde session évite de couper celle que l'on utilise.
-
La gouvernance d'un petit projet : des droits de décision écrits avant d'en avoir besoin
Un fichier de gouvernance répond aux questions suivantes : qui peut fusionner, qui tranche un désaccord de périmètre, comment les mainteneurs sont ajoutés et retirés, et comment les règles elles-mêmes changent. La PEP 13 de Python présente un modèle de conseil dont l'autorité est censée être exercée rarement et avec une délibération publique ; le glossaire d'Apache définit le consensus tacite (lazy consensus), selon lequel une proposition passe si personne ne s'y oppose dans un délai fixé. Un projet avec un à trois mainteneurs n'a besoin que d'une page.
-
Apprentissage auto-supervisé contrastif : paires, augmentation et effondrement
Apprendre des représentations en comparant des vues liées et des vues contrastées, choisir des transformations qui préservent l'information utile et évaluer les représentations au-delà de la perte d'entraînement.
Lisible par machine : JSON