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 compatibilidade com SQL. Essas visualizações são compatíveis com a extração de valor 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 possam ver apenas os dados que devem acessar.
As visualizações seguras parametrizadas são uma extensão das visualizações do PostgreSQL, que permitem usar parâmetros de visualização nomeados específicos do aplicativo em definições de visualização. Essa capacidade 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 dela.Exemplo de visualização segura parametrizada
Confira a seguir um exemplo de uma 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
Os 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, principalmente 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 a aplicativos em que os usuários podem fazer 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 as colunas do banco de dados que você listou 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:
- Os usuários podem enviar ataques de injeção de comandos e tentar manipular o modelo para revelar todos os dados a que o aplicativo tem acesso.
- O modelo de linguagem natural para SQL (NL2SQL) pode gerar consultas SQL com um escopo mais amplo 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, mesmo que sejam bem-intencionadas.
Com as visualizações seguras parametrizadas, é possível definir as tabelas e colunas de que as consultas não confiáveis podem extrair dados. Com elas, é possível restringir o intervalo de linhas disponíveis para um usuário de aplicativo individual. Essas restrições também permitem controlar de perto os dados que os usuários do aplicativo podem ver com consultas em linguagem natural, independente de como eles 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 as 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, não importa 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 à linha usando os seguintes métodos:
- As visualizações criadas usando a cláusula
WITH (security barrier)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 a cláusulaWITH (security barrier), consulte Regras e privilégios.
Os parâmetros de visualização nomeada 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.
Aplicação de restrições adicionais a consultas que acessam visualizações parametrizadas para evitar 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 nas consultas.
Limitações
Para usar visualizações seguras parametrizadas, ative a flag de banco de dados
cloudsql.enable_parameterized_viewsna sua 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, um erro vai ocorrer. Você precisa fazer referência direta à visualização parametrizada na consulta principal.
- Há restrições ao consultar visualizações seguras parametrizadas. Para mais informações, consulte Restrições nas consultas.