Section courante

A propos

Section administrative du site

CREATE POLICY

Crée une politique
PostgreSQL

Syntaxe

CREATE POLICY name ON table_name [ AS { PERMISSIVE | RESTRICTIVE } ] [ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ] [ TO { role_name | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ] [ USING ( using_expression ) ] [ WITH CHECK ( check_expression ) ]

Paramètres

Nom Description
name Ce paramètre permet d'indiquer le nom de la stratégie à créer. Ce nom doit être distinct du nom de toute autre stratégie pour la table.
table_name Ce paramètre permet d'indiquer le nom (éventuellement qualifié par le schéma) de la table à laquelle la stratégie s'applique.
PERMISSIVE Ce paramètre permet d'indiquer que la stratégie doit être créée en tant que stratégie permissive. Toutes les politiques permissives applicables à une requête donnée seront combinées à l'aide de l'opérateur booléen «OR». En créant des politiques permissives, les administrateurs peuvent ajouter à l'ensemble d'enregistrements accessibles. Les stratégies sont permissives par défaut.
RESTRICTIVE Ce paramètre permet d'indiquer que la stratégie doit être créée en tant que stratégie restrictive. Toutes les politiques restrictives applicables à une requête donnée seront combinées à l'aide de l'opérateur booléen «AND». En créant des politiques restrictives, les administrateurs peuvent réduire l'ensemble d'enregistrements accessibles car toutes les politiques restrictives doivent être transmises pour chaque enregistrement. Notez qu'il doit y avoir au moins une politique permissive pour accorder l'accès aux enregistrements avant que des politiques restrictives puissent être utilisées de manière utile pour réduire cet accès. S'il n'existe que des politiques restrictives, aucun enregistrement ne sera accessible. Lorsqu'un mélange de stratégies permissives et restrictives est présent, un enregistrement n'est accessible que si au moins une des stratégies permissives réussit, en plus de toutes les stratégies restrictives.
command Ce paramètre permet d'indiquer la commande à laquelle la stratégie s'applique. Les options valides sont ALL, SELECT, INSERT, UPDATE et DELETE. Le ALL est la valeur par défaut.
role_name Ce paramètre permet d'indiquer le ou les rôles auxquels la stratégie doit être appliquée. La valeur par défaut est PUBLIC, appliquant la stratégie à tous les rôles.
using_expression Ce paramètre permet d'indiquer toute expression conditionnelle SQL (renvoyant un booléen). L'expression conditionnelle ne peut pas contenir de fonctions d'agrégat ou de fenêtre. Cette expression sera ajoutée aux requêtes faisant référence à la table si la sécurité au niveau des lignes est activée. Les lignes pour lesquelles l'expression renvoie true seront visibles. Toutes les lignes pour lesquelles l'expression renvoie false ou null ne seront pas visibles pour l'utilisateur (dans un SELECT) et ne seront pas disponibles pour modification (dans un UPDATE ou DELETE). Ces lignes sont supprimées en silence ; aucune erreur n'est signalée.
check_expression Ce paramètre permet d'indiquer toute expression conditionnelle SQL (renvoyant un booléen). L'expression conditionnelle ne peut pas contenir de fonctions d'agrégat ou de fenêtre. Cette expression sera utilisée dans les requêtes INSERT et UPDATE sur la table si la sécurité au niveau des lignes est activée. Seules les lignes pour lesquelles l'expression est évaluée à true seront autorisées. Une erreur sera renvoyée si l'expression est évaluée à false ou null pour l'un des enregistrements insérés ou l'un des enregistrements résultant de la mise à jour. Notez que check_expression est évalué par rapport au nouveau contenu proposé de la ligne, et non au contenu d'origine.

Description

Cette instruction permet de définir une nouvelle politique de sécurité au niveau des lignes pour une table.



Dernière mise à jour : Jeudi, le 14 Octobre 2021