Что такое сеанс поддержки
- Шлюз сеансов — аутентифицированный API, встроенный в troubleshooter, с конечными точками
enable,disableиstatus. Для каждого вызова шлюза требуется кратковременный OIDC ID-токен, адрес электронной почты в котором входит в ваш список разрешённых операторов. - Локальный файл сеанса в установках на ВМ с Linux, который записывается непосредственно на хосте с правами root.
kubectl port-forward (туннель использует TLS API server) или через Входной шлюз, который терминирует TLS с сертификатом, выданным CA.
Параметры сеанса, включая список разрешённых операторов, выбираются при выполнении clicklink clctl init.
Включение и отключение сеансов
- Kubernetes
- Linux ВМ
Шлюз прослушивает порт 8443 на поде troubleshooter. Если у вас есть доступ к кластеру, подключитесь к нему через проброс порта; туннель использует TLS API-сервера Kubernetes:Затем в другом терминале включите сеанс:Таким же образом проверьте его состояние или завершите сеанс:OIDC-идентификатор вызывающей стороны должен быть в списке разрешенных операторов; неаутентифицированные или не включенные в список вызывающие стороны получают код 401 или 403, а попытка записывается в журнал. Если вы не хотите требовать учетные данные кластера, chart может предоставить доступ к шлюзу через опциональный входной шлюз, который терминирует TLS с сертификатом, выданным CA; см. configuration.
Истечение срока действия сеанса
session enable --duration можно задать значение до 24 часов. По истечении срока действия сеанса или сразу после выполнения session disable troubleshooter перестаёт принимать команды. Отключение сеанса позволяет немедленно отозвать доступ: перезапуск и координация с ClickHouse не требуются.
Список разрешённых операторов
- Kubernetes: задайте
clctl.gateway.allowedOperatorsв файле наложения values. Список преобразуется в ConfigMap, который шлюз перечитывает каждые 30 секунд, поэтому изменение values и выполнениеhelm upgradeобновляют список разрешённых без перезапуска пода. - Linux ВМ: список разрешённых хранится в
/etc/clicklink/allowed-operators.txt; файл записывается командойclicklink clctl initна основе указанных вами адресов электронной почты операторов.
Что операторы могут делать во время сеанса
- SQL-запросы только для чтения к вашим кластерам от имени пользователя
pcm_troubleshooter, доступного только к явно указанному списку разрешенных таблиц. По умолчанию этот список включает таблицы ClickHousesystem, такие какsystem.parts,system.merges,system.replicas,system.metricsиsystem.settings; доступ кsystem.query_logиsystem.text_logбезусловно запрещен, поэтому история запросов никогда не покидает систему. В список по умолчанию также входитsystem.processes, столбецqueryкоторой показывает текст запросов, выполняющихся в данный момент; удалите ее из списка разрешенных таблиц сеанса (troubleshooter.allowedTablesв оверлее Helm,troubleshooter.allowed_tablesв конфигурационном файле VM), если текст выполняемых запросов не должен быть виден во время сеанса. У пользователя есть только привилегииSELECTдля отдельных таблиц — без прав на запись, DDL или административных привилегий. - Доступ к данным Kubernetes только для чтения для каждого подготовленного развертывания (пакеты доступа привязаны к Kubernetes ServiceAccount в обеих целях установки):
get,listиwatchдля подов, логов подов, сервисов, configmaps, events, PersistentVolumeClaims, deployments, statefulsets и replicasets в предоставленных пространствах имен. Без подготовленного пакета troubleshooter полностью отказывается выполнять команды типа kubectl.
exec, delete или patch, поэтому операторы не могут открыть оболочку в ваших подах или изменить что-либо через коннектор. Полный список привилегий и RBAC приведен в справочнике модели привилегий.
Журнал аудита
/var/log/clicklink/troubleshoot-audit.log как отдельный объект JSON в каждой строке (NDJSON). Поле submitted_by фиксирует идентификационные данные, связанные с каждой записью, и их значение зависит от происхождения записи: вызовы шлюза содержат адрес электронной почты, подтверждённый проверенным токеном, и никогда не используют значение, предоставленное клиентом; изменения сеанса, выполненные локально на ВМ, фиксируют пользователя хоста, вызвавшего команду; а команды, выполненные в ходе сеанса, фиксируют идентификационные данные организации, передаваемые по аутентифицированному каналу команд. Запись шлюза о включении сеанса выглядит так:
clctl.session.enable, clctl.session.disable и clctl.session.status; значение --reason команды enable сохраняется как command_text. Команды, выполняемые во время сеанса, записываются по той же схеме. status отличает успешные вызовы от попыток с результатами unauthorized, forbidden и rate_limited, поэтому отклонённые обращения также попадают в журнал.
На ВМ прочитайте файл напрямую с помощью clicklink clctl troubleshoot audit tail. В Kubernetes журнал находится внутри пода troubleshooter, а образ контейнера не содержит оболочки, поэтому через kubectl exec вызовите встроенный модуль чтения бинарного файла:
Маскирование
/etc/clicklink/redaction-patterns.yaml; запись с тем же именем, что и встроенный шаблон, заменяет его. Демон не запускается при недопустимом файле шаблонов, а clicklink clctl preflight проверяет этот файл, поэтому некорректная конфигурация маскирования вызывает явную ошибку, а не молча пропускает данные.
- Архитектура: все подключения, устанавливаемые коннектором, и потоки данных в рамках сеансов.
- Конфигурация: настройки шлюза, списка разрешённых адресов и маскирования данных.
- FAQ: кратко об отзыве доступа, аудите и исходящем трафике данных.