0Pricing
AI Agents · Leçon

Rotation et sécurité des secrets

Expiration des secrets, stratégies de rotation et solutions de coffre-fort (AWS Secrets Manager).

Rotation et sécurité des secrets est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.

Pourquoi renouveler les secrets

Même si un secret n’a jamais été explicitement exposé, le renouveler régulièrement limite les dommages d’une compromission passée inaperçue. Une clé dérobée à votre insu il y a 6 mois devient inutilisable après son renouvellement.

De nombreuses normes de sécurité (SOC 2, PCI-DSS) exigent un renouvellement périodique des secrets. Concevoir un code d’agent facilitant le renouvellement est une pratique professionnelle.

Politiques d’expiration des clés d’API

Les différents fournisseurs appliquent des politiques d’expiration différentes. Certains vous permettent de définir des dates d’expiration pour les clés ; d’autres fournissent des clés qui n’expirent jamais, sauf en cas de renouvellement manuel. Auditez régulièrement vos clés et programmez des rappels dans votre calendrier pour les renouvellements manuels.

# Key rotation schedule by provider (as of mid-2025):
# OpenAI: no automatic expiry, rotate manually every 90 days
# Anthropic: no automatic expiry, rotate manually every 90 days
# Google Cloud: API keys can have expiry dates set in the console
# AWS: IAM access keys: rotate every 90 days (AWS Security Hub recommends)
# Tavily: no automatic expiry, rotate when suspected compromise

# Best practices:
# - Set a recurring calendar event: 'Rotate API keys'
# - Document when each key was last rotated
# - Store rotation date in a secrets manager, not a spreadsheet
print('Schedule key rotation every 60-90 days as a standing task')

AWS Secrets Manager pour les agents

AWS Secrets Manager stocke les secrets en toute sécurité et prend en charge leur renouvellement automatique. Votre agent récupère la valeur actuelle du secret à l’exécution via le SDK — aucune clé codée en dur et aucun fichier .env en production.

# pip install boto3
import boto3
import json

def get_secret(secret_name: str, region: str = 'us-east-1') -> dict:
    client = boto3.client('secretsmanager', region_name=region)
    response = client.get_secret_value(SecretId=secret_name)
    return json.loads(response['SecretString'])

# Store secrets as JSON in Secrets Manager:
# Secret name: 'prod/myagent/api-keys'
# Secret value: {'OPENAI_API_KEY': 'sk-...', 'SEARCH_API_KEY': 'tvly-...'}

# Fetch at agent startup:
# secrets = get_secret('prod/myagent/api-keys')
# openai_key = secrets['OPENAI_API_KEY']

HashiCorp Vault pour les secrets

HashiCorp Vault est un système de gestion des secrets à code source ouvert, populaire dans les environnements d’entreprise. Il prend en charge les secrets dynamiques, un contrôle d’accès précis et la journalisation de chaque accès à un secret.

# pip install hvac
import hvac
import os

def get_vault_secret(path: str, key: str) -> str:
    client = hvac.Client(
        url=os.environ['VAULT_ADDR'],
        token=os.environ['VAULT_TOKEN']  # from env, not hard-coded
    )

    if not client.is_authenticated():
        raise RuntimeError('Vault authentication failed')

    response = client.secrets.kv.read_secret_version(path=path)
    return response['data']['data'][key]

# Usage:
# openai_key = get_vault_secret('secret/myagent', 'OPENAI_API_KEY')

# Vault provides:
# - Audit log of every secret read
# - Lease-based secrets that expire automatically
# - Fine-grained ACL policies

Analyse des secrets : truffleHog

truffleHog analyse les dépôts git à la recherche de secrets susceptibles d’avoir été validés accidentellement. Il vérifie l’intégralité de l’historique des validations, et pas seulement le code actuel. Exécutez-le avant de rendre un dépôt public.

# pip install trufflehog
# Or: brew install trufflehog (Mac)

