Guia passo a passo para configurar todas as medidas de segurança do ChatCLI em ambiente de produção.
Este guia mostra como deployar o ChatCLI em produção com todas as medidas de segurança habilitadas. Siga cada etapa na ordem para garantir uma configuração completa.
O snippet acima cobre o server chatcli standalone exposto por domínio público. Se estiver usando o Operator + Instance CR para dialar o gRPC via DNS in-cluster (<instance>.<ns>.svc.cluster.local), este cert vai falhar com x509: certificate is not valid for any names (sem SANs) e x509: certificate signed by unknown authority (sem ca.crt no Secret). Para esse caminho, use o openssl.cnf com subjectAltName e o Secret de 3 chaves documentados em AIOps Production Setup §2.1.
Defina limites de requisições para prevenir abuso e DoS:
# values-security.yaml (parcial)security: rateLimitRps: 20 # 20 requisições por segundo # bindAddress: "0.0.0.0" # Opcional — auto-detectado em Kubernetes
Em Kubernetes, o bindAddress é automaticamente configurado para 0.0.0.0 via detecção de KUBERNETES_SERVICE_HOST. Defina explicitamente apenas em servidores fora do Kubernetes.
Para ambientes multi-tenant, considere valores mais baixos (5-10 RPS por instância) e use HPA para escalar horizontalmente.
No modo strict, mais de 150 comandos comuns já estão pré-aprovados em 8 categorias (arquivo, texto, dev, containers, rede, sistema, editores, shell). Adicione apenas os comandos específicos do seu workflow.
Para ambientes com o operador K8s, configure proteções adicionais.Primeiro, crie um Secret com as API keys do operator (autenticação do dashboard / REST API):
apiVersion: v1kind: Secretmetadata: name: chatcli-operator-secrets # Deve coincidir com o namespace do pod do operator (POD_NAMESPACE / SA file). # Default do código: chatcli-system. Ajuste se você fez `helm install --namespace <outro>`. namespace: chatcli-systemtype: OpaquestringData: api-keys: | - key: "<your-api-key>" role: admin description: "Dashboard admin"
Este Secret é diferente do chatcli-api-keys consumido pelo chatcli server (que carrega OPENAI_API_KEY, ANTHROPIC_API_KEY etc. via Instance.spec.apiKeys.name). Veja Segurança — Autenticação para a tabela comparativa.
Alterações no Secret chatcli-operator-secrets (ou no ConfigMap chatcli-operator-config como fallback — mesmo campo api-keys) são detectadas automaticamente em até 30 segundos. Nenhum restart do operator é necessário.
# Enviar múltiplas requisições rápidas — deve retornar erro 429 após o limitefor i in $(seq 1 30); do chatcli -p "ping" --remote chatcli.meudominio.com:50051 &done
8
Verificar logs de auditoria
kubectl -n chatcli logs deploy/chatcli | grep "audit"# Deve mostrar entradas de auditoria para as operações acima