# Rotación de Credenciales de Seguridad

## ⚠️ Incidente de Seguridad - Credenciales Expuestas

**Fecha**: 2026-03-30  
**Estado**: En progreso - Requiere acción inmediata

---

## Credenciales Comprometidas

Las siguientes credenciales fueron expuestas en el repositorio git y **DEBEN ser rotadas inmediatamente**:

### 1. AI_API_KEY (DashScope - Aliyun)
- **Estado**: Expuesto en `.env` y `backend/.env`
- **Acción requerida**: 
  1. Acceder a https://console.aliyun.com
  2. Navegar a DashScope Console
  3. Revocar la API key actual
  4. Generar nueva API key
  5. Actualizar en `.env.local` o Docker secrets

### 2. TELEGRAM_BOT_TOKEN
- **Estado**: Expuesto en `.env` y `backend/.env`
- **Acción requerida**:
  1. Contactar @BotFather en Telegram
  2. Usar comando `/revoke` para el token actual
  3. Usar comando `/token` para generar nuevo token
  4. Actualizar en `.env.local` o Docker secrets

### 3. TELEGRAM_ADMIN_CHAT_ID
- **Estado**: Expuesto en `.env` y `backend/.env`
- **Acción requerida**:
  1. Crear nuevo chat privado con el bot
  2. Obtener nuevo chat_id (usar https://t.me/userinfobot)
  3. Actualizar en configuración

---

## Pasos de Rotación

### Paso 1: Preparación
```bash
# 1. Backup de configuración actual
cp .env .env.backup.$(date +%Y%m%d)
cp backend/.env backend/.env.backup.$(date +%Y%m%d)

# 2. Verificar servicios en ejecución
docker-compose ps
```

### Paso 2: Rotación de Credenciales

#### AI_API_KEY (DashScope)
1. Iniciar sesión en https://console.aliyun.com
2. Buscar "DashScope" en servicios
3. Ir a "API Keys" 
4. Eliminar la key comprometida
5. Crear nueva key
6. Copiar el nuevo valor

#### TELEGRAM_BOT_TOKEN
1. Abrir Telegram y buscar @BotFather
2. Enviar: `/revoke`
3. Seleccionar el bot comprometido
4. Enviar: `/token`
5. Seleccionar el mismo bot
6. Copiar el nuevo token

#### TELEGRAM_ADMIN_CHAT_ID
1. Crear nuevo grupo/chat privado con el bot
2. Agregar bot al chat
3. Visitar: https://t.me/userinfobot
4. Copiar el chat_id mostrado

### Paso 3: Actualización de Secrets

#### Opción A: Docker Secrets (Producción)
```bash
# Actualizar archivos de secrets
echo "nueva-ai-api-key" > secrets/ai_api_key.txt
echo "nuevo-telegram-token" > secrets/telegram_token.txt
echo "nuevo-chat-id" > secrets/telegram_chat_id.txt

# Redeploy
docker-compose -f docker-compose.secrets.yml down
docker-compose -f docker-compose.secrets.yml up -d
```

#### Opción B: Variables de Entorno (Desarrollo)
```bash
# Crear .env.local (no trackeado)
cp .env.example .env.local

# Editar con nuevos valores
nano .env.local

# Reiniciar servicios
docker-compose restart
```

### Paso 4: Verificación
```bash
# Verificar que servicios están healthy
docker-compose ps

# Verificar logs
docker-compose logs -f backend

# Verificar conectividad con Telegram
curl -X POST \
  https://api.telegram.org/bot<NEW_TOKEN>/getMe

# Verificar AI API
curl -X POST \
  https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions \
  -H "Authorization: Bearer <NEW_AI_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"model": "MiniMax-M2.5", "messages": [{"role": "user", "content": "test"}]}'
```

---

## Verificación Post-Rotación

Después de completar la rotación, ejecutar:

```bash
# Buscar cualquier rastro de credenciales antiguas
grep -r "[REDACTED_AI_API_KEY]" . \
  --include="*.env*" --include="*.md" \
  --include="*.ts" --include="*.js" \
  2>/dev/null || echo "✅ Limpio - AI_API_KEY"

grep -r "[REDACTED_TELEGRAM_TOKEN]" . \
  --include="*.env*" --include="*.md" \
  --include="*.ts" --include="*.js" \
  2>/dev/null || echo "✅ Limpio - TELEGRAM_BOT_TOKEN"

grep -r "[REDACTED_CHAT_ID]" . \
  --include="*.env*" --include="*.md" \
  --include="*.ts" --include="*.js" \
  2>/dev/null || echo "✅ Limpio - TELEGRAM_CHAT_ID"
```

---

## Checklist de Completitud

- [ ] AI_API_KEY rotada en DashScope Console
- [ ] TELEGRAM_BOT_TOKEN revocado y regenerado vía @BotFather
- [ ] TELEGRAM_ADMIN_CHAT_ID cambiado a nuevo chat seguro
- [ ] Nuevos valores actualizados en producción (Docker secrets)
- [ ] Nuevos valores actualizados en desarrollo (.env.local)
- [ ] Servicios reiniciados y funcionando correctamente
- [ ] Notificaciones de Telegram probadas
- [ ] Generación de AI probada
- [ ] Logs verificados sin errores de autenticación
- [ ] Backup de credenciales antiguas eliminado de forma segura

---

## Notas Importantes

1. **No usar credenciales antiguas**: Las credenciales expuestas están comprometidas y no deben reutilizarse nunca.

2. **Monitoreo**: Después de la rotación, monitorear logs por 24-48 horas para detectar accesos no autorizados.

3. **Revisión de accesos**: Verificar en los dashboards de DashScope y Telegram si hubo accesos no autorizados durante el período de exposición.

4. **Comunicación**: Notificar al equipo de desarrollo sobre la rotación y proporcionar nuevos valores seguros a través de canales seguros (NO por email o Slack).

---

## Recursos

- [DashScope Console](https://console.aliyun.com)
- [Telegram BotFather](https://t.me/BotFather)
- [Obtener Chat ID](https://t.me/userinfobot)
- [Documentación de Secrets](./SECRETS.md)

---

**Documento creado**: 2026-03-30  
**Responsable**: Equipo de Seguridad  
**Próxima revisión**: Después de completar rotación
