Ce document décrit les vues sécurisées paramétrées dans AlloyDB pour PostgreSQL, qui offrent la sécurité des données d'application et le contrôle des accès aux lignes 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 code. 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 secure_checked_items WITH (security_barrier) AS
SELECT bag_id, timestamp, location
FROM checked_items t
WHERE customer_id = $@app_end_userid;
Vous pouvez interroger les vues à l'aide de la procédure stockée execute_parameterized_query
ou en exécutant l'instruction EXECUTE .. WITH VIEW PARAMETERS
.
Cas d'utilisation
Les vues sécurisées paramétrées sont bien adaptées à l'administration de 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. Prenons l'exemple d'une application dont la base de données suit les bagages enregistrés des clients en voyage. Ces clients peuvent envoyer des requêtes à l'application. Par exemple, un client dont l'ID utilisateur de l'application est 12345 peut saisir une requête dans l'application, comme "Où est mon sac ?".
Vous pouvez utiliser des vues sécurisées paramétrées pour appliquer les exigences suivantes à la façon dont AlloyDB exécute cette requête :
- La requête ne peut lire 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 peut lire 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 dont la valeur de la colonne d'ID est
12345
.
Pour en savoir plus sur la configuration de la sécurité et du contrôle des accès, consultez Sécuriser et contrôler l'accès aux 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 requêtes et tenter de manipuler le modèle sous-jacent pour révéler toutes les données auxquelles l'application a accès.
- Le LLM 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.
Mécanisme de sécurité
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 créées à l'aide de l'option
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 transmettre des valeurs à partir des lignes tant que la vue n'a pas terminé son travail. Pour en savoir plus sur la clauseWITH (security barrier)
, consultez Règles et droits d'accès. - La paramétrisation à l'aide de paramètres de vue nommés permet d'obtenir une vue restreinte de la base de données, paramétrée par des valeurs 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 appliquées aux requêtes.
Limites
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.
Vous devez activer l'indicateur de vue paramétrée séparément sur chaque instance d'AlloyDB. Les objets de vue paramétrée créés sur l'instance principale sont propagés aux répliques en lecture seule et aux répliques multirégionales. Toutefois, le paramètre de l'indicateur
parameterized_views.enabled
n'est pas répliqué automatiquement et doit l'être manuellement sur chaque instance. Pour en savoir plus, consultez Avant de commencer. Vous ne pouvez pas interroger les vues paramétrées sur le réplica avant d'activer l'indicateurparameterized_views.enabled
sur chaque instance de réplica. Cette limitation ne s'applique pas à l'instance de secours.
Étapes suivantes
- Gérez la sécurité des données des applications à l'aide de vues sécurisées paramétrées.
- Sécurisez et contrôlez l'accès aux données d'application à l'aide de vues sécurisées paramétrées.