219 lines
7.4 KiB
Markdown
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.
|