# 🛡️ OCI CIS AI Agent **AI Agent - Infrastructure & Security Engineer** Plataforma web Dockerizada para auditoria de segurança OCI baseada no **CIS Foundations Benchmark 3.0**, com interface de chat AI Agent, geração de relatórios HTML/JSON, gerenciamento de configurações OCI, integração com bancos vetoriais e controle de acesso RBAC com MFA. --- ## 📋 Funcionalidades ### Interface Web (4 abas principais + 3 admin) | Aba | Descrição | |-----|-----------| | **💬 Chat Agent** | Interface de chat com AI Agent para consultas sobre CIS, status do sistema e comandos | | **📊 Report** | Visualização de relatórios HTML de compliance com iframe integrado | | **📁 Downloads** | Lista de relatórios com filtro, download em JSON/HTML | | **☁️ Config OCI** | Gerenciamento de credenciais OCI (tenancy, OCID, chaves PEM, região) | | **🔗 Vector DB** | Configuração de conexão com bancos vetoriais (ChromaDB, Pinecone, Weaviate, PGVector, Qdrant, Milvus, Oracle 23ai) | | **👥 Usuários** | *(admin)* Gerenciamento de usuários, criação, roles, ativação/desativação | | **🔐 MFA** | Configuração de autenticação TOTP (Google Authenticator / Authy) | | **📋 Audit Log** | *(admin)* Log de auditoria de todas as ações do sistema | ### Segurança - **Autenticação JWT** com expiração configurável - **MFA/TOTP** compatível com Google Authenticator e Authy - **3 roles**: `admin`, `user`, `viewer` - **Audit log** completo de todas as ações - **Senhas com PBKDF2-SHA256** (100k iterações + salt) ### Roles e Permissões | Role | Permissões | |------|-----------| | `admin` | Acesso total: usuários, configs, relatórios, MFA, audit, instalar OCI CLI | | `user` | Criar configs OCI/VectorDB, executar relatórios, usar chat | | `viewer` | Visualizar relatórios, downloads, usar chat (somente leitura) | --- ## 🚀 Quick Start ### Pré-requisitos - Docker e Docker Compose instalados ### 1. Clone e configure ```bash git clone cd oci-agent # Crie o arquivo de ambiente cp .env.example .env # Edite o .env e defina um APP_SECRET forte ``` ### 2. Suba os containers ```bash docker compose up -d --build ``` ### 3. Acesse Abra o navegador em **http://localhost:8080** **Credenciais padrão:** - Usuário: `admin` - Senha: `admin123` > ⚠️ **Altere a senha padrão imediatamente após o primeiro login!** --- ## 📐 Arquitetura ``` ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ Browser │────▶│ Nginx │────▶│ FastAPI │ │ (Frontend) │ :80 │ (Frontend) │ │ (Backend) │ │ SPA HTML │ │ Reverse │ │ Auth/API │ └──────────────┘ │ Proxy /api │ │ SQLite DB │ └──────────────┘ └──────┬───────┘ │ ┌───────▼───────┐ │ /data vol │ │ ├─ agent.db │ │ ├─ oci_configs│ │ ├─ reports │ └───────────────┘ ``` ### Containers | Container | Imagem | Porta | Função | |-----------|--------|-------|--------| | `oci-agent-frontend` | `nginx:alpine` | 8080→80 | Serve o SPA + reverse proxy para API | | `oci-agent-backend` | `python:3.12-slim` | 8000 | FastAPI com auth, RBAC, lógica de negócio | ### Volume persistente - `agent-data` → `/data` no backend (SQLite, configs OCI, relatórios) --- ## 🔌 Integração com MCP Server O sistema foi projetado para ser conectado ao **MCP Server FastMCP** criado anteriormente. Para integrar: ### 1. Monte o MCP server no container No `docker-compose.yml`, adicione ao serviço `backend`: ```yaml volumes: - agent-data:/data - ./mcp_server/server.py:/app/mcp_server.py:ro # MCP server ``` ### 2. Substitua o runner stub Edite `backend/cis_runner.py` para importar e usar as tools do MCP server: ```python from mcp_server import connect, collect_all_data, run_cis_checks, export_report_json ``` ### 3. Ou conecte via SSE/stdio O MCP server pode ser exposto como serviço separado e o backend se conecta via protocolo MCP padrão. --- ## 🗄️ Integração Vector DB A aba **Vector DB** permite configurar conexão com: | Banco | Porta Padrão | Uso | |-------|-------------|-----| | ChromaDB | 8000 | Embeddings locais | | Pinecone | 443 | SaaS vetorial | | Weaviate | 8080 | Vetorial + busca híbrida | | PGVector | 5432 | PostgreSQL com extensão vetorial | | Qdrant | 6333 | Vetorial open-source | | Milvus | 19530 | Vetorial distribuído | | Oracle 23ai | 1521 | Oracle Database com AI Vector Search | Use para armazenar e consultar findings de compliance, embeddings de documentação CIS, e contexto para o AI Agent. --- ## 📊 Relatórios CIS O sistema gera relatórios compatíveis com o **CIS OCI Foundations Benchmark 3.0** contendo: - **54 controles** em 8 domínios - Relatório HTML estilizado (similar ao Oracle Cloud Security Assessment) - Relatório JSON para integração programática - Resumo por domínio com contagem de PASS/FAIL - Detalhamento de cada controle --- ## 🔧 Configuração Avançada ### Variáveis de Ambiente | Variável | Padrão | Descrição | |----------|--------|-----------| | `APP_SECRET` | (gerado) | Chave secreta para JWT | | `JWT_EXPIRY_HOURS` | 12 | Expiração do token JWT | | `PORT` | 8080 | Porta do frontend | | `DATA_DIR` | /data | Diretório de dados persistentes | ### Instalar OCI CLI no container Na interface como admin, vá em **Config OCI** → **Instalar OCI CLI no Container**. Ou manualmente: ```bash docker exec -it oci-agent-backend pip install oci-cli ``` ### Backup dos dados ```bash docker cp oci-agent-backend:/data ./backup-data ``` --- ## 📝 API Endpoints | Método | Endpoint | Auth | Descrição | |--------|----------|------|-----------| | POST | `/api/auth/login` | - | Login (retorna JWT) | | POST | `/api/auth/logout` | ✅ | Logout | | POST | `/api/auth/register` | admin | Criar usuário | | POST | `/api/auth/change-password` | ✅ | Alterar senha | | POST | `/api/mfa/setup` | ✅ | Gerar secret MFA | | POST | `/api/mfa/verify` | ✅ | Ativar MFA | | GET | `/api/users` | admin | Listar usuários | | GET | `/api/users/me` | ✅ | Dados do usuário atual | | PUT | `/api/users/{id}` | admin | Atualizar usuário | | POST | `/api/oci/config` | user+ | Salvar config OCI (multipart) | | GET | `/api/oci/configs` | ✅ | Listar configs | | POST | `/api/oci/test/{id}` | user+ | Testar conexão OCI | | POST | `/api/reports/run` | user+ | Executar relatório CIS | | GET | `/api/reports` | ✅ | Listar relatórios | | GET | `/api/reports/{id}/html` | ✅ | Relatório HTML | | GET | `/api/reports/{id}/download` | ✅ | Download relatório | | POST | `/api/vectordb/config` | user+ | Salvar config Vector DB | | GET | `/api/vectordb/configs` | ✅ | Listar configs VDB | | POST | `/api/chat` | ✅ | Chat com AI Agent | | GET | `/api/audit-log` | admin | Log de auditoria | | GET | `/api/health` | - | Health check | --- ## 📄 Licença Projeto interno. Todos os direitos reservados.