Visão geral das visualizações seguras parametrizadas

Selecione uma versão da documentação:

Esta página descreve as visualizações seguras parametrizadas no AlloyDB Omni, que oferecem segurança de dados do aplicativo e controle de acesso a linhas usando visualizações SQL, além de ajudar a garantir que os usuários do aplicativo só possam visualizar 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 nas definições de visualização. Esse recurso 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 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 do aplicativo usando visualizações seguras parametrizadas do AlloyDB Omni.

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 a bagagem despachada dos clientes. Um cliente com o ID de usuário 12345 pergunta: "Onde está minha mala?" Nesse cenário, as visualizações seguras parametrizadas garantem o seguinte:

A consulta só retorna linhas acessíveis ao usuário que a enviou. Por exemplo, linhas vinculadas ao ID de 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 banco de dados. Esses riscos incluem o seguinte:

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

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.

Gerenciamento de acesso aos dados

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

  • Gerenciamento de usuários simplificado: com visualizações seguras parametrizadas, é possível usar um único papel 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 papel 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 pelo identificador do usuário final. Essa visualização permite que um único papel 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 inerentemente incorporam controles de acesso. Quando uma visualização é consultada, os parâmetros de segurança definidos são aplicados de maneira consistente, independentemente do usuário que acessa a visualização. Essa abordagem contrasta com situações em que as políticas de segurança subjacentes em tabelas de base podem não ser aplicadas automaticamente a visualizações sem configuração extra.

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

Mecanismo de segurança

As visualizações seguras parametrizadas adicionam uma camada extra de segurança controlando como as consultas acessam os dados subjacentes. Elas oferecem segurança de dados e controle de acesso a linhas para desenvolvedores de aplicativos usando os seguintes métodos:

  • As visualizações criadas usando a opção WITH (security barrier) fornecem segurança no nível da linha, impedindo que funções e operadores escolhidos de maneira maliciosa recebam valores de 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 parametrizada por valores 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 a 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 de IA. Isso impede que o envelope de segurança fornecido por visualizações seguras parametrizadas seja ignorado e que o uso de recursos seja gerenciado. Para mais informações, consulte Restrições aplicadas a consultas.

Limitações

  • É necessário ativar a flag de visualização parametrizada separadamente em cada instância do AlloyDB Omni. Os objetos de visualização parametrizada 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