Plataforma ZTNA para manutenção de redes: agrega Zabbix, Cacti, Nagios, TOPdesk, inventário e syslog em um portal unificado, com Navegador HTML5 embutido, Grafana, sessões remotas auditadas via Guacamole, autenticação local/LDAP e insights opcionais de IA.
Versão atual (
main): portal ergonômico + Navegador HTML5, Lembretes/Anotações, Calendário compartilhado e Wiki de serviços, com autenticação por token assinado (HMAC-SHA256), rate limiting na API e varredura de segurança na CI.
| Função | Quem configura | Quem consome |
|---|---|---|
| Usuários locais + admin padrão | Admin | Todos (login) |
| LDAP / Active Directory (opcional) | Admin | Usuários do diretório |
| Navegador HTML5 (Grafana, URLs, SSO) | — (disponível a todos) | Todos; admin também Guacamole/módulos |
| Lembretes / Anotações (painel arrastável) | — (local no navegador) | Todos |
| Calendário (aba deslizante Google/Microsoft) | Usuário (URL de incorporação) | Todos |
| Wiki de serviços (Markdown colaborativo) | Todos editam; admin exclui | Todos |
| Módulos coletores (switch + URL/credenciais) | Admin | Todos (alarmes/dashboards) |
| Insights de IA (URL, API key, modelo) | Admin | Todos, quando habilitado |
| Sessões Guacamole + auditoria | Admin | Admin (navegador ou nova aba) |
Resumo das novidades: docs/CHANGELOG_FEATURES.md · Auth: docs/AUTH.md · Segurança OWASP: docs/OWASP.md · IA: docs/AI.md
| Eu quero… | Documento |
|---|---|
| Subir pela primeira vez | docs/GETTING_STARTED.md |
| Usar o portal (observer) | docs/MANUAL_USER.md |
| Administrar o portal | docs/MANUAL_ADMIN.md |
| Fluxo diário NOC | docs/USAGE.md |
| Configurar LDAP / usuários | docs/AUTH.md |
| Ativar insights de IA | docs/AI.md |
| Deploy em Kubernetes | docs/KUBERNETES.md → deploy/kubernetes/ |
| Entender dashboards Grafana | docs/DASHBOARDS.md |
| Ver fluxos (coleta, SSO, auditoria) | docs/PROCESSES.md |
| Desenvolver o portal (mockups) | docs/PORTAL.md |
| Índice completo | docs/README.md |
git clone https://github.com/avilarezende/ciem.git
cd ciem
cp .env.example .env
# Gere e configure as chaves OBRIGATÓRIAS antes de subir (o core não inicia
# sem CIEM_SECRET_KEY forte — fail-fast):
openssl rand -hex 32 # CIEM_SECRET_KEY (assina tokens de sessão/SSO)
openssl rand -hex 32 # CIEM_GRAFANA_TOKEN (senha interna do Grafana)
# edite o .env e preencha CIEM_SECRET_KEY e CIEM_GRAFANA_TOKEN com as chaves geradas
# Opcional: edite config/*.yaml — ou configure pelo portal após o login admin
# (módulos, LDAP, usuários locais, provedor de IA)
docker compose -f deploy/docker/docker-compose.yml --profile core --profile modules --profile grafana up -d --build| Serviço | URL | Dev |
|---|---|---|
| Portal | https://localhost/ |
Senha do admin rotacionada — defina em config/auth.yaml ou no portal |
| Grafana | https://localhost/grafana/ |
admin / admin (troque via GRAFANA_ADMIN_PASSWORD) |
| API | https://localhost/api/health |
— |
Segurança: o login devolve um token assinado (HMAC-SHA256) válido por 8 h (
CIEM_SESSION_TTLpara ajustar). O core não inicia (fail-fast) seCIEM_SECRET_KEYnão estiver configurada ou estiver no valor padrão (change-me...). Mais em docs/AUTH.md.
Após o login: sidebar Navegador (Grafana/URLs embutidos). Admin também usa Configuração (Usuários, LDAP, IA, Módulos) e Sessões (Guacamole no navegador ou nova aba). Operadores usam Visão geral e Análise para KPIs, gráficos e insights.
kubectl apply -f deploy/kubernetes/00-namespace.yaml
# Configure ConfigMap e Secrets — ver docs/KUBERNETES.md.
# Obrigatório nos Secrets: CIEM_SECRET_KEY e CIEM_GRAFANA_TOKEN (gere com openssl rand -hex 32)
kubectl apply -f deploy/kubernetes/YAML numerados (00–09): namespace, config, secrets, core, portal, módulos, Grafana, Guacamole, storage, ingress.
Referência visual em docs/assets/ para alinhar produto, UX e desenvolvimento:
| Imagem | Tela |
|---|---|
| login | Autenticação (brand-first) |
| dashboard | Visão geral com Lembretes, abas Wiki e Calendário |
| lembretes | Lembretes / Anotações flutuantes (arrastáveis) |
| calendário | Calendário deslizante (Google/Microsoft) |
| wiki | Wiki deslizante de serviços da instituição |
| navegador | Navegador HTML5 (Grafana/URLs embutidos) |
| alarmes | Alarmes ativos |
| análise | Análise (abas + gráfico) |
| sessões | Guacamole no navegador ou nova aba |
| configuração | Configuração por seções (admin) |
| arquitetura | Fluxo ZTNA (Portal + Navegador) |
Cada componente (core, portal, módulos, Grafana, Guacamole) roda em container/pod isolado. Detalhes: docs/ARCHITECTURE.md.
| Área | Documentos |
|---|---|
| Configuração | CONFIGURATION.md, AUTH.md, OWASP.md, AI.md |
| Deploy | DEPLOYMENT.md, KUBERNETES.md, CI_CD.md |
| Operação | USAGE.md, PROCESSES.md, MAINTENANCE.md |
| Visualização | DASHBOARDS.md, GRAFANA.md |
| Desenvolvimento | PORTAL.md, MODULES.md |
| Novidades | CHANGELOG_FEATURES.md |
Ative em config/modules.yaml ou no portal (Configuração → Módulos coletores): switch + URL/credenciais.
| Módulo | Fonte |
|---|---|
| zabbix | Zabbix API |
| cacti | Cacti web |
| nagios | Nagios XI |
| topdesk | TOPdesk API |
| inventory | API REST |
| syslog | Arquivo / API |
Os módulos usam
use_mock_on_failure: falsepor padrão — dados simulados não são mais fallback silencioso; falha de coleta vira erro/status OFFLINE. OCONFIG_PATHaceita arquivo (config.yaml) ou diretório (procuramodules.yamle extraimodules.<nome>.options). Detalhes: docs/CONFIGURATION.md e docs/MODULES.md.
pip install -r requirements-dev.txt
export PYTHONPATH=shared:services/core CONFIG_PATH=./config
export CIEM_SECRET_KEY="$(openssl rand -hex 32)"
export CIEM_GRAFANA_TOKEN="$(openssl rand -hex 32)"
# CIEM_RATE_LIMIT_ENABLED=0 desativa o rate limiting local (padrão usado nos testes)
ruff check shared services/core services/modules tests
pytest tests -vMIT — LICENSE.


