AI Agents · Lezione

Rotazione e sicurezza dei segreti

Scadenza dei segreti, strategie di rotazione e soluzioni vault (AWS Secrets Manager)

Lezione 3 di 413 passaggi

Rotazione e sicurezza dei segreti è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.

Perché è necessario ruotare i segreti

Anche se un segreto non viene mai esposto esplicitamente, ruotarlo regolarmente limita i danni di una violazione non rilevata. Una chiave sottratta silenziosamente 6 mesi fa diventa inutilizzabile dopo la rotazione.

Molti standard di sicurezza (SOC 2, PCI-DSS) richiedono la rotazione periodica dei segreti. Scrivere codice per gli agenti che faciliti la rotazione è una pratica professionale.

Criteri di scadenza delle chiavi API

I diversi provider adottano criteri di scadenza differenti. Alcuni consentono di impostare date di scadenza per le chiavi; altri rilasciano chiavi che non scadono mai, a meno che non vengano ruotate manualmente. Verifichi regolarmente le chiavi e imposti promemoria nel calendario per la rotazione manuale.

# 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 per gli agenti

AWS Secrets Manager memorizza i segreti in modo sicuro e supporta la rotazione automatica. L'agente recupera il valore corrente del segreto a runtime tramite l'SDK: nessuna chiave codificata direttamente nel codice e nessun file .env in produzione.

# 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 per la gestione dei segreti

HashiCorp Vault è un sistema open source per la gestione dei segreti, diffuso negli ambienti aziendali. Supporta segreti dinamici, controllo granulare degli accessi e registrazione nei log di ogni accesso ai segreti.

# 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

Scansione dei segreti: truffleHog

truffleHog analizza i repository Git alla ricerca di segreti che potrebbero essere stati inseriti accidentalmente. Controlla l'intera cronologia dei commit, non solo il codice corrente. Lo esegua prima di rendere pubblico un repository.

# 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: protezione pre-commit

git-secrets è uno strumento basato su hook Git di AWS che blocca i commit contenenti segreti corrispondenti a schemi configurati. Viene eseguito prima di ogni commit e lo rifiuta se trova uno schema di segreto.

# 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')

Cosa fare se una chiave viene esposta

Un piano di risposta dettagliato per una chiave API compromessa. La rapidità è fondamentale: gli scanner automatici raccolgono le chiavi esposte entro pochi minuti da un commit.

# 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.')

Rilevare l'utilizzo non autorizzato

Dopo aver ruotato una chiave, verifichi se è stata utilizzata senza autorizzazione. La maggior parte dei provider offre registri di utilizzo e avvisi di spesa che possono rivelare se una chiave sottratta è stata usata per effettuare chiamate 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()

Impostare limiti di spesa per le chiavi API

Imposti limiti di spesa rigidi per le chiavi API, così da contenere i danni causati da una chiave compromessa. Anche se qualcuno utilizza la Sua chiave, non può far lievitare la fattura senza limiti.

# 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')

Principio del privilegio minimo per le chiavi

Assegni a ogni chiave API solo le autorizzazioni necessarie. Una chiave che consente esclusivamente di leggere i dati non dovrebbe avere autorizzazioni di scrittura o eliminazione. La maggior parte dei provider supporta chiavi con ambito o autorizzazioni limitati.

# 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')

Creare un controllo dello stato della chiave

Verifichi che le chiavi API siano ancora valide all'avvio dell'agente. In questo modo è possibile rilevare immediatamente le chiavi scadute o revocate, invece di interrompere un'attività a metà dopo che l'agente ha già consumato risorse.

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')

Verifica delle conoscenze: rotazione e sicurezza dei segreti

Verifichi la Sua comprensione della rotazione dei segreti e delle pratiche di sicurezza.

Riepilogo: rotazione e sicurezza dei segreti

Ora dispone di una strategia completa per la sicurezza dei segreti negli agenti di produzione:

  • Ruotare le chiavi API ogni 60-90 giorni come pratica standard
  • Utilizzare AWS Secrets Manager o HashiCorp Vault negli ambienti di produzione
  • Eseguire truffleHog prima di rendere pubblico qualsiasi repository
  • Installare git-secrets come hook pre-commit per impedire i commit accidentali
  • Se una chiave viene esposta: revocarla immediatamente, quindi ruotarla e infine controllarne l'utilizzo
  • Impostare limiti di spesa per tutte le chiavi API, così da contenere i danni causati da una compromissione
  • Applicare il principio del privilegio minimo: assegnare a ogni chiave solo le autorizzazioni necessarie
Gratis per iniziare

Impara AI Agents con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
60
Lezioni
239

Domande Frequenti

La lezione «Rotazione e sicurezza dei segreti» è gratuita?

Sì — il testo completo di «Rotazione e sicurezza dei segreti» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.

Cosa imparerò in «Rotazione e sicurezza dei segreti»?

Scadenza dei segreti, strategie di rotazione e soluzioni vault (AWS Secrets Manager) Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare AI Agents?

Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Rotazione e sicurezza dei segreti»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione AI Agents?

Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Variabili d’ambiente per gli agenti
  2. File .env e python-dotenv
  3. Rotazione e sicurezza dei segreti
  4. Profili di configurazione per sviluppo e produzione
← Torna a AI Agents