# AI Inference para proteção em uploads de arquivos

import DocButton from '~/components/webkit/DocButton.vue';

Este documento apresenta um caso de uso específico de análise de arquivos como exemplo de aplicação do **Azion AI Inference** para segurança autônoma. Existem diversos outros cenários nos quais agentes autônomos podem reforçar a segurança de aplicações e APIs.

O **Azion AI Inference** aplicado à segurança autônoma atua como um **co-processador inteligente de segurança** no edge, analisando **conteúdo e contexto** dos uploads de arquivos em tempo real, detectando comportamentos maliciosos e **mitigando automaticamente** antes que o arquivo chegue à aplicação de origem.

---


## Diagrama de arquitetura do AI Inference de Segurança Autônoma para uploads de PDF


![Arquitetura do Azion AI Inference de Segurança Autônoma para uploads de PDF](/assets/docs/images/uploads/diagram-ai-autonomous-security.png)

### Fluxo de dados

1. Um usuário envia uma requisição HTTP(S) para a aplicação web contendo um **upload de arquivo PDF**.  
2. A requisição chega à **Azion Web Platform** e é roteada para o **edge node** mais próximo.  
3. O **Firewall** processa a requisição, aplicando:
   - Regras de **DDoS Protection**.  
   - Regras de **WAF e Network Shield**, se configuradas.  
4. Antes de encaminhar a requisição à origem, o **Rules Engine do Firewall** aciona uma **Function de segurança** que implementa o segurança autônoma **usando o Azion AI Inference** para inspeção de upload:
   - O AI Inference verifica metadados do arquivo (tamanho, tipo, estrutura interna).  
   - Analisa o **payload do PDF** à procura de:
     - Objetos suspeitos e código embutido.  
     - Padrões de **PDF Injection**, scripts, macros e links maliciosos.  
     - Inconsistências na estrutura do documento que indiquem tentativa de exploração.  
   - Correlaciona com contexto da requisição e políticas definidas.  
5. Com base na decisão do AI Inference:
   - **Bloqueia** a requisição e retorna uma resposta segura ao usuário (ex.: erro genérico, mensagem de arquivo inválido).  
   - **Permite** o upload e encaminha a requisição para a aplicação e, eventualmente, para a origem.  
6. Toda a atividade é registrada e pode ser acompanhada pelos produtos **Observe** (Real-Time Events, Real-Time Metrics, Data Stream, GraphQL API).

---

## Componentes


- **[Firewall](/pt-br/documentacao/produtos/secure/firewall/)**  
  Camada de proteção que aplica políticas de segurança na borda da rede:
  - **DDoS Protection** para mitigar ataques volumétricos.  
  - **Web Application Firewall (WAAP)** para proteger contra OWASP Top 10, incluindo vetores relacionados a upload e manipulação de conteúdo.  
  - **Network Shield** para bloquear origens suspeitas por IP, ASN ou geolocalização.  

- **[Functions](/pt-br/documentacao/produtos/secure/firewall/functions/)**  
  Executa a função que orquestra o **Azion AI Inference de Segurança Autônoma**:
  - Recebe a requisição e extrai o arquivo PDF.  
  - Invoca o agente de IA para análise de payload.  
  - Aplica as decisões (permitir, bloquear, quarentena, resposta customizada).

- **[AI Inference](/pt-br/documentacao/produtos/ai/ai-inference/)**  
  Conjunto de modelos de IA e lógica de decisão que:
  - Opera em tempo real, no edge.  
  - Analisa estrutura e conteúdo dos PDFs.  
  - Aplica políticas de risco alinhadas a requisitos de **GRC** da organização.  
  - Aprende com feedback humano e eventos históricos para reduzir falsos positivos.

- **[Applications](/pt-br/documentacao/produtos/build/applications/)**  (Opcional)
  Hospeda a aplicação web que consome uploads de arquivos e expõe endpoints HTTP(S) para usuários finais.

- **[Object Storage](/pt-br/documentacao/produtos/store/object-storage/)** (opcional)  
  Utilizado para:
  - Armazenar arquivos em **quarentena** para análise posterior.  
  - Manter amostras de treinamento para melhoria contínua do AI Inference.  

- **[Observe](/pt-br/documentacao/produtos/observe/visao-geral/)**  
  Produtos de observabilidade da Azion:
  - **Real-Time Metrics** e **Real-Time Events** para acompanhar bloqueios, anomalias e volume de uploads.  
  - **Data Stream** para enviar logs detalhados para SIEM, data lakes e plataformas de fraude.  
  - **GraphQL API** para consultas avançadas e correlação de eventos de segurança.

## Pré-requisitos

- Conta na Azion.
- Endpoint do AI Inference (interno ou gerenciado) com contrato de API para análise de eventos maliciosos.
- Domínio apontado para a Azion Web Platform. (opcional)

