Visão geral das visualizações seguras parametrizadas no Cloud SQL

As visualizações seguras parametrizadas no Cloud SQL para MySQL 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 seguras parametrizadas são uma extensão das visualizações do MySQL, 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.

Exemplo de visualização segura parametrizada

O exemplo a seguir mostra como criar uma visualização segura parametrizada em uma tabela adicionando uma variável de sessão à cláusula WHERE.

-- Create a view with a parameter

CREATE VIEW v_orders AS
SELECT * FROM orders
WHERE customer_id = @local_customer_id AND year >= @earliest_year;

Em seguida, é possível definir o parâmetro para a visualização e executar uma consulta.

-- Set the parameter and query

SELECT /*+ SET_VIEW_VARS(local_customer_id=5, earliest_year=2021) */ * FROM v_orders;

-- Or query through a stored procedure

CALL mysql.execute_parameterized_query(
    'SELECT * FROM db.v_orders',
    'local_customer_id = 5, earliest_year = 2021');

Casos de uso

Modelos de linguagem grandes (LLMs) podem gerar consultas SQL que expõem dados sensíveis.

As visualizações seguras parametrizadas gerenciam a segurança de dados no nível do banco de dados, especialmente consultas ad hoc de fontes não confiáveis, como as traduzidas de linguagem natural. Por exemplo, é possível usar visualizações seguras parametrizadas para fornecer 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 à forma como o Cloud SQL para MySQL 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 Usar 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 que são mais amplas do que o apropriado 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 as 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 meio de consultas em linguagem natural, independentemente de como os usuários formulam essas consultas.

Por exemplo, você pode ter um aplicativo que rastreia pedidos de clientes. Um agente de suporte pergunta no aplicativo: "Qual é o status do pedido do cliente 12345?". Nesse cenário, o aplicativo pode usar uma visualização segura parametrizada com uma variável de sessão baseada em um ID do cliente. A visualização segura parametrizada usa uma consulta que retorna apenas linhas vinculadas e acessíveis ao ID do cliente 12345.

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.

Segurança de dados

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 seguras parametrizadas do MySQL fornecem segurança no nível da linha, impedindo que funções e operadores escolhidos de forma maliciosa sejam transmitidos valores de linhas até que a visualização tenha concluído o trabalho.
  • 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.

  • Aplicação de restrições adicionais em consultas que acessam visualizações parametrizadas que impedem ataques contra a saída das verificações nas visualizações com base nos valores de parâmetro fornecidos. Para mais informações, consulte Restrições em consultas.

Simplificar o gerenciamento de usuários

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. Isso ajuda 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 em que um usuário só pode ver os pedidos de um cliente específico, é possível definir uma única visualização segura parametrizada que seja 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.

Limitações

  • As visualizações seguras parametrizadas são compatíveis apenas com o Cloud SQL para MySQL versão 8.0.43 e mais recentes. Se você tentar criar uma visualização segura parametrizada em uma versão anterior do MySQL, o Cloud SQL vai retornar um erro.

  • Não é possível especificar variáveis fora das cláusulas WHERE, HAVING ou ON.

  • Não é possível usar EXPLAIN em uma visualização segura parametrizada.

  • Há restrições ao consultar visualizações seguras parametrizadas. Para mais informações, consulte Restrições em consultas.

A seguir