Visão geral das visualizações seguras parametrizadas

Esta página descreve as visualizações seguras parametrizadas no AlloyDB para PostgreSQL, que oferecem segurança de dados de aplicativos e controle de acesso a linhas usando visualizações SQL. Elas ajudam a garantir que os usuários do aplicativo possam ver apenas os dados que têm permissão para acessar.

As visualizações seguras parametrizadas são uma extensão das visualizações seguras 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. A interface executa a consulta com esses valores, que são usados durante toda a execução da consulta.

Confira a seguir um exemplo de uma 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 visualizações seguras parametrizadas usando o procedimento armazenado execute_parameterized_query ou executando a instrução EXECUTE .. WITH VIEW PARAMETERS. Para mais informações, consulte Gerenciar a segurança de dados de aplicativos usando visualizações seguras parametrizadas do AlloyDB.

Benefícios das visualizações seguras parametrizadas

As visualizações seguras parametrizadas são adequadas para gerenciar a segurança de dados no nível do banco de dados, especialmente quando você está lidando com consultas ad hoc de fontes não confiáveis, como as traduzidas da linguagem natural. Essas visualizações oferecem uma maneira flexível de implementar o controle de acesso refinado.

Por exemplo, considere um aplicativo que rastreia as bagagens despachadas dos clientes. Um cliente com o ID de usuário 12345 pergunta: "Onde está minha bolsa?" Nesse cenário, as visualizações seguras parametrizadas garantem o seguinte:

A consulta retorna apenas linhas acessíveis ao usuário que a enviou, por exemplo, linhas vinculadas ao ID do usuário 12345.

Redução dos riscos à segurança

As visualizações seguras parametrizadas ajudam a reduzir os riscos de segurança quando os usuários finais executam consultas não confiáveis, como consultas em linguagem natural, no seu banco de dados. Esses riscos incluem o seguinte:

  • Comandos maliciosos:os usuários podem tentar manipular o modelo para acessar todos os dados do aplicativo.
  • Consultas SQL de escopo amplo:os modelos de linguagem grandes (LLMs) podem gerar consultas SQL que expõem dados sensíveis, mesmo de consultas de usuários bem-intencionadas.

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.

Gerenciamento de acesso aos dados

As visualizações seguras parametrizadas resolvem desafios comuns no gerenciamento do acesso a dados para um grande número de usuários em crescimento.

  • Gerenciamento simplificado de usuários:com visualizações seguras parametrizadas, é possível usar uma única função de banco de dados para atender a todos os usuários finais, em vez de usar métodos que podem exigir a criação de um usuário ou função de banco de dados separado para cada usuário final. As visualizações seguras parametrizadas ajudam a simplificar o gerenciamento de usuários e conexões para aplicativos em que cada usuário final precisa de acesso apenas aos próprios dados.

    Por exemplo, em um aplicativo de companhia aérea em que os clientes só podem ver as próprias reservas, é possível definir uma única visualização segura parametrizada que é parametrizada pelo identificador do usuário final. Essa visualização permite que uma única função de banco de dados (com acesso à visualização, não à tabela subjacente) atenda a todos os usuários, o que simplifica o gerenciamento de usuários e as conexões de banco de dados.

  • Aplicação de segurança simplificada:as visualizações seguras parametrizadas incorporam controles de acesso. Quando uma visualização é consultada, os parâmetros de segurança definidos são aplicados de forma consistente, independente do usuário que acessa a visualização. Essa abordagem contrasta com situações em que as políticas de segurança das tabelas de base podem não ser aplicadas automaticamente às visualizações sem configuração extra.

Para mais informações sobre os mecanismos de segurança atuais no PostgreSQL, como políticas de segurança no nível da linha (RLS), consulte Políticas de segurança no nível da linha.

Mecanismo de segurança

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 com a opção WITH (security barrier) oferecem segurança no nível da linha, impedindo que funções e operadores escolhidos de forma maliciosa recebam valores das linhas até que a visualização tenha concluído 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 autenticação do usuário final.
  • A aplicação de restrições extras em consultas que acessam visualizações parametrizadas é útil para aplicativos que executam consultas não confiáveis de usuários finais, como as geradas por uma geração de linguagem natural para SQL com IA. Isso evita que o envelope de segurança fornecido por visualizações seguras parametrizadas seja violado e gerencia o uso de recursos. Para mais informações, consulte Restrições aplicadas às consultas.

Limitações

  • É 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 instâncias de pool de leitura e réplicas entre regiões. No entanto, a configuração da flag parameterized_views.enabled não é aplicada automaticamente e precisa ser definida manualmente em cada instância. Para mais informações, consulte Antes de começar.

    Não é possível consultar visualizações parametrizadas em uma instância de pool de leitura ou em uma réplica entre regiões antes de ativar a flag parameterized_views.enabled em cada instância.

A seguir