---

## Implementação

### 1. Implantar a função de segurança com AI Inference

Vamos criar uma **Function** que analisa requisições no Azion Firewall, utilizando IA para identificar e bloquear conteúdos maliciosos ou indesejados.
   - Acesse o console da Azion e navegue até o serviço de Functions.
   - Clique no botão "+ Function".
   - Preencha o nome da Function com um nome único e descritivo.
   - Na seção *Execution Environment*, selecione "Firewall".
   - Vá para a aba "Code" e cole o código abaixo.


```code 
async function handleRequest(event) {   
  try {     
    const requestBody = await event.request.text();     
    const { model, action, prompt } = event.args; // Now we only need model, action, and prompt     
    const contentType = event.request.headers.get("content-type");      

    // Allows images     
    if (contentType && contentType.startsWith("image/")) {       
      event.continue();       
      return;     
    }      

    // Decodes the content if it's base64     
    const decodedBody = contentType && contentType.includes("base64")       
      ? atob(requestBody.split(",")[1])       
      : requestBody;      

    // Calls the model via Azion.AI.run     
    const modelResponse = await Azion.AI.run(model, {       
      stream: false,       
      seed: 42,       
      temperature: 0,       
      max_tokens: 1024,       
      messages: [         
        {           
          role: "system",           
          content: `${prompt}`         
        },         
        {           
          role: "user",           
          content: decodedBody         
        }       
      ]     
    });      

    // Extracts the model's response     
    const result = modelResponse?.choices?.[0]?.message?.content?.trim();      

    if (result === "true") {       
      event.console.warn(`[AI] ${result}`);       
      event[action](); // Executes the action (e.g., deny)       
      return;     
    }   
  } catch (err) {     
    event.console.error("Error handling request:", err.message);     
    event.continue();     
    return;   
  }    

  event.continue(); // If not malicious, let it pass 
}  

// Keeps the event listener 
addEventListener("firewall", event => {   
  event.waitUntil(handleRequest(event)); 
});
```

   - Agora na aba "Arguments" e cole o código abaixo.

```code
{
  "model": "casperhansen-mistral-small-24b-instruct-2501-awq",
  "prompt": "You are a security assistant specialized in detecting malicious PDF files. Analyze the provided content carefully and return 'true' only if you identify malicious content, such as embedded scripts, suspicious patterns, or known vulnerabilities. Do not classify a file as malicious based solely on its structure or the presence of a PDF header. If the content is safe or does not contain clear malicious indicators, return 'false'. Do not provide any additional explanation or output.",
  "action": "deny"
}
```
**Observação:** Certifique-se de que o modelo selecionado esteja disponível e configurado corretamente no ambiente Azion. Consulte os [modelos disponíveis](/pt-br/documentacao/produtos/ai/ai-inference/modelos/).

### 2. Configurar o Firewall e políticas básicas

- Crie um **Firewall** ou edite um existente.  
- Para garantir total segurança, habilite os módulos: **DDoS Protection**, **Functions**, **Network Shield** e **Web Application Firewall (WAF)**.  
- Na aba Functions Instances, instancie a função no Firewall.
- Na aba **Rules Engine**, crie uma regra que:
   - Seja acionada em rotas específicas de upload (ex.: `/upload`, `/documents/upload`). 
   - **Execute a função** de AI Inference. 

### 3. Observar, ajustar e evoluir o AI Inference

- Use os produtos **Observe** para monitorar:
   - Taxa de uploads bloqueados, permitidos e em quarentena.  
   - Padrões por país, IP, ASN, rota e horário.  
   - Eventos correlacionados com incidentes de segurança reportados.  
- Ajuste:
   - Sensibilidade do AI Inference.  
   - Políticas de bloqueio vs. quarentena.  
   - Regras do **WAF** e **Network Shield** com base nos insights coletados.  
- Incorpore feedback dos analistas de segurança, rotulando falsos positivos/negativos para melhorar continuamente o modelo e reduzir atrito com usuários legítimos.

---

## Documentação relacionada

- [Implemente um assistente Copilot baseado em um agente de IA ReAct](/pt-br/documentacao/arquiteturas/inteligencia-artificial/agente-ai-assistente-copilot/)  
- [Automação da segurança com Edge Computing](/pt-br/documentacao/arquiteturas/automacao-da-seguranca/automacao-da-seguranca-com-edge-computing/)  
- [Acelere a modernização da segurança com edge computing](/pt-br/documentacao/arquiteturas/modernizacao-da-seguranca/modernizacao-da-seguranca-com-edge-computing/)  
- [Proteja aplicações web e APIs com WAAP](/pt-br/documentacao/arquiteturas/edge-firewall/web-application-and-api-protection-waap/)  
- [Produtos Observe da Azion](/pt-br/documentacao/produtos/observe/visao-geral/)