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.