Local não significa isolado
Um servidor de inferência local executa o modelo em um equipamento sob seu controle, mas pode aceitar solicitações de outros dispositivos se o processo estiver escutando em uma interface de rede acessível e as regras do sistema permitirem as conexões. A localização do modelo, por si só, não determina quem pode usar a API nem quais operações pode realizar.
Antes de compartilhá-lo, defina o objetivo e o limite de acesso: o serviço será usado apenas pelo próprio equipamento, por alguns clientes de uma LAN ou por usuários remotos? Cada ampliação muda quais sistemas podem enviar dados e receber respostas. Se você não consegue identificar e verificar esses limites, mantenha o serviço restrito ao equipamento ou não o habilite.
Mapeie o percurso da solicitação
Uma solicitação costuma passar pelo cliente, pela rede, pelo processo que oferece a API e pelo modelo carregado. Também pode passar por um proxy reverso ou por uma interface web. Cada componente tem configurações capazes de influenciar o acesso: por exemplo, o cliente armazena credenciais, o firewall filtra conexões e o runtime atende ao endpoint.
Faça um inventário antes de alterar as configurações: identifique o equipamento que hospeda o serviço, o processo que o executa, as portas utilizadas, os clientes que precisam de acesso e a existência de componentes intermediários. Registre também quem pode modificar esses controles. A inferência compartilhada acrescenta um percurso de rede e requisitos operacionais que não existem da mesma forma quando a aplicação executa o modelo no próprio dispositivo.
Mapa mínimo de uma solicitação
- 01Cliente: identifique o equipamento e a aplicação que enviarão as solicitações.
- 02Rede: delimite as interfaces, os segmentos e as rotas que podem chegar ao host.
- 03Serviço: verifique o processo, o endpoint, as portas e a autenticação.
- 04Modelo e dados: determine quais entradas, saídas e registros o serviço manipula.
- 05Administração: identifique quem pode alterar as configurações ou as credenciais.
Escolha o escopo de acesso antes de configurar
Se você só precisa testar o serviço no mesmo equipamento, não o amplie para a LAN por conveniência. Um endereço de loopback, como 127.0.0.1 em IPv4 ou ::1 em IPv6, limita a conexão ao host para aquele protocolo e aquela configuração. Ainda assim, é preciso verificar quais endereços o processo realmente utiliza. Uma interface de rede específica ou um endereço curinga pode permitir que outros equipamentos tentem se conectar.
Para compartilhá-lo em uma LAN, restrinja o acesso às interfaces, redes e clientes necessários, se o runtime e o ambiente permitirem. Não confunda estar conectado a uma rede privada com o fato de cada dispositivo ser confiável. Para acesso remoto, reavalie o projeto: acrescente controles adequados ao percurso, proteja o tráfego e evite publicar diretamente na Internet um endpoint de desenvolvimento.
Matriz inicial de decisão
| Necessidade | Decisão prudente | Condição para avançar |
|---|---|---|
| Uso no próprio equipamento | Manter o serviço em loopback | Confirmar que também não está escutando em interfaces externas. |
| Uso por clientes de uma LAN | Restringir às interfaces, redes e clientes necessários | Testar a partir de um cliente autorizado e de outro não autorizado. |
| Uso remoto ou pela Internet | Não expor diretamente um endpoint de desenvolvimento | Projetar e verificar controles adicionais para todo o percurso. |
| Não é possível determinar a escuta ou testar os limites | Não habilitar o acesso pela rede | Resolver a configuração e realizar os testes antes da implantação. |
Inspecione a configuração efetiva
Não presuma que um runtime escuta apenas no próprio equipamento nem que a configuração inicial inclui autenticação. Os valores dependem do produto, da versão e dos parâmetros de execução. Consulte a documentação atual do runtime escolhido e confirme o resultado no sistema anfitrião: qual endereço e quais interfaces estão escutando, quais portas estão abertas e qual processo as mantém.
Verifique também como o serviço trata solicitações sem credenciais, credenciais incorretas e operações não permitidas. Uma API compatível com um formato conhecido não garante que implemente os mesmos recursos de autenticação ou autorização de outro produto. Se o runtime não oferecer controles suficientes, não presuma que uma chave fictícia ou um cabeçalho enviado pelo cliente proteja o endpoint.
Aplique controles em camadas
A primeira camada é limitar onde o serviço escuta: use loopback quando não houver necessidade de acesso remoto ou uma interface específica quando a LAN exigir isso e a ferramenta permitir. Em seguida, configure o sistema operacional ou o firewall para aceitar apenas as conexões previstas. As regras devem corresponder à topologia real, não à suposição de que toda rede local é segura.
Acrescente autenticação e autorização quando estiverem disponíveis e forem necessárias. Proteja as credenciais, evite incluí-las no código-fonte ou em arquivos legíveis por usuários não autorizados e revise as permissões que concedem. Se adicionar um proxy reverso, verifique como ele encerra e protege o tráfego, identifica os clientes e se o serviço de origem continua acessível por outra rota. Não use o proxy como substituto para fechar ou limitar esse acesso direto.
Teste a partir de duas perspectivas
Um teste no cliente previsto confirma que aquele percurso funciona, mas não revela quem mais consegue alcançar o endpoint. Faça um teste a partir de um cliente autorizado e outro a partir de um dispositivo que não deveria ter acesso. Verifique o resultado real, não apenas se a aplicação exibiu um erro: uma conexão recusada, uma falha de autenticação e uma operação não autorizada não são necessariamente a mesma coisa.
Registre a data, a versão do runtime, o sistema operacional, o equipamento de origem, a rede, o método de teste e o resultado. Repita as verificações após alterações relevantes no runtime, no firewall, no proxy, no roteador ou na topologia. Um teste limitado a uma LAN específica não demonstra que o endpoint esteja inacessível a partir de qualquer outra rede.
Matriz de testes de acesso
| Teste | Resultado esperado | O que registrar |
|---|---|---|
| Cliente autorizado com credenciais válidas | Acessa somente as funções previstas | Origem, método, escopo e resposta. |
| Cliente autorizado sem credenciais | Solicitação recusada se a autenticação for obrigatória | Código ou comportamento observado. |
| Cliente com credenciais inválidas | Acesso recusado | Comportamento e evidências disponíveis. |
| Cliente que não deveria ter acesso | Não alcança o serviço ou não passa pelos controles | Rede de origem, rota e resultado. |
| Cliente autorizado tenta uma operação não permitida | Operação negada, se houver autorização por função | Operação testada e resultado. |
Registros, alterações e manutenção
Decida quais informações o runtime ou o proxy deve registrar e quem pode consultar esses registros. Eles podem conter dados das solicitações ou respostas, identificadores de clientes, erros ou outras informações sensíveis. Consulte a documentação e verifique a configuração efetiva antes de mantê-los ou compartilhá-los. Os registros ajudam a investigar acessos inesperados, mas sua existência não demonstra que o acesso esteja controlado.
Defina quem pode alterar as regras de rede, as opções do runtime e as credenciais. Mantenha o runtime e suas dependências atualizados conforme as instruções do fornecedor e volte a testar o acesso depois de cada atualização. Se detectar conexões inesperadas, suspenda o acesso compartilhado, revise as rotas de rede e as credenciais e preserve as informações de diagnóstico necessárias de acordo com suas políticas.
Rotina de revisão
- 01Documente o objetivo, os clientes admitidos e o responsável pelo serviço.
- 02Revise a escuta, as portas, a autenticação, a autorização e as regras de rede.
- 03Registre quais informações o runtime e o proxy mantêm e quem pode consultá-las.
- 04Atualize os componentes por meio de um processo conhecido e revise as alterações de configuração.
- 05Repita os testes de acesso e preserve os resultados.
- 06Diante de um acesso inesperado, limite ou interrompa o serviço enquanto investiga.
Quando manter, compartilhar ou interromper
Mantenha o serviço no próprio equipamento se precisar apenas de uso local, não souber com certeza em quais interfaces ele está escutando ou não puder testar a exposição a partir de outro dispositivo. Compartilhá-lo em uma LAN pode ser razoável quando os clientes e as redes estiverem delimitados, os controles forem compatíveis com o runtime e os acessos permitidos e negados tiverem sido verificados.
Não habilite o acesso se não puder limitar quem chega ao serviço, se as credenciais não estiverem protegidas, se você não souber o que o sistema registra ou se não puder observar e revisar as alterações. Para acesso remoto, trate a decisão como uma implantação diferente: exija uma revisão específica de todos os componentes e percursos envolvidos, em vez de simplesmente ampliar a regra de rede.
Decisão de implantação
| Situação da revisão | Decisão |
|---|---|
| Escuta e limites confirmados; só é necessário o uso local | Manter no equipamento. |
| Acesso pela LAN necessário; escopo restrito e testes concluídos | Compartilhar com os clientes previstos e revisar periodicamente. |
| Autenticação, restrição de rede ou testes insuficientes | Não habilitar o acesso compartilhado. |
| É necessário acesso remoto | Projetar controles específicos e verificá-los antes de aceitar conexões. |
O que este guia demonstra — e o que não demonstra
Uma conexão que funciona a partir de um cliente permitido e falha a partir de um cliente de teste não certifica que todas as rotas estejam protegidas. O resultado depende das configurações, versões e topologia examinadas. Tampouco comprova que entradas, saídas ou diagnósticos permaneçam dentro de um limite de privacidade: para isso, é preciso revisar separadamente o tráfego de saída e o comportamento de cada componente.
O controle de acesso trata de quem pode alcançar o serviço e do que pode fazer dentro dos limites definidos. A privacidade dos dados e o tráfego de saída são questões relacionadas, mas distintas. Não deduza segurança geral nem privacidade completa do fato de o modelo ser executado localmente ou de um teste pontual.
Questões em aberto
- Os controles, os valores padrão e os métodos de configuração variam conforme o runtime, a versão e o sistema operacional; a documentação disponível não permite prescrever etapas universais.
- Não há uma topologia de rede, um runtime específico nem uma versão testada definidos para este guia; cada implantação deve documentar e repetir suas próprias verificações.
- Testes feitos a partir de um cliente autorizado e de outro não autorizado não demonstram que todas as interfaces ou rotas de rede estejam protegidas.
- Não é possível deduzir, pela acessibilidade da API, se o runtime, o modelo ou seus componentes realizam tráfego de saída ou quais dados os registros armazenam.
Continue a explorar
Fontes consultadas
Correções e transparência
Se encontrar informação incorreta ou desatualizada, envie-nos a página e a fonte que devemos rever.
Propor uma correção