# Scan current git repository:
# trufflehog git file://.

# Scan only recent commits:
# trufflehog git file://. --since-commit HEAD~50

# Scan a GitHub repository:
# trufflehog github --repo https://github.com/yourorg/yourrepo

# truffleHog detects:
# - OpenAI API keys (sk-proj-...)
# - Anthropic keys (sk-ant-...)
# - AWS access keys (AKIA...)
# - Private keys (BEGIN RSA PRIVATE KEY)
# - And 700+ other secret patterns

print('Run truffleHog before open-sourcing any private repository')

git-secrets : protection avant validation

git-secrets est un outil de hook git fourni par AWS qui bloque les validations contenant des secrets correspondant aux motifs configurés. Il s’exécute avant chaque validation et la rejette lorsqu’un motif de secret est trouvé.

# Install:
# brew install git-secrets  (Mac)
# or: git clone https://github.com/awslabs/git-secrets && make install

# Set up in your repo:
# git secrets --install
# git secrets --register-aws  (adds AWS key patterns)

# Add custom patterns (e.g., OpenAI keys):
# git secrets --add 'sk-proj-[A-Za-z0-9_-]{48,}'

# Now attempting to commit a secret:
# git add agent.py  # file containing API key
# git commit -m 'add agent'
# [ERROR] Untracked secret found in agent.py
# Commit blocked!

print('git-secrets prevents secrets from ever entering git history')

Que faire si une clé est exposée

Un plan d’intervention étape par étape en cas de compromission d’une clé API. La rapidité est essentielle : les analyseurs automatisés récupèrent les clés exposées quelques minutes après une validation.

# INCIDENT RESPONSE: Exposed API Key
#
# Step 1 (IMMEDIATE): Revoke the exposed key
#   OpenAI: platform.openai.com/api-keys -> Delete key
#   Anthropic: console.anthropic.com -> API Keys -> Delete
#   AWS: IAM console -> Access Keys -> Deactivate/Delete
#
# Step 2: Generate a new key
#   Create a replacement key with the same permissions
#
# Step 3: Update everywhere
#   - Local .env
#   - Staging environment
#   - Production environment (Secrets Manager / Vault)
#   - CI/CD secrets (GitHub Actions, GitLab CI)
#
# Step 4: Audit usage
#   - Check provider usage logs for unauthorized activity
#   - Check billing for unexpected charges
#
# Step 5: Prevent recurrence
#   - Add pattern to git-secrets
#   - Enable pre-commit hooks
print('Revoke first. Then rotate. Then audit. Then prevent.')

Détecter une utilisation non autorisée

Après avoir renouvelé une clé, vérifiez si elle a été utilisée sans autorisation. La plupart des fournisseurs proposent des journaux d’utilisation et des alertes de dépenses qui peuvent révéler si une clé volée a servi à effectuer des appels d’API.

import openai
import datetime

client = openai.OpenAI(api_key='YOUR_NEW_API_KEY')

# Check OpenAI usage for the past day
# (requires usage read permissions on the key)
def check_recent_usage():
    # OpenAI billing/usage dashboard: platform.openai.com/usage
    # Set up spending alerts: platform.openai.com/account/limits
    # - 'Email alert' when monthly spend exceeds $X

    print('Suspicious usage indicators to look for:')
    print('1. Spikes in token usage outside business hours')
    print('2. Requests from unexpected IP addresses')
    print('3. Models or endpoints you do not use')
    print('4. Unusual cost patterns')
    print('\nAlways set spending limits and alerts on new API keys')

check_recent_usage()

Fixer des limites de dépenses pour les clés API

Fixez des limites strictes de dépenses pour vos clés API afin de limiter les dégâts causés par une clé compromise. Même si quelqu’un utilise votre clé, cette personne ne peut pas accumuler une facture illimitée.

# OpenAI spending limits:
# platform.openai.com/account/limits
# - Set 'Monthly budget' (hard limit — API stops when reached)
# - Set 'Email notification threshold' (soft alert)

