- Nueva estructura de carpetas según Skynet v7 - Añadidos schemas SQL completos - Documentación de entidades, componentes e integraciones - Modelo de seguridad actualizado - Infraestructura y operaciones reorganizadas
116 lines
2.8 KiB
Markdown
116 lines
2.8 KiB
Markdown
# Gestión de Secretos
|
|
|
|
**Gestor:** Infisical
|
|
**Estado:** Operativo
|
|
|
|
---
|
|
|
|
## Principio
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ │
|
|
│ Las llaves nunca viajan con los datos que protegen. │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Infisical
|
|
|
|
| Parámetro | Valor |
|
|
|-----------|-------|
|
|
| URL | http://{ip}:8082 |
|
|
| Proyectos | anthropic, servers, databases, r2 |
|
|
| Acceso | Machine Identities |
|
|
|
|
---
|
|
|
|
## Proyectos
|
|
|
|
| Proyecto | Contenido |
|
|
|----------|-----------|
|
|
| **anthropic** | API keys de IA |
|
|
| **servers** | SSH, accesos servidores |
|
|
| **databases** | Credenciales PostgreSQL, Redis |
|
|
| **r2** | Keys de Cloudflare R2 |
|
|
|
|
---
|
|
|
|
## Categorías de Secretos
|
|
|
|
| Categoría | Ejemplos |
|
|
|-----------|----------|
|
|
| APIs IA | OpenRouter, Groq, Anthropic, OpenAI |
|
|
| Bases de datos | PostgreSQL, Redis |
|
|
| Almacenamiento | Storj, R2, Arweave |
|
|
| Infraestructura | n8n, Nextcloud, Windmill |
|
|
| Blockchain | Polygon, NOTARIO |
|
|
| Comunicaciones | Resend, Slack, ntfy |
|
|
| DNS/CDN | Cloudflare, Let's Encrypt |
|
|
| GPU | RunPod |
|
|
| Servidores | SSH credentials |
|
|
| Cifrado | Master Key, KEKs |
|
|
|
|
---
|
|
|
|
## Matriz de Rotación
|
|
|
|
| Tipo | Rotación | Ejemplos |
|
|
|------|----------|----------|
|
|
| API_KEY | 90 días | OpenRouter, Groq, Cloudflare |
|
|
| DB_CREDENTIAL | 30 días | PostgreSQL, Redis |
|
|
| SERVICE_TOKEN | 7 días | n8n, Nextcloud, Slack |
|
|
| CERTIFICATE | 90 días | SSL/TLS (auto) |
|
|
| SIGNING_KEY | 180 días | JWT, KEK-SIGNING |
|
|
| ENCRYPTION_KEY | 365 días | AES-256, KEK-DATA |
|
|
| SSH_CREDENTIAL | 180 días | Llaves SSH |
|
|
|
|
---
|
|
|
|
## Acceso por Instancia
|
|
|
|
Cada instancia tiene su propia Machine Identity:
|
|
|
|
```
|
|
ARCHITECT → Machine Identity: architect_prod
|
|
DECK → Machine Identity: deck_prod
|
|
CORP → Machine Identity: corp_prod
|
|
HST → Machine Identity: hst_prod
|
|
```
|
|
|
|
---
|
|
|
|
## Uso en Código
|
|
|
|
```python
|
|
from infisical import InfisicalClient
|
|
|
|
client = InfisicalClient(
|
|
client_id=os.environ["INFISICAL_CLIENT_ID"],
|
|
client_secret=os.environ["INFISICAL_CLIENT_SECRET"]
|
|
)
|
|
|
|
# Obtener secreto
|
|
api_key = client.get_secret(
|
|
project_id="anthropic",
|
|
environment="production",
|
|
secret_name="ANTHROPIC_API_KEY"
|
|
)
|
|
```
|
|
|
|
---
|
|
|
|
## Nunca en Código
|
|
|
|
Los siguientes NUNCA deben estar en repositorios:
|
|
|
|
- API keys
|
|
- Contraseñas de BD
|
|
- Tokens de acceso
|
|
- Llaves privadas
|
|
- Certificados
|
|
|
|
Siempre usar Infisical o variables de entorno.
|