Cifrado
Todos los secretos almacenados en Driftless se cifran con AES-256-GCM antes de llegar a la base de datos. Esto incluye:
- API keys
- Secretos de webhooks
- Credenciales de la GitHub App
- Keys de proveedores de modelos (BYOM)
- Tokens OAuth y códigos de autorización
La clave de cifrado se deriva de variables de entorno y nunca se almacena en la base de datos.
Nunca almacenes secretos en texto plano en Driftless. La capa de cifrado es obligatoria y se aplica de forma transparente.
API keys
Las API keys son el mecanismo de autenticación principal para la CLI y CI.
- Las keys se generan con un prefijo
drift_ para identificarlas fácilmente
- La key en crudo se muestra solo una vez, al momento de crearla
- Las keys se almacenan como hashes con salt; el valor en crudo no se puede recuperar
- Las keys se pueden revocar en cualquier momento desde el dashboard
- Se admiten múltiples keys por workspace
Crea keys desde el dashboard en Settings > API Keys o mediante la CLI:
OAuth y MCP
Driftless admite autorización OAuth 2.0 para aplicaciones cliente de MCP (Model Context Protocol) como ChatGPT y Claude. OAuth permite que clientes de IA de terceros accedan al contexto de tu workspace con el consentimiento explícito del usuario.
Scopes de OAuth
| Scope | Descripción |
|---|
context:read | Lee topics y contexto |
topics:create | Crea nuevos topics |
topics:write | Actualiza topics existentes |
context:diff | Lee el diff de topics para cambios locales |
Flujo de OAuth
- El cliente MCP redirige al usuario a
/api/v1/oauth/authorize en la API de Driftless
- El usuario da su consentimiento en el dashboard en
/oauth/authorize
- La API emite un código de autorización (con soporte PKCE)
- El cliente intercambia el código por un token de acceso en
/api/v1/oauth/token
- El cliente usa el token bearer para llamar a las herramientas MCP
Seguridad de los tokens
- Los códigos de autorización, tokens de acceso y tokens de refresco se almacenan solo como hashes, nunca en texto plano
- Los tokens nunca se registran ni se devuelven después de la emisión inicial
- El servidor MCP (
apps/mcp) es un adaptador de protocolo que llama a la API REST existente de Driftless. Nunca accede a Postgres ni a librerías internas directamente.
Manejo de datos
| Dato | Almacenamiento | Cifrado |
|---|
| Contenido de topics | Postgres | En reposo (Supabase) |
| API keys | Postgres (hasheado) | Hasheado + cifrado |
| Tokens de GitHub | Postgres | AES-256-GCM |
| Tokens OAuth | Postgres (hasheado) | Hasheado + cifrado |
| Código fuente | Nunca se almacena | N/A |
Driftless nunca almacena tu código fuente. Solo se almacenan metadatos estructurales de los anclajes de topics (patrones de archivos) y las listas de archivos de los PRs.
Permisos de la GitHub App
La GitHub App solicita los permisos mínimos requeridos:
| Permiso | Por qué |
|---|
| Contents (read) | Obtiene la lista de archivos cambiados por commit |
| Pull requests (read & write) | Publica y actualiza comentarios de contexto |
| Issues (read & write) | Los comentarios de PR usan la API de Issues |
| Metadata (read) | Requerido por GitHub para todas las apps |
La app nunca clona repositorios y nunca lee el contenido de los archivos fuente.
Red
- Todo el tráfico entre la CLI, el dashboard y la API es HTTPS
- Las API keys se envían en cabeceras
x-api-key, nunca en parámetros de URL
- Las cargas de webhooks se verifican con firmas HMAC
- La API corre en Render con variables de entorno cifradas
Reportes
Si descubres un problema de seguridad, por favor repórtalo a security@driftless.icu. No abras un issue público.