# Best practice for agent keys:
# - Development key: $5-10/month hard limit
# - Staging key: $20-50/month hard limit
# - Production key: Based on expected usage + 2x buffer
# - CI/CD test key: $5/month hard limit (mocks should handle most tests)

# Anthropic:
# console.anthropic.com -> Settings -> Spending Limits

# Use separate keys per environment so limits are independent
print('Spending limits cap the blast radius of a compromised key')

Principe du moindre privilège pour les clés

Accordez à chaque clé API uniquement les autorisations dont elle a besoin. Une clé qui ne lit que des données ne devrait pas disposer d’autorisations d’écriture ou de suppression. La plupart des fournisseurs prennent en charge les clés limitées à un périmètre ou à certaines autorisations.

# Principle of Least Privilege applied to agent API keys:

# OpenAI key scopes (if API allows scoped keys):
# - Read-only key: for logging/audit agents
# - Write key: for agents that create content
# - Admin key: NEVER use in agent code — only for management

# Tavily API:
# - Basic plan: limited search results
# - Research plan: more results, images
# Use the plan appropriate to the agent's needs

# AWS IAM for agents:
# Create a dedicated IAM role/user per agent with only the S3/DynamoDB
# paths it needs to read/write. No admin permissions.

# Rule: If the key is compromised, how much damage can be done?
# Minimize the answer through scoped permissions.
print('Least privilege limits blast radius of any single key compromise')

Créer une vérification de validité d’une clé

Vérifiez que vos clés API sont toujours valides au démarrage de l’agent. Détectez immédiatement les clés expirées ou révoquées plutôt que d’attendre un échec en cours de tâche, après que l’agent a déjà consommé des ressources.

import openai

def check_openai_key_health(api_key: str) -> bool:
    try:
        client = openai.OpenAI(api_key=api_key)
        # Make a minimal API call to verify the key
        models = client.models.list()
        print(f'OpenAI key valid. {len(list(models))} models available.')
        return True
    except openai.AuthenticationError:
        print('ERROR: OpenAI API key is invalid or expired.')
        return False
    except openai.PermissionDeniedError:
        print('ERROR: API key lacks required permissions.')
        return False

# At agent startup:
# import os
# if not check_openai_key_health(os.environ['OPENAI_API_KEY']):
#     raise SystemExit('Cannot start: invalid API key')

Vérification des connaissances : rotation et sécurité des secrets

Vérifiez votre compréhension de la rotation des secrets et des pratiques de sécurité.

Récapitulatif : rotation et sécurité des secrets

Vous disposez désormais d’une stratégie complète de sécurité des secrets pour les agents en production :

  • Renouvelez les clés API tous les 60 à 90 jours de manière systématique
  • Utilisez AWS Secrets Manager ou HashiCorp Vault dans les environnements de production
  • Exécutez truffleHog avant de rendre un dépôt public
  • Installez git-secrets comme crochet de prévalidation pour empêcher les validations accidentelles
  • Si une clé est exposée : révoquez-la immédiatement, renouvelez-la, puis vérifiez son utilisation
  • Fixez des limites de dépenses pour toutes les clés API afin de limiter les dégâts en cas de compromission
  • Appliquez le principe du moindre privilège : accordez à chaque clé uniquement les autorisations dont elle a besoin

Questions Fréquemment Posées

La leçon « Rotation et sécurité des secrets » est-elle gratuite ?

Oui — le texte complet de « Rotation et sécurité des secrets » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Rotation et sécurité des secrets » ?

Expiration des secrets, stratégies de rotation et solutions de coffre-fort (AWS Secrets Manager). Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer AI Agents ?

Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Rotation et sécurité des secrets » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?

Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Variables d’environnement pour les agents
  2. Fichiers .env et python-dotenv
  3. Rotation et sécurité des secrets
  4. Profils de configuration pour le développement et la production
← Retour à AI Agents