Aller au contenu

Sécurité au niveau des lignes (RLS)

Une règle de sécurité au niveau des lignes (RLS) limite les lignes d’un jeu de données que voient les comptes qu’elle vise. Elle ajoute d’elle-même une clause SQL aux requêtes lancées sur ce jeu de données : un graphique ou un tableau de bord construit dessus n’affiche plus que les lignes autorisées, quel que soit le filtre choisi par le lecteur.

Les deux restreignent l’accès aux données, mais pas au même endroit ni pour les mêmes comptes :

Règle RLS Rôle d’accès aux données
Ce qu’elle limite Les lignes d’un jeu de données. Les schémas sur lesquels un compte conçoit des jeux de données, des graphiques et des tableaux de bord.
Qui elle concerne Tous les comptes ou groupes qu’elle vise, y compris en Consultation (fn_viewer). Les comptes Conception (fn_designer) seulement.
Où elle se gère Dans l’instance, menu Paramètres. Dans Hyperset Manager, Comptes, Habilitations.
Qui la gère Un compte Administration, pour tous les jeux de données de l’instance. L’administrateur Hyperset.

Les rôles d’accès aux données sont décrits dans Habilitations.

Le formulaire Ajouter une règle : les champs Nom de la règle, Type de filtre sur Régulier, Jeux de données, Rôles, Clé de regroupement, Clause et Description, puis les boutons Annuler et Ajouter

  1. Ouvrir la liste des règles. Menu Paramètres, section Sécurité, puis Sécurité au niveau des lignes (Row Level Security dans l’interface en anglais), puis le bouton d’ajout.
  2. Nommer la règle. Nom de la règle est obligatoire ; Description dit à quoi elle sert, pour qui la relira.
  3. Choisir le type de filtre (Type de filtre). Régulier ou Base : voir Choisir entre Régulier et Base.
  4. Choisir les jeux de données (Jeux de données) sur lesquels la règle porte. Une règle peut en viser plusieurs.
  5. Choisir les utilisateurs ou groupes de partage visés (Rôles) : le groupe de partage d’une équipe (rg_<Nom>), ou un utilisateur de l’instance par son groupe personnel (rg_user_<login>). Selon le type de filtre, ce champ désigne les comptes restreints ou les comptes exemptés.
  6. Donner une Clé de regroupement, si besoin. Elle sert à combiner plusieurs règles : voir Combiner plusieurs règles.
  7. Écrire la clause (Clause). C’est la condition que la ligne doit remplir, écrite comme ce qui suit un WHERE en SQL, par exemple region = 'Occitanie'. Ce champ est obligatoire.
  8. Enregistrer.
Régulier Base
À qui elle s’applique Seulement aux utilisateurs et groupes de partage de l’instance listés dans Rôles. À tout le monde, sauf aux utilisateurs et groupes de partage de l’instance listés dans Rôles.
Ce que dit le champ Rôles Qui est restreint. Qui est exempté.
Si le champ Rôles est vide La règle ne s’applique à personne. La règle s’applique à tout le monde.
Exemple Limiter une équipe aux lignes de son territoire. Masquer par défaut des lignes (brouillons, données sensibles), sauf pour quelques utilisateurs ou groupes de partage.

Quand plusieurs règles visent le même jeu de données et le même compte, elles se combinent selon leur clé de regroupement :

  • même clé de regroupement : les règles s’additionnent (OU). La ligne s’affiche si elle remplit l’une des clauses ;
  • clés de groupe différentes : les groupes se cumulent (ET). La ligne doit remplir une clause de chaque groupe ;
  • sans clé de regroupement : chaque règle forme un groupe à elle seule, et se cumule donc (ET) avec les autres.

Une règle de type Base peut aussi servir de règle par défaut d’un groupe : elle dit ce que voient les comptes auxquels aucune règle de type Régulier de ce groupe ne s’applique.

Ces règles de combinaison sont celles d’Apache Superset, décrites dans l’aide du champ Clé de regroupement.

Pour ouvrir plusieurs communes à une même équipe avec plusieurs règles de type Régulier, leur donner la même clé de regroupement : les clauses s’additionnent. Sans clé commune, elles se cumuleraient, et une ligne ne pouvant appartenir à deux communes à la fois, aucune ne s’afficherait.

Exemple de règle de type Base : tout le monde ne voit que les lignes où statut = 'publié', sauf le groupe de partage rg_Gestionnaires, listé dans Rôles, qui voit aussi les brouillons.

Voir aussi : Groupes de partage.