tadata
← Retour à l'accueil

Gestion des Secrets : Protéger les Clés de Votre Royaume

#security#devops#secrets#cloud#infrastructure

Chaque système a des secrets : clés API, identifiants de base de données, certificats TLS, clés de chiffrement, tokens OAuth. La façon dont vous les gérez détermine si une seule compromission se propage en brèche totale. La gestion des secrets n'est pas un choix d'outil -- c'est une discipline architecturale.

Taxonomie des Types de Secrets

tadata
  • Identifiants
    • Mots de passe de bases de données
    • Clés de comptes de service
    • Clés SSH
    • Clés / tokens d'API
  • Certificats
    • Certificats TLS/SSL
    • Certificats clients mTLS
    • Certificats de signature de code
    • Clés privées d'AC
  • Clés de chiffrement
    • Clés de chiffrement des données (DEK)
    • Clés de chiffrement de clés (KEK)
    • Clés maîtres KMS
    • Clés de chiffrement applicatives
  • Tokens
    • Tokens OAuth d'accès / de rafraîchissement
    • Clés de signature JWT
    • Secrets de webhook
    • Secrets de session
  • Secrets de configuration
    • Chaînes de connexion
    • Identifiants SMTP
    • Secrets d'API tierces
    • Clés de licence
Types de secrets

Comparaison des Outils

CapacitéHashiCorp VaultAWS Secrets ManagerGCP Secret ManagerSOPS
TypePlateforme complèteService managéService managéChiffrement fichiers
Secrets dynamiquesOuiNonNonNon
Rotation autoOui (intégrée)Oui (via Lambda)Oui (Cloud Functions)N/A
Multi-cloudOuiAWS uniquementGCP uniquementOui
Compatible GitOpsExternal Secrets OperatorExternal Secrets OperatorExternal Secrets OperatorNatif
ComplexitéHauteBasseBasseBasse
tadata
  • New secret needed
    • → Can it be short-lived or dynamic (DB creds, cloud tokens, PKI)?
      • Yes: Vault / OpenBao dynamic secrets with leases, or cloud IAM roles and OIDC federation: no static secret at all
      • No: Consumed by a Kubernetes workload?
        • Yes: Must the encrypted value be versioned in git (GitOps)?
          • Yes: SOPS with age or cloud KMS keys (Flux native), or Sealed Secrets when cluster-bound is acceptable
          • No: External Secrets Operator or Secrets Store CSI driver from the cloud manager or Vault
        • No: Single cloud provider?
          • Yes: Cloud secret manager (AWS Secrets Manager / SSM SecureString, Azure Key Vault, GCP Secret Manager) + managed identity
          • No: Vault / OpenBao (multi-cloud, on-prem, transit encryption, PKI)
Où ce secret doit-il vivre ?

Extrait de la fiche « Infrastructure as Code and Secrets » · Demander la fiche complète

Patterns de Rotation

PatternDescriptionFréquenceRisque de Coupure
Rotation manuelleHumain change le secret, met à jour les consommateursAd-hocÉlevé
Rotation planifiéeJob automatisé sur une cadence30-90 joursFaible
Secrets dynamiquesSecret généré par session, auto-expirePar requêteAucun
Rotation double-secretDeux versions actives, rotation alternéeContinueAucun
Zero-standing-secretsPas de secrets persistants, génération JIT via OIDCPar requêteAucun
tadata

Center: ≤ 90 days

  1. Generate — random, in the manager, never by hand
  2. Distribute — pulled at runtime by identity, not baked in
  3. Use — short time-to-live (TTL), scoped, audited access
  4. Monitor — alert on reads by new principals, on age
  5. Rotate — new version active while old still valid
  6. Revoke — old version disabled, then destroyed

↻ then back to step 1

Cycle de rotation (le chevauchement de deux clés évite toute interruption)

Extrait de la fiche « Infrastructure as Code and Secrets » · Demander la fiche complète

Catalogue d'Anti-Patterns

Anti-PatternPourquoi c'est DangereuxQue Faire à la Place
Secrets dans le code sourceFuites via historique git, forks, logsUtiliser un gestionnaire de secrets, scanner avec truffleHog
Secrets en variables d'environnementVisibles dans les listings de processusMonter en fichiers, utiliser CSI driver ou sidecar
Comptes de service partagésPas d'attribution, rotation impossibleIdentité par service, credentials éphémères
Clés API à longue duréeLarge rayon d'impact si compromisSecrets dynamiques, fédération OIDC, rotation auto
Secrets dans la config CI/CDAccessibles à quiconque a accès au repoAuth OIDC vers vault, zéro secret statique
Copier-coller de secrets via SlackPas de piste d'auditUtiliser un gestionnaire de secrets avec UI

Recommandations Stratégiques

Commencez par un scan. Avant de choisir un outil, comprenez votre exposition actuelle. Lancez truffleHog ou gitleaks sur tout votre historique git.

Adoptez la fédération OIDC. Les plateformes CI/CD modernes (GitHub Actions, GitLab CI) supportent les tokens OIDC qui s'authentifient directement auprès des fournisseurs cloud et de Vault -- éliminant totalement les secrets statiques de CI/CD.

Les secrets dynamiques sont l'objectif final. Les secrets dynamiques de Vault (identifiants BDD générés par pod, expirés après TTL) éliminent totalement le problème de rotation.

Chiffrez les secrets dans git pour le GitOps. SOPS avec age ou cloud KMS permet de stocker des secrets chiffrés à côté du code applicatif.

tadata

Actors: CI job, GitHub OIDC, AWS STS, AWS API

  1. CI job → GitHub OIDC request ID token (needs permissions: id-token: write)
  2. GitHub OIDC ⇠ CI job signed JWT: aud sts.amazonaws.com, sub repo:org/app:ref:refs/heads/main
  3. CI job → AWS STS AssumeRoleWithWebIdentity(role ARN, JWT)
  4. AWS STS: STS checks the signature, the audience and the sub condition of the role trust policy
  5. AWS STS ⇠ CI job temporary keys (ASIA...), 1 h by default
  6. CI job → AWS API deploy with the temporary keys
De GitHub Actions vers AWS sans clé stockée : fédération OIDC (OpenID Connect) ; la trust policy décide quel dépôt et quelle branche peuvent assumer le rôle

Extrait de la fiche « Secrets and Credential Hygiene for Developers » · Demander la fiche complète

Ressources

Nous utilisons des cookies analytiques pour améliorer votre expérience. Aucune donnée personnelle n'est collectée.