Um prompt não é um sistema de permissão
É tentador adicionar “mostrar apenas meu território” ao prompt do sistema e seguir em frente. Eu entendo o apelo. Mas um prompt é uma sugestão, e o modelo pode ignorá-lo, esquecê-lo ou interpretá-lo mal em uma questão difícil. Uma configuração melhor analisa o SQL gerado e o reescreve antes que qualquer coisa seja executada, de modo que as regras vivam em um código que o modelo não consiga contornar. No benchmark por trás deste trabalho, a correção mais comum em 900 consultas de teste foi adicionar um filtro de linha ao WHERE cláusula (285 vezes). O mascaramento de coluna veio em seguida (240), seguido pela restrição de escopo (165).
Sim ou não raramente é a verdadeira resposta
A maioria das questões reais não se enquadra perfeitamente em permitir ou negar. Nas mesmas 900 consultas, 40% poderiam ser executadas inalteradas. Outros 20% precisavam de um filtro de linha, 15% precisavam de mascaramento de coluna e 11,7% precisavam de uma reescrita de junção. Cerca de 6,7% foram para um revisor humano e outros 6,7% foram bloqueados. A maioria das pessoas ainda obteve uma resposta útil. Era apenas mais seguro e acho que essa negociação é a certa a se fazer.
Verifique antes de executar e mantenha a conta pequena
Valide cada consulta antes de executá-la. Rejeitar SELECT *extrai limites de escopo, conjuntos de resultados superdimensionados e junções arriscadas. Em seguida, envie tudo através de um gateway que se conecta a uma conta de banco de dados restrita. Dessa forma, uma injeção imediata ou uma geração ruim não poderá contornar suas regras, mesmo quando o modelo for criativo.
