Visão geral das visualizações seguras parametrizadas

Este documento descreve as visualizações seguras parametrizadas no AlloyDB para PostgreSQL, que oferecem segurança de dados do aplicativo e controle de acesso de linha, além de oferecer suporte ao SQL. Essas visualizações oferecem suporte à extração de valor de dados, que é o processo de extraçã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 acessar apenas os dados que eles têm permissão para acessar.

As visualizações parametrizadas são uma extensão das 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 a execução dela.

Confira a seguir um exemplo de visualização segura parametrizada:

CREATE VIEW secure_checked_items WITH (security_barrier) AS
       SELECT bag_id, timestamp, location
       FROM checked_items t
       WHERE customer_id = $@app_end_userid;

É possível consultar as visualizações usando o procedimento armazenado execute_parameterized_query ou executando a instrução EXECUTE .. WITH VIEW PARAMETERS.

Casos de uso

As visualizações seguras parametrizadas são adequadas para a administração da segurança de dados no nível do banco de dados contra consultas ad hoc de origens não confiáveis, como consultas traduzidas de consultas em linguagem natural. Por exemplo, considere um aplicativo cujo banco de dados rastreia a bagagem despachada de clientes que viajam. Esses clientes podem emitir consultas para o aplicativo. Por exemplo, um cliente com o ID de usuário 12345 pode inserir uma consulta no aplicativo, como "Onde está minha bolsa?".

É possível usar visualizações seguras parametrizadas para aplicar os seguintes requisitos à execução dessa consulta pelo AlloyDB:

  • A consulta só pode ler os objetos e as colunas do banco de dados que você listou nas visualizações seguras parametrizadas do banco de dados.
  • A consulta só pode ler 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 cujo valor da coluna de ID é 12345.

Para mais informações sobre como configurar a segurança e o controle de acesso, consulte Proteger e controlar o acesso a dados do aplicativo usando visualizações seguras parametrizadas.

As visualizações seguras parametrizadas ajudam a reduzir os riscos de segurança que ocorrem quando os usuários finais têm permissão para executar consultas não confiáveis, como consultas de linguagem natural, na tabela do banco de dados. Os riscos de segurança incluem:

  • Os usuários podem enviar ataques de injeção de comando e tentar manipular o modelo subjacente para revelar todos os dados a que o aplicativo tem acesso.
  • O LLM pode gerar consultas SQL com 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 bem-intencionadas.

Usando visualizações seguras parametrizadas, é possível definir as tabelas e colunas de onde as consultas não confiáveis podem extrair dados. Essas visualizações permitem restringir o intervalo de linhas disponíveis para um usuário individual do aplicativo. Essas restrições também permitem que você controle rigorosamente os dados que os usuários do aplicativo podem acessar por meio de consultas em linguagem natural, independentemente de como os usuários formulam essas consultas.

Mecanismo de segurança

As visualizações seguras parametrizadas oferecem aos desenvolvedores de aplicativos segurança de dados e controle de acesso de linha usando os seguintes métodos:

  • As visualizações criadas usando a opção WITH (security barrier) oferecem segurança no nível da linha, impedindo que funções e operadores escolhidos maliciosamente sejam transmitidos valores de linhas até que a visualização tenha feito o trabalho. Para mais informações sobre a cláusula WITH (security barrier), consulte Regras e privilégios.
  • A parametrização usando parâmetros de visualização nomeados permite uma visualização restrita do banco de dados parametrizado por valores fornecidos pelo aplicativo com base na segurança no nível do aplicativo, como a autenticação do usuário final. Para mais informações, consulte
  • Aplicação de restrições adicionais em consultas que acessam visualizações parametrizadas, o que impede ataques contra a fuga das verificações nas visualizações com base nos valores de parâmetro fornecidos. Para mais informações, consulte Restrições aplicadas a consultas.

Limitações

  • 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. É necessário fazer referência direta à visualização parametrizada na consulta mãe.

  • É necessário ativar a flag de visualização parametrizada separadamente em cada instância do AlloyDB. Os objetos de visualização parametrizados criados na instância principal são propagados para réplicas somente leitura e entre regiões. No entanto, a configuração da flag parameterized_views.enabled não é replicada automaticamente e precisa ser replicada manualmente em cada instância. Para mais informações, consulte Antes de começar. Não é possível consultar visualizações parametrizadas na réplica antes de ativar a flag parameterized_views.enabled em cada instância de réplica. Essa limitação não se aplica à instância de espera.

A seguir