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 policiesAná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
truffleHogantes de publicar cualquier repositorio como código abierto - Instale
git-secretscomo 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
- Variables de entorno para agentes
- Archivos .env y python-dotenv
- Rotación y seguridad de secretos
- Perfiles de configuración para desarrollo y producción