Visão geral das visualizações parametrizadas

No Bigtable, é possível usar visualizações parametrizadas para filtrar dinamicamente intervalos de dados para visualizações lógicas com base no contexto do aplicativo. Essa abordagem protege seus aplicativos contra injeção de SQL e reduz a necessidade de várias visualizações estáticas.

Para processar informações sensíveis, as visualizações parametrizadas do Bigtable usam um contexto isolado separado do texto da consulta SQL. Como o banco de dados vincula esses valores no lado do servidor, os usuários e os agentes de IA não podem manipular os parâmetros de consulta. O banco de dados limita automaticamente o acesso aos dados ao seu contexto específico, independentemente de como você escreve a consulta.

Benefícios das visualizações parametrizadas

As visualizações parametrizadas são adequadas para gerenciar o escopo de dados no nível do banco de dados, principalmente em aplicativos que processam consultas de formato livre traduzidas da linguagem natural. O escopo de dados é o processo de restringir os resultados da consulta a um subconjunto específico de dados. Essas visualizações oferecem uma maneira flexível de implementar o seguinte:

  • Propagação de identidade de nível profundo: aplique permissões de dados refinadas no nível do usuário, o que garante que os usuários só possam acessar o próprio contexto de dados. Por exemplo, um aplicativo pode garantir que os usuários ou locatários recuperem linhas que estejam apenas dentro do limite designado.
  • Gerenciamento de usuários simplificado: use um único papel de banco de dados para todos os usuários do banco de dados em vez de um papel separado para cada usuário.
  • Isolamento de parâmetros: as visualizações parametrizadas atenuam os riscos transmitindo valores como um contexto isolado que permanece fora do controle do LLM ou do usuário final. Como esses valores são mantidos separados do texto da consulta, um usuário ou um agente de IA que gera a consulta não pode manipulá-los.
  • Mitigação de injeção de SQL: ao criar aplicativos, a substituição de parâmetros no lado do cliente no texto da consulta pode levar à manipulação da consulta. As visualizações parametrizadas atenuam esse risco realizando a vinculação de parâmetros no lado do servidor depois que a estrutura da consulta é analisada. Isso evita a injeção de SQL porque os valores controlados pelo invasor não podem mudar a estrutura da consulta.

Por exemplo, considere um aplicativo de monitoramento de saúde que armazena registros médicos de pacientes, incluindo níveis de colesterol. Se os pacientes consultarem os próprios dados, um agente malicioso ou malcomportado poderá gerar ou solicitar uma consulta que tente recuperar os registros de outros pacientes. Usando uma visualização parametrizada, o aplicativo aplica o isolamento do paciente no nível do banco de dados. A visualização é definida com um parâmetro de visualização patient_id:

CREATE VIEW patient_health_pv AS
(SELECT * FROM patient_health_records WHERE patient_id = CAST(VIEW_PARAMETERS('patient_id') AS BYTES))

Quando o cliente quiser consultar a leitura de cholesterol de um paciente:

SELECT readings['value'], readings['date']
FROM patient_health_pv
WHERE readings['test_name'] = 'cholesterol'

Como a visualização é consultada, o Bigtable vincula e aplica automaticamente o valor patient_id do mapa de parâmetros isolado. O LLM ou o usuário final não têm capacidade de alterar ou descartar esse filtro, garantindo um escopo robusto no nível do usuário e eliminando vetores de injeção de SQL.

Como as visualizações parametrizadas funcionam

As visualizações parametrizadas usam um mecanismo chamado parâmetros de visualização para transmitir com segurança o contexto no nível do aplicativo, como um ID de usuário, para o banco de dados. As visualizações parametrizadas fazem isso transmitindo os valores do parâmetro de visualização como um contexto separado e isolado com a solicitação de consulta. O Bigtable pode acessar esse contexto durante a execução da consulta, mas a consulta em si não pode ler ou modificar o contexto.

A função VIEW_PARAMETERS() é a interface SQL para acessar esses parâmetros em uma definição de visualização. Por exemplo, para filtrar dados com base no ID do usuário que faz a consulta, inclua o seguinte na cláusula WHERE da visualização:

CREATE VIEW purchase_history_pv AS
(SELECT * FROM purchases WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES))