O que é uma sessão de suporte
- O gateway de sessão, uma API autenticada incorporada ao solucionador de problemas, com endpoints
enable,disableestatus. Cada chamada ao gateway exige um token de ID OIDC de curta duração cujo e-mail esteja na sua lista de permissões de operadores. - O arquivo de sessão local em instalações em VMs Linux, gravado diretamente no host com acesso root.
kubectl port-forward (o túnel usa o TLS do servidor de API) ou por uma Entrada que termina o TLS com um certificado emitido por uma CA.
Você escolhe a política da sessão, incluindo a lista de permissões de operadores, durante clicklink clctl init.
Como habilitar e desabilitar sessões
- Kubernetes
- VM Linux
O gateway escuta na porta 8443 do pod do solucionador de problemas. Se você tiver acesso ao cluster, acesse-o por redirecionamento de porta; o túnel usa o TLS do servidor da API do Kubernetes:Em seguida, em outro terminal, habilite uma sessão:Verifique ou encerre a sessão da mesma forma:A identidade OIDC do solicitante deve constar na lista de permissões de operadores; solicitantes não autenticados ou não incluídos na lista recebem 401 ou 403, e a tentativa é registrada. Se preferir não exigir credenciais do cluster, o chart pode expor o gateway por meio de uma Entrada opcional que termina o TLS com um certificado emitido por uma CA; consulte a configuração.
Expiração da sessão
session enable --duration permite definir uma duração de até 24 horas. Quando a sessão expira ou assim que você executa session disable, o solucionador de problemas deixa de aceitar comandos. Desabilitar a sessão é a forma de revogação imediata: não é necessário reiniciar nem coordenar com o ClickHouse.
Lista de permissões de operadores
- Kubernetes: defina
clctl.gateway.allowedOperatorsna sua sobreposição de values. A lista é renderizada em um ConfigMap que o gateway relê a cada 30 segundos; portanto, uma alteração nos values seguida dehelm upgradeatualiza ciclicamente a lista de permissões sem reiniciar o pod do Kubernetes. - VM Linux: a lista de permissões fica em
/etc/clicklink/allowed-operators.txt, gravada porclicklink clctl initcom base nos e-mails de operadores fornecidos por você.
O que os operadores podem fazer durante uma sessão
- SQL somente leitura nos seus clusters como o usuário
pcm_troubleshooter, limitado a uma lista explícita de tabelas permitidas. A lista padrão abrange tabelassystemdo ClickHouse, comosystem.parts,system.merges,system.replicas,system.metricsesystem.settings;system.query_logesystem.text_logsão sempre bloqueadas, para que o histórico de consultas nunca seja exposto. A lista padrão incluisystem.processes, cuja colunaquerymostra o texto das instruções em execução naquele momento; remova-a da lista de tabelas permitidas da sessão (troubleshooter.allowedTablesna sobreposição do Helm etroubleshooter.allowed_tablesno arquivo de configuração da VM) se o texto de consultas em tempo real nunca puder ficar visível durante uma sessão. O usuário tem apenas privilégiosSELECTpor tabela, sem privilégios de gravação, DDL ou administração. - Visualizações somente leitura do Kubernetes em todas as implantações provisionadas (os pacotes de acesso são vinculados a ServiceAccounts do Kubernetes em ambos os destinos de instalação):
get,listewatchem pods, logs de pods, serviços, configmaps, eventos, PersistentVolumeClaims, implantações, statefulsets e replicasets nos espaços de nomes concedidos. Sem um pacote provisionado, o solucionador de problemas recusa imediatamente comandos do tipo kubectl.
exec, delete nem patch; portanto, os operadores não podem abrir um shell nos seus pods nem alterar nada pelo conector. A lista completa de privilégios e RBAC está na referência do modelo de privilégios.
Log de auditoria
/var/log/clicklink/troubleshoot-audit.log como um objeto JSON por linha (NDJSON). O campo submitted_by registra a identidade associada a cada entrada, que depende de como ela foi gerada: as chamadas ao gateway contêm o e-mail atestado pelo token validado, nunca um valor fornecido pelo cliente; as alterações de sessão feitas localmente em uma VM registram o usuário do host que as acionou; e os comandos executados durante uma sessão registram a identidade da org transportada pelo canal de comandos autenticado. Uma entrada de ativação de sessão do gateway é semelhante a esta:
clctl.session.enable, clctl.session.disable e clctl.session.status, com o --reason de ativação registrado como command_text; os comandos executados durante uma sessão são registrados com o mesmo schema. status diferencia chamadas bem-sucedidas de tentativas unauthorized, forbidden e rate_limited, portanto, os acessos negados também aparecem no log.
Em uma VM, leia o arquivo diretamente com clicklink clctl troubleshoot audit tail. No Kubernetes, o log fica dentro do pod do Kubernetes do solucionador de problemas, e a imagem de contêiner não tem shell; portanto, invoque o leitor do próprio binário por meio de kubectl exec:
Ocultação de dados sensíveis
/etc/clicklink/redaction-patterns.yaml; uma entrada com o mesmo nome de um padrão integrado o substitui. O daemon se recusa a iniciar se o arquivo de padrões for inválido, e clicklink clctl preflight o valida. Assim, uma configuração de ocultação de dados sensíveis com problemas falha de forma explícita, em vez de permitir silenciosamente a passagem de dados.
- Arquitetura: todas as conexões estabelecidas pelo conector e o fluxo de dados das sessões.
- Configuração: configurações de gateway, lista de permissões e ocultação de dados sensíveis.
- FAQ: perguntas breves sobre revogação, auditoria e egress de dados.