Ciso Agent

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:

  1. Monitorar Postura: Acompanhar vulnerabilidades, compliance e status de serviços críticos
  2. Detectar Ameaças: Identificar ameaças e incidentes de segurança
  3. Governar Acesso: Gerenciar acesso e permissões
  4. Monitorar Compliance: Avaliar conformidade com LGPD e GDPR
  5. 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


🔌 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

Threat Detection

Access Governance

Compliance


🛠️ 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


Última atualização: 2025-01-04

🔊 Text-to-Speech

1.0x
1.0
Pronto para reproduzir