Masquage des données
La fonctionnalité de masquage des données permet, pour un utilisateur donné, de rendre invisibles certaines lignes d'une table.
La visibilité s'appliquant pour un utilisateur donné, les données devenues masquées et donc invisibles pour un utilisateur restent visibles pour le reste des utilisateurs.
Le masquage nécessite de désigner une colonne source qui servira par la suite à identifier qu'elle ligne est masquée ou non pour un utilisateur donné.
Déploiement du masquage sur une table
Le déploiement du masquage s'effectuera automatiquement si la base de données est générée par l'application pgSQLPlus. Sinon, un déploiement manuel est possible en utilisant la fonction create_mask_table
:
create_mask_table( _schema TEXT, _table TEXT, _column TEXT, _column_type_def TEXT DEFAULT NULL );
_schema
- Nom du schéma dans lequel la table sur laquelle le masquage doit être déployé est située.
_table
- Nom de la table sur laquelle le masquage doit être déployé.
_column
- Nom de la colonne source.
_column_type_def
- Indique le type de la colonne. Cette option peut être omise si la colonne source visée existe déjà en base de données.
Le déploiement du masquage crée automatiquement deux nouvelles fonctions dans le schéma parent de la table visée :syst_insert_mask_from_[Nom de la table]
et syst_delete_mask_from_[Nom de la table]
. Ces fonctions permettent de masquer ou de dé-masquer des tuples de la table pour un utilisateur donné.
Masquage de données
Le masquage s'effectue avec la fonction syst_insert_mask_from_[Nom de la table]
:
syst_insert_mask_from_[Nom de la table]( _user BIGINT, _valueDATATYPE[] );
_user
- Identifiant de l'utilisateur pour lequel les données doivent être masquées.
_value
- Ensemble de valeur identifiant les données qu'il faut masquer.
DATATYPE
correspond au même type que celui de la colonne source.
Dé-masquage de données
Le dé-masquage s'effectue avec la fonction syst_delete_mask_from_[Nom de la table]
:
syst_delete_mask_from_[Nom de la table]( _user BIGINT, _valueDATATYPE[] );
_user
- Identifiant de l'utilisateur pour lequel les données doivent être dé-masquées.
_value
- Ensemble de valeur identifiant les données qu'il faut dé-masquer.
DATATYPE
correspond au même type que celui de la colonne source.
Suppression du masquage sur une table
La suppression du masquage nécessite l'usage de la fonction create_mask_function
.
create_mask_function( _schema TEXT, _table TEXT, _column TEXT, _column_type_def TEXT DEFAULT NULL );
Les arguments sont identiques à ceux de la fonction create_mask_table
. Les fonctions syst_insert_mask_from_[Nom de la table]
et syst_delete_mask_from_[Nom de la table]
sont également supprimées.
Exemple
Supposons l'existence d'une colonne id
dans la table table_1
du schéma schema_1
. Le déploiement puis le masquage de données s'effectuera tel que :
@extschema@.create_mask_function('schema_1', 'table_1', 'id'); schema_1.syst_insert_mask_from_table_1(1, ARRAY[1, 2, 8, 9]);
Les données ayant pour colonne id
la valeur 1, 2, 8 ou 9 seront masquées, invisibles, pour l'utilisateur ayant pour id
la valeur 1.
Précédent
Rôle et utilisateursSuivant
Suppression des données