
kviklet v0.8.0
Flujo de revisión/aprobación tipo Pull Request para consultas de base de datos. Para un acceso de Ingeniería a producción que sea conforme pero fluido.
Kviklet
Kviklet.dev | Notas de la versión | Discord
Acceso seguro a entornos de producción sin mermar la productividad de los desarrolladores.

Kviklet (pronunciado Quick-let) aplica el Principio de las Cuatro Ojos al acceso a bases de datos de producción, con un flujo de trabajo de revisión y aprobación similar a una pull request para sentencias SQL individuales o sesiones de base de datos con tiempo limitado. Los ingenieros pueden revisar y aprobar las solicitudes de los demás sin enrutar cada consulta a través de un DBA o un equipo de operaciones.
Kviklet es autoalojado y se ejecuta como un contenedor Docker con una base de datos PostgreSQL para el estado de la aplicación. Su interfaz web permite enviar, revisar y ejecutar solicitudes. Una licencia empresarial opcional desbloquea la autenticación SAML, los requisitos de revisión basados en roles, la sincronización de roles y las claves de API. Solicite una licencia empresarial en kviklet.dev.
Las bases de datos compatibles son Postgres, MySQL, MariaDB, MS SQL Server y MongoDB.
Modelo de acceso
Recomendamos conectar Kviklet a su proveedor de identidad existente. Kviklet admite SSO a través de OIDC (Google, Keycloak, etc.) o SAML (solo empresarial), así como autenticación LDAP (Active Directory, etc.).
Los usuarios crean entonces solicitudes para conexiones que se asignan a un usuario de base de datos específico. Estas solicitudes son:
- Consulta única: una sentencia SQL específica enviada para su revisión.
- Acceso temporal: una sesión con tiempo limitado en la que puede ejecutar múltiples sentencias.
Según la configuración, las solicitudes son revisadas y aprobadas por otros usuarios antes de que Kviklet permita la ejecución.
Kviklet se conecta a la base de datos en nombre del usuario. La contraseña de la base de datos de la conexión nunca se muestra al usuario.
Un administrador puede configurar qué rol tiene acceso a qué conexión y qué puertas de revisión se requieren para la ejecución. El acceso a nivel de base de datos se gestiona mediante los mecanismos RBAC de la base de datos subyacente. Por ejemplo, es posible crear un rol de solo lectura para una conexión de solo lectura y asignarle menos requisitos de revisión que a una conexión de escritura.
Kviklet registra las sentencias ejecutadas y las asocia con el usuario y la solicitud de acceso. Para una cobertura completa del acceso manual a la base de datos, restrinja las conexiones directas y enrute cualquier acceso manual a través de Kviklet. Los ingenieros no necesitan recibir ni compartir las credenciales subyacentes de la base de datos.
Las características empresariales adicionales incluyen:
- SAML: Compatibilidad con autenticación SAML.
- Proxy (Postgres, MariaDB, MySQL): Utilice su cliente de base de datos preferido a través de una sesión de acceso temporal aprobada con una contraseña temporal. Las sentencias ejecutadas se registran en el registro de auditoría de Kviklet.
- Puertas de revisión basadas en roles: Requerir aprobaciones de roles específicos antes de la ejecución.
- Sincronización de roles: Sincronizar automáticamente los roles de usuario desde los grupos de su proveedor de identidad.
- Claves de API: Acceso programático a la API de Kviklet.
Más capturas de pantalla
Solicitudes
Todas las solicitudes de datos residen en un solo lugar. Como PRs abiertas para sus bases de datos de producción:

Sesiones en vivo
Una solicitud de acceso temporal aprobada abre una sesión SQL en vivo directamente en el navegador:

Registro de auditoría
Cada sentencia ejecutada se registra — ya sea que se ejecutara como una consulta única revisada, en una sesión en vivo o a través del proxy de base de datos:

Características por tipo de base de datos/conexión
La mayoría de las características están disponibles para todas las bases de datos (SSO, LDAP, RBAC, flujo de revisión/aprobación, registro de auditoría, etc.). Pero algunas características están restringidas, ya sea porque simplemente aún no se han implementado o porque no tienen sentido para ese propósito específico. La siguiente tabla muestra qué características están disponibles para qué tipo de base de datos:
| Base de datos | Revisión de sentencias | Acceso temporal | Proxy(Beta) | Plan de ejecución |
|---|---|---|---|---|
| Postgres | ✓ | ✓ | ✓ | ✓ |
| MySQL | ✓ | ✓ | ✓ | ✓ |
| MariaDB | ✓ | ✓ | ✓ | ✓ |
| SQL Server | ✓ | ✓ | ✗ | ✓ |
| MongoDB | ✓ | ✓ | ✗ | ✗ |
| Kubernetes | ✓ | ✗ | ✗ | ✗ |
Configuración
Kviklet se distribuye como un contenedor docker simple.
Puede encontrar las versiones disponibles en Releases. Recomendamos actualizar regularmente la versión que utiliza, ya que seguimos desarrollando nuevas características.
La última actualmente es ghcr.io/kviklet/kviklet:0.8.0, también puede usar :main pero podría ocurrir de vez en cuando que fusionemos accidentalmente algo con errores. Aunque intentamos evitarlo.
Inicio rápido
Si solo quiere probar cómo funciona:
-
Aquí tiene un docker-compose.yaml mínimo:
Haga clic para expandir el contenido del compose
``` services: postgres: image: postgres:16 restart: always environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres ports: - "5432:5432" volumes: - ./postgres-data:/var/lib/postgresql/data # - ./sample_data.sql:/docker-entrypoint-initdb.d/init.sqlkviklet-postgres: image: postgres:16 restart: always environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: kviklet ports: - "5433:5432" volumes: - ./kviklet-postgres-data:/var/lib/postgresql/data
kviklet: image: ghcr.io/kviklet/kviklet:main ports: - "80:8080" environment: - SPRING_DATASOURCE_URL=jdbc:postgresql://kviklet-postgres:5432/kviklet - SPRING_DATASOURCE_USERNAME=postgres - SPRING_DATASOURCE_PASSWORD=postgres - INITIAL_USER_EMAIL=[email protected] - INITIAL_USER_PASSWORD=admin depends_on: - kviklet-postgres