As visualizações seguras parametrizadas no Cloud SQL para PostgreSQL oferecem segurança de dados e controle de acesso a linhas para aplicativos, além de oferecer suporte a SQL. Essas visualizações oferecem suporte à extração de valores de dados (o processo de recuperação de partes específicas de dados de colunas) e ajudam a proteger contra ataques de injeção de comandos. As visualizações seguras parametrizadas ajudam a garantir que os usuários finais só possam ter acesso de visualização aos dados que devem acessar.
As visualizações seguras parametrizadas são uma extensão de visualizações do PostgreSQL, que permitem usar parâmetros de visualização nomeados específicos do aplicativo nas definições de visualização. Esse recurso fornece uma interface que recebe uma consulta e valores para os parâmetros nomeados. As visualizações executam a consulta com esses valores, que são usados durante toda a execução da consulta.Exemplo de visualização segura parametrizada
Confira a seguir um exemplo de visualização segura parametrizada:CREATE VIEW user_specific_items WITH (security_barrier) AS
SELECT item_id, item_name, description
FROM items t
WHERE owner_id = $@app_user_id;
É possível consultar as visualizações usando a função execute_parameterized_query ou executando a instrução EXECUTE .. WITH VIEW PARAMETERS.
Casos de uso
Modelos de linguagem grandes (LLMs) podem gerar consultas SQL que expõem dados sensíveis.
As visualizações seguras parametrizadas gerenciam a segurança de dados no nível do banco de dados, especialmente consultas ad hoc de fontes não confiáveis, como as traduzidas da linguagem natural. Por exemplo, é possível usar visualizações seguras parametrizadas para oferecer segurança de dados para aplicativos em que os usuários podem emitir consultas em linguagem natural, como "Mostrar meus pedidos".
É possível usar visualizações seguras parametrizadas para aplicar os seguintes requisitos a como o Cloud SQL para PostgreSQL executa essa consulta:
- A consulta lê apenas os objetos e colunas do banco de dados listados nas visualizações seguras parametrizadas do banco de dados.
- A consulta lê apenas as linhas do banco de dados associadas ao usuário que enviou a consulta. As linhas retornadas têm uma relação de dados com a linha da tabela do usuário.
Para mais informações sobre como configurar a segurança e o controle de acesso, consulte Usar visualizações seguras parametrizadas.
As visualizações seguras parametrizadas ajudam a reduzir os riscos de segurança que ocorrem quando os usuários finais podem executar consultas não confiáveis, como consultas em linguagem natural, na tabela do banco de dados. Os riscos de segurança incluem o seguinte:
- Os usuários podem enviar ataques de injeção de comandos e tentar manipular o modelo subjacente para revelar todos os dados a que o aplicativo tem acesso.
- O modelo de linguagem natural para SQL (NL2SQL) pode gerar consultas SQL que são mais amplas em escopo do que o adequado por motivos de segurança de dados. Esse risco de segurança pode expor dados sensíveis em resposta a consultas de usuários bem-intencionadas.
Usando visualizações seguras parametrizadas, é possível definir as tabelas e colunas de que consultas não confiáveis podem extrair dados. Essas visualizações permitem restringir o intervalo de linhas disponíveis para um usuário de aplicativo individual. Essas restrições também permitem controlar os dados que os usuários do aplicativo podem visualizar por consultas em linguagem natural, independentemente de como os usuários formulam essas consultas.
Por exemplo, você pode ter um aplicativo que rastreia pedidos de clientes. Um agente de suporte pergunta no aplicativo: "Qual é o status do pedido do cliente 12345?". Nesse cenário, o aplicativo pode usar uma visualização segura parametrizada com uma variável de sessão baseada em um ID do cliente. A visualização segura parametrizada usa uma consulta que retorna apenas linhas vinculadas e acessíveis ao ID do cliente 12345.
Ao usar visualizações seguras parametrizadas, é possível restringir o intervalo de linhas disponíveis para usuários de aplicativos individuais. Esse controle garante a segurança de dados, independentemente de como os usuários formulam as consultas.
Segurança de dados
As visualizações seguras parametrizadas oferecem aos desenvolvedores de aplicativos segurança de dados e controle de acesso a linhas usando os seguintes métodos:
- As visualizações criadas usando a
WITH (security barrier)cláusula oferecem segurança no nível da linha, impedindo que funções e operadores escolhidos de forma maliciosa recebam valores de linhas até que a visualização tenha concluído o trabalho. Para mais informações sobre aWITH (security barrier)cláusula, consulte Regras e privilégios.
Os parâmetros de visualização nomeados permitem uma visualização restrita do banco de dados parametrizado por valores. Os valores são fornecidos pelo aplicativo com base na segurança no nível do aplicativo, como a autenticação do usuário final.
A aplicação de restrições adicionais em consultas que acessam visualizações parametrizadas impede ataques contra a saída das verificações nas visualizações com base nos valores de parâmetros fornecidos. Para mais informações, consulte Restrições em consultas.
Limitações
Para usar visualizações seguras parametrizadas, é necessário ativar a flag de banco de dados
cloudsql.enable_parameterized_viewspara a instância do Cloud SQL, o que exige uma reinicialização do banco de dados.A extensão
parameterized_viewsprecisa ser criada em cada banco de dados em que você pretende criar visualizações seguras parametrizadas.Se uma visualização parametrizada for referenciada em uma função definida pelo usuário que é chamada usando qualquer uma das APIs usadas em visualizações seguras parametrizadas, ocorrerá um erro. É necessário referenciar diretamente a visualização parametrizada na consulta mãe.
- Há restrições ao consultar visualizações seguras parametrizadas. Para mais informações, consulte Restrições em consultas.