Files
A-Team-Security-Infra-Agent…/README.md
2026-02-26 19:47:52 -03:00

219 lines
7.4 KiB
Markdown

# 🛡️ 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 <seu-repo>
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.