Ce tutoriel explique comment utiliser des vues sécurisées paramétrées dans AlloyDB pour PostgreSQL afin de restreindre l'accès des utilisateurs aux vues paramétrées à l'aide d'AlloyDB Studio ou de psql.
Des exemples sont inclus pour illustrer les capacités des vues sécurisées paramétrées. Ces exemples sont fournis à des fins de démonstration uniquement.
Prérequis
Activer la facturation et les API requises
Dans la console Google Cloud , sélectionnez un projet.
Assurez-vous que la facturation est activée pour votre projet Google Cloud .
Activez les API Cloud nécessaires pour créer une instance AlloyDB pour PostgreSQL et vous y connecter.
- À l'étape Confirmer le projet, cliquez sur Suivant pour confirmer le nom du projet que vous allez modifier.
À l'étape Activer les API, cliquez sur Activer pour activer les éléments suivants :
- API AlloyDB
Créer une base de données et s'y connecter
Préparer votre environnement
Pour préparer l'exécution de requêtes sur une vue sécurisée paramétrée, vous devez d'abord configurer les vues paramétrées, la base de données et les rôles de base de données, l'extension parameterized_view
et le schéma d'application.
Activer l'extension requise
Activez l'option de base de données parameterized_views.enabled
, qui charge les bibliothèques d'extension requises. Pour en savoir plus, consultez Configurer les options de base de données d'une instance.
Configurer la base de données
- Créez une base de données nommée
database
pour les données d'application et les vues paramétrées. Pour en savoir plus, consultez Créer une base de données.
Créer des rôles de base de données, l'extension et le schéma d'application
À l'aide d'AlloyDB Studio ou de psql, connectez-vous à la base de données en tant qu'utilisateur
postgres
ou en tant qu'utilisateur disposant des droits super-utilisateur AlloyDB.psql database -U postgres
Pour en savoir plus, consultez À propos de la gestion des utilisateurs de base de données dans AlloyDB.
Créez l'extension
parameterized_views
dans la base de données.-- Requires parameterized_views.enabled set to true CREATE EXTENSION parameterized_views;
Lorsque l'extension est créée, le système crée également un schéma nommé
parameterized_views
afin que les API soient contenues dans l'espace de noms de ce schéma et qu'elles n'entrent pas en conflit avec les API existantes.Créez le rôle d'administrateur AlloyDB, qui possède et gère la base de données.
CREATE ROLE admin_user WITH LOGIN PASSWORD '...'; GRANT ALL PRIVILEGES ON DATABASE database TO admin_user;
Pour en savoir plus, consultez les sections sur
CREATE USER
Créez un rôle de base de données pour exécuter des requêtes sur des vues sécurisées paramétrées. Il s'agit d'un rôle AlloyDB que l'application utilise pour se connecter et se connecter à la base de données afin d'exécuter des requêtes avec un accès limité à l'ensemble minimal requis de fonctions ou d'objets publics.
CREATE ROLE psv_user WITH LOGIN PASSWORD '...';
Pour en savoir plus, consultez la page
CREATE USER
.Connectez-vous en tant qu'utilisateur administratif.
SET role TO admin_user;
Créez le schéma contenant les tables.
CREATE SCHEMA schema;
Créez les tables et insérez les données.
CREATE TABLE schema.checked_items(bag_id INT,timestamp TIMESTAMP, loc_code CHAR(3), scan_type CHAR(1), location TEXT, customer_id INT); INSERT INTO schema.checked_items (bag_id, timestamp, loc_code, scan_type, location, customer_id) VALUES (101, '2023-10-26 10:00:00', 'ABC', 'I', 'Warehouse A', 123), (102, '2023-10-26 10:15:30', 'DEF', 'O', 'Loading Dock B', 456), (103, '2023-10-26 10:30:45', 'GHI', 'I', 'Conveyor Belt 1', 789), (104, '2023-10-26 11:00:00', 'JKL', 'O', 'Shipping Area C', 101), (105, '2023-10-26 11:45:15', 'MNO', 'I', 'Sorting Station D', 202), (106, '2023-10-26 12:00:00', 'PQR', 'O', 'Truck Bay E', 303);
Créer des vues paramétrées sécurisées et configurer les droits d'accès
Pour créer des vues paramétrées sécurisées et configurer les droits d'accès appropriés pour la table de base et les vues, procédez comme suit :
À l'aide d'AlloyDB Studio ou de psql, connectez-vous à la base de données en tant que
admin_user
.psql database -U admin_user
Pour fournir un accès limité à la vue, créez une vue sécurisée paramétrée :
CREATE VIEW schema.secure_checked_items WITH (security_barrier) AS SELECT bag_id, timestamp, location FROM schema.checked_items t WHERE customer_id = $@app_end_userid;
Accorder l'accès à la vue.
GRANT SELECT ON schema.secure_checked_items TO psv_user;
Pour accéder à la vue, accordez l'accès au schéma.
GRANT USAGE ON SCHEMA schema TO psv_user;
Révoquez l'accès direct à la table de base.
REVOKE ALL PRIVILEGES ON schema.checked_items FROM psv_user;
Vérifier la sécurité des données
Pour vérifier que les vues sécurisées paramétrées limitent l'accès aux vues désignées, exécutez les commandes suivantes en tant que psv_user
. Il s'agit d'un rôle de base de données AlloyDB que l'application utilise pour se connecter et se connecter à la base de données afin d'exécuter des requêtes.
Connectez-vous en tant qu'utilisateur de vues sécurisées paramétrées.
psql database -U psv_user
Vérifiez que la table de base n'est pas accessible.
SELECT * FROM schema.checked_items; ERROR: permission denied for table checked_items
Accédez à la vue sécurisée paramétrée à l'aide de la fonction
execute_parameterized_query
:SELECT * FROM parameterized_views.execute_parameterized_query( query => 'SELECT * from schema.secure_checked_items', param_names => ARRAY ['app_end_userid'], param_values => ARRAY ['303'] );
Pour améliorer la sécurité des requêtes générées en langage naturel, intégrez vos vues sécurisées paramétrées à l'aide du langage naturel AlloyDB AI.