Les vues sécurisées paramétrées dans Cloud SQL pour MySQL offrent une sécurité des données et 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 permettent de se protéger contre les attaques par injection d'invite. 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 pour 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 des applications dans lesquelles les utilisateurs peuvent émettre des requêtes en langage naturel, comme "Affiche 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 et les colonnes de la base de données que vous avez listés dans vos vues sécurisées paramétrées de la base de données.
- La requête ne lit que les lignes de la base de données associées à l'utilisateur qui l'a envoyée. Les lignes renvoyées ont une relation de données avec la ligne du tableau 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, comme des requêtes en langage naturel, sur la table de base de données. Voici quelques exemples de risques de sécurité :
- Les utilisateurs peuvent envoyer des attaques par injection de requête 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 NL2SQL (Natural Language to SQL) 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.
Les vues sécurisées paramétrées vous permettent de 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 spécifique. Ces restrictions vous permettent également de contrôler précisément les données que les utilisateurs de l'application peuvent consulter à l'aide de 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 associé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 assure la sécurité des données, quelle que soit la formulation des requêtes des utilisateurs.
Sécurité des données
Les vues sécurisées paramétrées offrent aux développeurs d'applications une sécurité des données et un 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 la transmission de valeurs à partir de lignes à des fonctions et opérateurs choisis de manière malveillante jusqu'à ce que la vue ait terminé son travail.
Les paramètres de vue nommée permettent d'afficher 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, comme l'authentification de l'utilisateur final.
Application de restrictions supplémentaires aux requêtes accédant aux vues paramétrées, ce qui empêche les attaques visant à échapper aux vérifications dans les vues en fonction des valeurs de paramètres données. Pour en savoir plus, consultez Restrictions concernant 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 où 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, mais pas à 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 Restrictions concernant les requêtes.