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 oferecer suporte a SQL. Essas visualizações oferecem suporte à extração de valores de dados (o processo de recuperação de partes de dados específicas 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 só possam acessar os dados que devem acessar.
As visualizações parametrizadas são uma extensão de 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 toda a execução da consulta.
Confira a seguir um exemplo de 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
As visualizações seguras parametrizadas oferecem 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 consultas em linguagem natural. Por exemplo, é possível usar visualizações seguras parametrizadas para oferecer segurança de dados para aplicativos em que os usuários podem emitir 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 colunas do banco de dados listados 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 Gerenciar a segurança de 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 o seguinte:
- Os usuários podem enviar ataques de injeção de comandos e tentar manipular o modelo subjacente 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 bem-intencionadas.
Usando visualizações seguras parametrizadas, é possível definir as tabelas e colunas de que consultas não confiáveis podem extrair dados. Essas visualizações permitem restringir o intervalo de linhas disponíveis para um usuário de aplicativo individual. Essas restrições também permitem controlar os dados que os usuários do aplicativo podem visualizar por consultas em linguagem natural, independentemente de como os usuários formulam essas consultas.
Segurança de dados
As visualizações seguras parametrizadas 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
WITH (security barrier)cláusula oferecem segurança no nível da linha, impedindo que funções e operadores escolhidos maliciosamente recebam valores de linhas até que a visualização tenha concluído o trabalho. Para mais informações sobre aWITH (security barrier)cláusula, consulte Regras e privilégios. - Os parâmetros de visualização nomeados 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.
- A aplicação de restrições adicionais em consultas que acessam visualizações parametrizadas impede 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 a consultas.
Limitações
Para usar visualizações seguras parametrizadas, é necessário ativar a flag de banco de dados
cloudsql.enable_parameterized_viewspara a 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, ocorrerá um erro. É necessário referenciar diretamente a visualização parametrizada na consulta mãe.