Este documento descreve as visualizações seguras parametrizadas no AlloyDB para PostgreSQL, que oferecem segurança de dados de aplicativos e controle de acesso a linhas, além de compatibilidade com SQL. Essas visualizações oferecem suporte à extração de valores de dados, o processo de recuperação de dados específicos 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 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.
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 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 administração de segurança de dados no nível do banco de dados contra consultas ad hoc de fontes não confiáveis, como consultas traduzidas de linguagem natural. Por exemplo, considere um aplicativo cujo banco de dados rastreia a bagagem despachada de clientes viajantes. Esses clientes podem emitir consultas para o aplicativo. Por exemplo, um cliente com o ID de usuário do aplicativo 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 aos dados de aplicativos 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 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 LLM 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 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 essas visualizações, é possível restringir o intervalo de linhas disponíveis para um usuário de aplicativo específico. 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.
Mecanismo de segurança
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 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 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. - 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.
- 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 aplicadas às 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. Você precisa referenciar diretamente a visualização parametrizada na consulta principal.
É necessário ativar a flag de visualização parametrizada separadamente em cada instância do AlloyDB. Objetos de visualização parametrizada 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 flagparameterized_views.enabled
em cada instância de réplica. Essa limitação não se aplica à instância de espera.
A seguir
- Gerenciar segurança de dados do aplicativo usando visualizações seguras parametrizadas.
- Proteja e controle o acesso aos dados do aplicativo usando visualizações seguras parametrizadas.