Vues sécurisées paramétrées dans Cloud SQL

Les vues sécurisées paramétrées dans Cloud SQL pour PostgreSQL offrent une sécurité des données et contrôle des accès aux lignes pour les applications tout en prenant en charge 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 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 paramétrées sont une extension des vues PostgreSQL, 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.

Voici un exemple de vue sécurisée paramétrée :

CREATE VIEW user_specific_items WITH (security_barrier) AS
       SELECT item_id, item_name, description
       FROM items t
       WHERE owner_id = $@app_user_id;

Vous pouvez interroger les vues à l'aide de la fonction execute_parameterized_query ou en exécutant l'instruction EXECUTE .. WITH VIEW PARAMETERS.

Cas d'utilisation

Les vues sécurisées paramétrées assurent la sécurité des données au niveau de la base de données contre les requêtes ad hoc provenant de sources non fiables, telles que les requêtes traduites à partir de requêtes en 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 PostgreSQL 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 Gérer la sécurité des données d'application à l'aide de 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 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 NL2SQL (Natural Language to SQL) peut générer des requêtes SQL dont le champ d'application 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.

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 créées à l'aide de la clause WITH (security barrier) offrent une sécurité au niveau des lignes en empêchant les fonctions et opérateurs choisis de manière malveillante de recevoir des valeurs provenant des lignes tant que la vue n'a pas terminé son travail. Pour en savoir plus sur la clause WITH (security barrier), consultez Règles et droits d'accès.
  • Les paramètres de vue nommée permettent d'obtenir une vue restreinte de la base de données paramétrée par des valeurs. Ces 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 à des 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 appliquées aux requêtes.

Limites

  • Pour utiliser des vues sécurisées paramétrées, vous devez activer l'option de base de données cloudsql.enable_parameterized_views pour votre instance Cloud SQL, ce qui nécessite de redémarrer la base de données.

  • L'extension parameterized_views doit être créée dans chaque base de données dans laquelle vous prévoyez de créer des vues sécurisées paramétrées.

  • Une erreur se produit si une vue paramétrée est référencée dans une fonction définie par l'utilisateur appelée à l'aide de l'une des API utilisées dans les vues sécurisées paramétrées. Vous devez référencer directement la vue paramétrée dans la requête parente.

Étapes suivantes