Les vues sécurisées paramétrées dans Cloud SQL pour MySQL assurent la sécurité des données et le contrôle des accès aux lignes pour les applications tout en étant compatibles avec SQL. Ces vues sont compatibles avec l'extraction de valeurs de données (processus de récupération d'éléments de données spécifiques à partir de colonnes) et aident à se protéger contre les attaques par injection de prompt. Les vues sécurisées paramétrées permettent de s'assurer que les utilisateurs finaux ne peuvent consulter que les données auxquelles ils sont censés avoir accès.
Les vues sécurisées paramétrées sont une extension des vues MySQL, qui vous permettent d'utiliser des paramètres de vue nommés spécifiques à l'application dans les définitions de vue. Cette fonctionnalité fournit une interface qui accepte une requête et des valeurs pour les paramètres nommés. Les vues exécutent la requête avec ces valeurs, qui sont utilisées tout au long de l'exécution de cette requête.Exemple de vue sécurisée paramétrée
L'exemple suivant montre comment créer une vue sécurisée paramétrée sur une table en ajoutant une variable de session à la clauseWHERE.
-- Create a view with a parameter
CREATE VIEW v_orders AS
SELECT * FROM orders
WHERE customer_id = @local_customer_id AND year >= @earliest_year;
Vous pouvez ensuite définir le paramètre de la vue et exécuter une requête.
-- 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');
Cas d'utilisation
Les grands modèles de langage (LLM) peuvent générer des requêtes SQL qui exposent des données sensibles.
Les vues sécurisées paramétrées gèrent la sécurité des données au niveau de la base de données, en particulier les requêtes ad hoc provenant de sources non fiables, telles que celles traduites à partir du langage naturel. Par exemple, vous pouvez utiliser des vues sécurisées paramétrées pour assurer la sécurité des données pour les applications dans lesquelles les utilisateurs peuvent envoyer des requêtes en langage naturel, comme "Afficher mes commandes".
Vous pouvez utiliser des vues sécurisées paramétrées pour appliquer les exigences suivantes à la façon dont Cloud SQL pour MySQL exécute cette requête :
- La requête ne lit que les objets de base de données et les colonnes que vous avez listés dans vos vues sécurisées paramétrées de base de données.
- La requête ne lit que les lignes de base de données associées à l'utilisateur qui a envoyé la requête. Les lignes renvoyées ont une relation de données avec la ligne de table de l'utilisateur.
Pour en savoir plus sur la configuration de la sécurité et du contrôle des accès, consultez Utiliser des vues sécurisées paramétrées.
Les vues sécurisées paramétrées permettent d'atténuer les risques de sécurité qui se produisent lorsque les utilisateurs finaux sont autorisés à exécuter des requêtes non fiables, telles que des requêtes en langage naturel, sur la table de base de données. Les risques de sécurité incluent les suivants :
- Les utilisateurs peuvent envoyer des attaques par injection de prompt et tenter de manipuler le modèle sous-jacent pour révéler toutes les données auxquelles l'application a accès.
- Le modèle de conversion du langage naturel en SQL (NL2SQL) peut générer des requêtes SQL dont la portée est plus large que ce qui est approprié pour des raisons de sécurité des données. Ce risque de sécurité peut exposer des données sensibles en réponse à des requêtes utilisateur, même bien intentionnées.
À l'aide de vues sécurisées paramétrées, vous pouvez définir les tables et les colonnes à partir desquelles les requêtes non fiables peuvent extraire des données. Ces vues vous permettent de limiter la plage de lignes disponibles pour un utilisateur d'application individuel. Ces restrictions vous permettent également de contrôler étroitement les données que les utilisateurs de l'application peuvent afficher via des requêtes en langage naturel, quelle que soit la façon dont ils formulent ces requêtes.
Par exemple, vous pouvez avoir une application qui suit les commandes des clients. Un agent d'assistance demande dans l'application : "Quel est l'état de la commande du client 12345 ?" Dans ce scénario, l'application peut utiliser une vue sécurisée paramétrée avec une variable de session basée sur un ID client. La vue sécurisée paramétrée utilise une requête qui ne renvoie que les lignes liées à l'ID client 12345 et accessibles à celui-ci.
En utilisant des vues sécurisées paramétrées, vous pouvez limiter la plage de lignes disponibles pour les utilisateurs d'applications individuels. Ce contrôle garantit la sécurité des données, quelle que soit la façon dont les utilisateurs formulent leurs requêtes.
Sécurité des données
Les vues sécurisées paramétrées offrent aux développeurs d'applications la sécurité des données et le contrôle des accès aux lignes à l'aide des méthodes suivantes :
- Les vues sécurisées paramétrées MySQL offrent une sécurité au niveau des lignes en empêchant les fonctions et les opérateurs choisis de manière malveillante de transmettre des valeurs à partir de lignes jusqu'à ce que la vue ait terminé son travail.
Les paramètres de vue nommés permettent une vue restreinte de la base de données paramétrée par des valeurs. Les valeurs sont fournies par l'application en fonction de la sécurité au niveau de l'application, telle que l'authentification de l'utilisateur final.
Application de restrictions supplémentaires aux requêtes accédant à des vues paramétrées qui empêchent les attaques visant à échapper aux vérifications dans les vues en fonction des valeurs de paramètres données. Pour en savoir plus, consultez la section Restrictions sur les requêtes.
Simplifier la gestion des utilisateurs
Avec les vues sécurisées paramétrées, vous pouvez utiliser un seul rôle de base de données pour tous les utilisateurs finaux, au lieu d'utiliser des méthodes qui peuvent vous obliger à créer un utilisateur ou un rôle de base de données distinct pour chaque utilisateur final. Cela permet de simplifier la gestion des utilisateurs et des connexions pour les applications dans lesquelles chaque utilisateur final n'a besoin d'accéder qu'à ses données.
Par exemple, dans une application où un utilisateur ne doit voir que les commandes d'un client spécifique, vous pouvez définir une seule vue sécurisée paramétrée par l'identifiant de l'utilisateur final. Cette vue permet à un seul rôle de base de données (avec accès à la vue, et non à la table sous-jacente) de servir tous les utilisateurs, ce qui simplifie la gestion des utilisateurs et les connexions à la base de données.
Limites
Les vues sécurisées paramétrées ne sont compatibles qu'avec Cloud SQL pour MySQL version 8.0.43 et ultérieures. Si vous essayez de créer une vue sécurisée paramétrée dans une version antérieure de MySQL, Cloud SQL renvoie une erreur.
Vous ne pouvez pas spécifier de variables en dehors des clauses
WHERE,HAVINGouON.Vous ne pouvez pas utiliser
EXPLAINsur une vue sécurisée paramétrée.
- Il existe des restrictions lorsque vous interrogez des vues sécurisées paramétrées. Pour en savoir plus, consultez la section Restrictions sur les requêtes.