Qué es una sesión de soporte
- El gateway de sesión, una API autenticada integrada en el solucionador de problemas con endpoints
enable,disableystatus. Cada llamada al gateway requiere un token de ID de OIDC de corta duración cuyo correo electrónico figure en su lista de permitidos de operadores. - El archivo de sesión local en instalaciones de VM Linux, que se escribe directamente en el host con acceso root.
kubectl reenvío de puertos (el túnel utiliza el TLS del servidor de API) o a través de un Ingreso que termina TLS con un certificado emitido por una CA.
Elija la configuración de las sesiones, incluida la lista de permitidos de operadores, durante clicklink clctl init.
Activación y desactivación de sesiones
- Kubernetes
- VM Linux
El gateway escucha en el puerto 8443 del pod de Kubernetes del solucionador de problemas. Si tiene acceso al clúster, acceda a él mediante un reenvío de puertos; el túnel utiliza TLS del servidor de la API de Kubernetes:A continuación, en otra terminal, active una sesión:Compruebe o finalice la sesión del mismo modo:La identidad OIDC del llamador debe estar en la lista de permitidos de operadores; los llamadores no autenticados o que no figuren en la lista recibirán un 401 o un 403, y el intento quedará registrado. Si prefiere no requerir credenciales del clúster, el chart puede exponer el gateway mediante un Ingreso opcional que termina TLS con un certificado emitido por una CA; consulte la configuración.
Caducidad de la sesión
session enable --duration permite establecer una duración de hasta 24 horas. Cuando la sesión caduca o en cuanto ejecuta session disable, el solucionador de problemas deja de aceptar comandos. Deshabilitar la sesión es la vía de revocación inmediata: no requiere reiniciar ni coordinarse con ClickHouse.
Lista de permitidos de operadores
- Kubernetes: configure
clctl.gateway.allowedOperatorsen su superposición de values. La lista se procesa en un ConfigMap que el gateway vuelve a leer cada 30 segundos, por lo que un cambio en values junto conhelm upgraderota la lista de permitidos sin reiniciar el pod de Kubernetes. - Linux VM: la lista de permitidos se encuentra en
/etc/clicklink/allowed-operators.txtyclicklink clctl initla escribe a partir de los correos electrónicos de operadores que proporcione.
Lo que los operadores pueden hacer durante una sesión
- SQL de solo lectura en sus clústeres con el usuario
pcm_troubleshooter, restringido a una lista explícita de tablas permitidas. De forma predeterminada, la lista de tablas permitidas incluye tablassystemde ClickHouse, comosystem.parts,system.merges,system.replicas,system.metricsysystem.settings;system.query_logysystem.text_logse deniegan incondicionalmente, por lo que el historial de consultas nunca sale del sistema. La lista predeterminada también incluyesystem.processes, cuya columnaquerymuestra el texto de las sentencias que se ejecutan en ese momento; elimínela de la lista de tablas permitidas para la sesión (troubleshooter.allowedTablesen la superposición de Helm,troubleshooter.allowed_tablesen el archivo de configuración de la VM) si el texto de las consultas en ejecución no debe ser visible nunca durante una sesión. El usuario solo dispone de privilegiosSELECTpor tabla, sin privilegios de escritura, DDL ni administración. - Vistas de Kubernetes de solo lectura en cada implementación aprovisionada (los paquetes de acceso están asociados a ServiceAccounts de Kubernetes en ambos destinos de instalación):
get,listywatchsobre pods, registros de pods, servicios, configmaps, eventos, PersistentVolumeClaims, implementaciones, statefulsets y replicasets de los espacios de nombres autorizados. Sin un paquete aprovisionado, el solucionador de problemas rechaza directamente los comandos de tipo kubectl.
exec, delete ni patch, por lo que los operadores no pueden abrir una shell en sus pods ni modificar nada a través del conector. La enumeración completa de privilegios y RBAC se encuentra en la referencia del modelo de privilegios.
Registro de auditoría
/var/log/clicklink/troubleshoot-audit.log como un objeto JSON por línea (NDJSON). El campo submitted_by registra la identidad asociada a cada entrada, que depende de cómo se haya originado: las llamadas al gateway incluyen el correo electrónico acreditado por el token validado, nunca un valor proporcionado por el client; los cambios de sesión realizados localmente en una VM registran el usuario del host que los ejecuta; y los comandos ejecutados durante una sesión registran la identidad de la org incluida en el canal de comandos autenticado. Una entrada del gateway para habilitar una sesión tiene este aspecto:
clctl.session.enable, clctl.session.disable y clctl.session.status; el --reason de activación se registra como command_text, y los comandos ejecutados durante una sesión se registran con el mismo esquema. status distingue las llamadas correctas de los intentos unauthorized, forbidden y rate_limited, por lo que el acceso denegado también queda registrado.
En una VM, lea el archivo directamente con clicklink clctl troubleshoot audit tail. En Kubernetes, el registro se almacena dentro del pod de Kubernetes del solucionador de problemas y la imagen de contenedor no incluye una shell, así que invoque el lector integrado del binario mediante kubectl exec:
Redacción
/etc/clicklink/redaction-patterns.yaml; una entrada con el mismo nombre que un patrón integrado lo reemplaza. El daemon no se inicia si el archivo de patrones no es válido, y clicklink clctl preflight lo valida, de modo que una configuración de redacción incorrecta falla de forma explícita en lugar de dejar pasar datos silenciosamente.
- Arquitectura: todas las conexiones que realiza el conector y el flujo de datos en las sesiones.
- Configuración: configuración de gateway, allowlist y redacción.
- FAQ: respuestas breves a preguntas sobre revocación, auditoría y salida de datos.