CISO Agent - Documentação Completa
📋 Visão Geral
O CISO Agent (Chief Information Security Officer) é um agente executivo do CSuite que protege segurança da informação. Ele monitora postura de segurança, detecta ameaças, gerencia acesso e monitora compliance (LGPD, GDPR).
Status: ✅ Implementado (v1.0.0) - Pronto para uso
🎯 Propósito
O CISO Agent existe para:
- Monitorar Postura: Acompanhar vulnerabilidades, compliance e status de serviços críticos
- Detectar Ameaças: Identificar ameaças e incidentes de segurança
- Governar Acesso: Gerenciar acesso e permissões
- Monitorar Compliance: Avaliar conformidade com LGPD e GDPR
- Emitir Alertas: Alertar sobre riscos e incidentes de segurança
🏗️ Arquitetura
Fluxo de Execução
1. Recebe Payload
↓
2. Build Context
├─ Security Posture (vulnerabilidades, compliance, status de serviços)
├─ Threat Detection (ameaças, incidentes)
├─ Access Governance (acesso, permissões)
├─ Compliance Status (LGPD, GDPR)
└─ Memory Query (precedentes de segurança)
↓
3. Determine Decision Type
├─ CISO.ALERT_THREAT (alerta de ameaça)
├─ CISO.BLOCK_ACCESS (bloquear acesso)
├─ CISO.REQUIRE_MFA (exigir MFA)
└─ CISO.ESCALATE_INCIDENT (escalar incidente)
↓
4. Calculate Confidence
↓
5. Propose Actions
├─ ALERT_THREAT
├─ BLOCK_ACCESS
├─ REQUIRE_MFA
└─ ESCALATE_INCIDENT
↓
6. Policy Validation
↓
7. Policy Engine Integration
↓
8. Execute Actions
↓
9. Record Outcome
Componentes
- YAML Config:
agents/ciso/ciso_agent.yaml- Configuração canônica - Script Python:
workflows/scripts/ciso_agent_daily_brief.py- Execução diária - Cron Setup:
workflows/scripts/setup_cron_ciso.sh- Configuração de cron
🔌 Integrações
1. Policy Engine
Base URL: https://csuite.internut.com.br/executive
| Endpoint | Descrição | Uso |
|---|---|---|
POST /v1/policy/evaluate |
Avaliar decisão | Validação de políticas de segurança |
GET /v1/governance/policies/radar |
Policy Radar | Políticas de segurança |
2. Auth Service
Base URL: https://csuite.internut.com.br/auth
| Endpoint | Descrição | Uso |
|---|---|---|
GET /health |
Health check | Status do serviço de autenticação |
POST /validate |
Validar token | Validação de tokens JWT |
3. Executive API
Base URL: https://csuite.internut.com.br/executive
| Endpoint | Descrição | Uso |
|---|---|---|
GET /v1/policy/guardian/pending |
Casos pendentes | Casos de segurança |
POST /v1/memory/query |
Consultar memória | Precedentes de segurança |
4. Gateway
Base URL: https://csuite.internut.com.br
| Endpoint | Descrição | Uso |
|---|---|---|
GET /api/status |
Status de serviços | Health checks de serviços críticos |
📥 Payload de Entrada
Formato Padrão
{
"org_id": 0,
"as_of_date": "2025-01-04",
"time_window_days": 7,
"focus": {
"themes": ["security_posture", "threat_detection", "access_governance", "compliance"],
"constraints": []
},
"attention": {
"max_recommendations": 3,
"max_output_tokens": 1200
}
}
Campos
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
org_id |
integer | ✅ | ID da organização |
as_of_date |
string | ✅ | Data de referência (YYYY-MM-DD) |
time_window_days |
integer | ❌ | Janela de análise (padrão: 7) |
focus.themes |
array | ❌ | Temas de foco |
attention.max_recommendations |
integer | ❌ | Máximo de recomendações (padrão: 3) |
📤 Payload de Saída
Formato Padrão
{
"decision": {
"decision_type": "CISO.ALERT_THREAT | CISO.BLOCK_ACCESS | CISO.REQUIRE_MFA | CISO.ESCALATE_INCIDENT",
"confidence": 0.85,
"proposed_actions": [
{
"action": "ALERT_THREAT",
"threat_type": "unauthorized_access",
"reason": "Acesso não autorizado detectado",
"severity": "high"
}
]
},
"context": {
"security_posture": {
"summary": "Resumo da postura de segurança",
"services_status": [],
"vulnerabilities": [],
"security_score": 0.95
},
"threat_analysis": {
"threats_detected": false,
"threats_count": 0,
"threats": [],
"severity": "none | low | medium | high | critical"
},
"access_governance": {
"auth_status": "healthy",
"access_policies_count": 5,
"risks": []
},
"compliance_status": {
"compliance_score": 0.95,
"lgpd_compliance": true,
"gdpr_compliance": true,
"gaps": []
}
},
"execution": {
"status": "completed",
"actions": []
},
"opportunities": [
{
"type": "ALERT_THREAT",
"description": "Ameaça detectada",
"impact": "alto | médio | baixo",
"confidence": 0.85,
"severity": "high"
}
],
"recommendations": [
{
"action": "Bloquear acesso não autorizado",
"reason": "Ameaça de segurança detectada",
"priority": "alta",
"security_impact": "alto"
}
],
"next_steps": [
"Investigar ameaça",
"Bloquear acesso",
"Notificar equipe de segurança"
],
"generated_at": "2025-01-04T08:50:00",
"org_id": 0,
"as_of_date": "2025-01-04"
}
🔄 Decision Types
CISO.ALERT_THREAT
Descrição: Alerta de ameaça detectada
Condições:
- Ameaça detectada (acesso não autorizado, atividade suspeita)
- Severidade: medium, high ou critical
- Confidence >= 0.8
Ações:
- ALERT_THREAT: Enviar alerta
- REQUIRE_MFA: Exigir MFA (se severidade alta)
CISO.BLOCK_ACCESS
Descrição: Bloquear acesso
Condições:
- Acesso não autorizado detectado
- Ameaça crítica identificada
- Confidence >= 0.7
Ações:
- BLOCK_ACCESS: Bloquear acesso imediatamente
- ESCALATE_INCIDENT: Escalar incidente
CISO.REQUIRE_MFA
Descrição: Exigir autenticação multifator
Condições:
- Atividade suspeita detectada
- Acesso de localização não usual
- Confidence >= 0.9
Ações:
- REQUIRE_MFA: Exigir MFA
- ALERT_THREAT: Enviar alerta
CISO.ESCALATE_INCIDENT
Descrição: Escalar incidente de segurança
Condições:
- Incidente crítico detectado
- Ameaça de alto impacto
- Confidence >= 0.7
Ações:
- ESCALATE_INCIDENT: Escalar para equipe de segurança
- BLOCK_ACCESS: Bloquear acesso (se necessário)
🎛️ Autonomia
Níveis de Autonomia
| Nível | Descrição | Condição |
|---|---|---|
| L0 | Sempre recomendação | BLOCK_ACCESS, ESCALATE_INCIDENT, ou confidence < 0.7 |
| L1 | Alerta automático | ALERT_THREAT e confidence >= 0.8 |
| L2 | Exigir MFA automaticamente | REQUIRE_MFA e confidence >= 0.9 |
⚙️ Configuração
Variáveis de Ambiente
# LLM
OPENAI_API_KEY=sk-...
LLM_MODEL=gpt-4o-mini
# CSuite Services
CSUITE_POLICY_ENGINE_URL=https://csuite.internut.com.br/executive
CSUITE_EXECUTIVE_URL=https://csuite.internut.com.br/executive
CSUITE_AUTH_URL=https://csuite.internut.com.br/auth
CSUITE_GATEWAY_URL=https://csuite.internut.com.br
CSUITE_MEMORY_URL=https://csuite.internut.com.br/executive
# Webhook
CISO_BRIEF_WEBHOOK_URL=https://hooks.slack.com/services/...
# Configuração
ORG_ID=0
TIME_WINDOW_DAYS=7
Cron Job
O CISO Agent executa diariamente às 08:50:
cd workflows/scripts
./setup_cron_ciso.sh
Cron Entry:
50 8 * * * cd /path/to/workflows/scripts && /usr/bin/python3 ciso_agent_daily_brief.py >> logs/ciso_agent_cron.log 2>&1
🚀 Uso
Execução Manual
cd workflows/scripts
python3 ciso_agent_daily_brief.py
Output
O brief é publicado no Slack e salvo em arquivo JSON:
ciso_brief_YYYYMMDD_HHMMSS.json
Formato do Brief no Slack
O brief é formatado com:
- Header com status de ameaças (🔴 se detectado, 🟢 se não)
- Contexto de segurança
- Postura de segurança (score)
- Análise de ameaças (severidade)
- Status de compliance (LGPD, GDPR)
- Oportunidades identificadas
- Recomendações prioritárias
- Próximos passos
🔍 Métricas Monitoradas
Security Posture
- Services Status: Status de serviços críticos (gateway, auth, executive)
- Security Policies: Número de políticas de segurança ativas
- Security Score: Score geral de segurança (0.0 a 1.0)
Threat Detection
- Threats Detected: Número de ameaças detectadas
- Threat Severity: Severidade das ameaças (none, low, medium, high, critical)
- Security Cases: Casos de segurança pendentes
Access Governance
- Auth Service Status: Status do serviço de autenticação
- Access Policies: Número de políticas de acesso
- Access Risks: Riscos de acesso identificados
Compliance
- Compliance Score: Score de compliance (0.0 a 1.0)
- LGPD Compliance: Conformidade com LGPD
- GDPR Compliance: Conformidade com GDPR
- Compliance Gaps: Gaps de compliance identificados
🛠️ Troubleshooting
Erro: "OPENAI_API_KEY não configurada"
Solução: Configure a variável de ambiente OPENAI_API_KEY ou LLM_API_KEY.
Erro: "Auth Service retornou 404"
Solução: Verifique se o csuite-auth-external está rodando e acessível.
Erro: "Threat detection não disponível"
Solução: Integre com ferramentas de segurança (SIEM, IDS/IPS) para detecção completa de ameaças.
Brief não publicado no Slack
Solução:
1. Verifique se CISO_BRIEF_WEBHOOK_URL está configurada
2. Verifique se o webhook do Slack está válido
3. Verifique logs em ciso_agent.log
📚 Referências
- YAML Config:
agents/ciso/ciso_agent.yaml - Script Python:
workflows/scripts/ciso_agent_daily_brief.py - README:
agents/ciso/README.md - Security Policy:
docs/operations/SECURITY_POLICY.md - Compliance:
docs/operations/COMPLIANCE.md
Última atualização: 2025-01-04