0Pricing
AI Agents · Lección

Rotación y seguridad de secretos

Caducidad de secretos, estrategias de rotación y soluciones de almacén (AWS Secrets Manager).

Rotación y seguridad de secretos es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Agents, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Agents incluye 4 lecciones en total.

Por qué es necesario rotar los secretos

Aunque un secreto nunca se exponga de forma explícita, rotarlo periódicamente limita los daños de una intrusión no detectada. Una clave que se robó en silencio hace 6 meses deja de ser útil después de rotarla.

Muchas normas de seguridad (SOC 2, PCI-DSS) exigen rotar los secretos periódicamente. Crear código de agentes que facilite la rotación es una práctica profesional.

Políticas de caducidad de las claves de API

Cada proveedor tiene políticas de caducidad diferentes. Algunos permiten establecer fechas de caducidad para las claves; otros emiten claves que no caducan nunca a menos que se roten manualmente. Audite sus claves con regularidad y establezca recordatorios en el calendario para la rotación manual.

# 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 para agentes

AWS Secrets Manager almacena secretos de forma segura y admite la rotación automática. Su agente obtiene el valor actual del secreto en tiempo de ejecución mediante el SDK: no necesita claves incluidas directamente en el código ni archivos .env en producción.

# 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 para secretos

HashiCorp Vault es un sistema de gestión de secretos de código abierto muy utilizado en entornos empresariales. Admite secretos dinámicos, control de acceso detallado y registros de auditoría de cada acceso a un secreto.

# 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

Análisis de secretos: truffleHog

truffleHog analiza los repositorios de git en busca de secretos que se hayan confirmado accidentalmente. Comprueba todo el historial de confirmaciones, no solo el código actual. Ejecútelo antes de hacer público un repositorio.

# 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: protección con pre-commit

git-secrets es una herramienta de hooks de git desarrollada por AWS que bloquea las confirmaciones que contienen secretos que coinciden con patrones configurados. Se ejecuta antes de cada confirmación y la rechaza si encuentra un patrón de secreto.

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

Qué hacer si se expone una clave

Un plan de respuesta paso a paso para una clave de API comprometida. La rapidez es fundamental: los escáneres automatizados recopilan las claves expuestas pocos minutos después de 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.')

Detección del uso no autorizado

Después de rotar una clave, compruebe si se utilizó sin autorización. La mayoría de los proveedores ofrecen registros de uso y alertas de gasto que pueden revelar si alguien utilizó una clave robada para realizar llamadas a la 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()

Establecimiento de límites de gasto para las claves de API

Establezca límites de gasto estrictos para sus claves de API con el fin de limitar los daños que pueda causar una clave comprometida. Aunque alguien utilice su clave, no podrá generar una factura ilimitada.

# 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 de mínimo privilegio para las claves

Asigne a cada clave de API únicamente los permisos que necesite. Una clave que solo lea datos no debería tener permisos de escritura ni de eliminación. La mayoría de los proveedores admiten claves con permisos limitados o asociados a un ámbito.

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

Creación de una comprobación del estado de las claves

Valide que sus claves de API sigan siendo válidas al iniciar el agente. Detecte inmediatamente las claves caducadas o revocadas, en lugar de que la tarea falle a mitad de la ejecución, después de que el agente ya haya consumido recursos.

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

Comprobación de conocimientos: rotación y seguridad de secretos

Compruebe sus conocimientos sobre la rotación de secretos y las prácticas de seguridad.

Resumen: rotación y seguridad de secretos

Ahora dispone de una estrategia completa de seguridad de secretos para agentes en producción:

  • Rote las claves de API cada 60-90 días como práctica habitual
  • Use AWS Secrets Manager o HashiCorp Vault en entornos de producción
  • Ejecute truffleHog antes de publicar cualquier repositorio como código abierto
  • Instale git-secrets como hook de pre-commit para evitar commits accidentales
  • Si se expone una clave: revóquela inmediatamente, rótela y audite su uso
  • Establezca límites de gasto para todas las claves de API con el fin de limitar los daños de una vulneración
  • Aplique el principio de mínimo privilegio: asigne a cada clave únicamente los permisos que necesite

Preguntas frecuentes

¿La lección «Rotación y seguridad de secretos» es gratis?

Sí — el texto completo de «Rotación y seguridad de secretos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Agents, actualiza a CoddyKit PRO. El curso de AI Agents incluye 4 lecciones en total.

¿Qué aprenderé en «Rotación y seguridad de secretos»?

Caducidad de secretos, estrategias de rotación y soluciones de almacén (AWS Secrets Manager). Practicas AI Agents con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar AI Agents?

No se requiere experiencia previa. AI Agents en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Rotación y seguridad de secretos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de AI Agents?

Sí. Cada lección de AI Agents incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Variables de entorno para agentes
  2. Archivos .env y python-dotenv
  3. Rotación y seguridad de secretos
  4. Perfiles de configuración para desarrollo y producción
← Volver a AI Agents