Fonctionnel

Module Sécurité et droits d’accès

Provoly intègre dans ses modules une gestion de la sécurité permettant de limiter les accès aux fonctionnalités et aux données de l’application.

Cette sécurité se base sur plusieurs principes :

  • Une gestion d’accès par rôles (RBAC - Role-based access control) permettant de limiter l’accès aux fonctionnalités (API et écrans)

  • Une gestion d’accès par groupe permettant de limiter la visibilité des jeux de donneés et des tableaux de bord paramétrés dans la solution

  • Une gestion d’accès par attribut (ABAC - Attribute-based access control) permettant une limitation fine de l’accès aux donnnées intégrées dans la solution (objets ou attributs d’un objet)

Identification et authentification

L’identification et l’authentification sont gérés par un gestionnaire d’identité laissé à la discrétion du client de Provoly.

Afin que la sécurité soit garantie, il faut néanmoins prendre en compte les points suivants :

  • Les rôles prévus pour les accès aux services doivent être implémentés dans le gestionnaire d’identité.

  • L’application utilisant la bibliothèque front a la main sur le fichier de paramétrage permettant de limiter les accès aux pages et actions en fonction des rôles.

  • Les rôles et groupes des utilisateurs doivent être transmis dans le token founi par le gestionnaire d’identité.

Définition des rôles pour les principales fonctionnalités

La possibilité d’utiliser les fonctionnalités proposées par Provoly sont soumises à l’association correcte des rôles aux utilisateurs concernés.

  • Gestion des données :

    • S’adresse aux utilisateurs dont le rôle est d’administrer les données gérées par la plateforme

    • Ce périmètre couvre :

      • La gestion des modèles de données

      • La gestion des jeux de données

      • L’intégration de données dans la plateforme.

    • Les rôles nécessaire pour ce périmètre sont : class_read, class_write, dataset_read, dataset_write, datasource_read, field_read, field_write, item_write, link_read, link_write, metadata_item_ref_read,metadata_item_ref_write,

  • Gestion de l’accès aux données :

    • S’adresse aux utilisateurs dont le rôle est d’administrer la sécurité des données gérées par la plateforme.

    • Ce périmètre couvre :

      • La gestion des profils utilisateurs

      • La gestion des données de contexte d’exécution de l’application

      • La gestion des règles d’accès aux données

    • Les rôles nécessaires pour ce périmètre sont : class_read, data_access_read, data_access_write, field_read, metadata_context_read, metadata_context_write, metadata_item_ref_read, metadata_user_read, metadata_user_write, metadata_user_ref_read, metadata_user_ref_write, user_read

  • Gestion de la restitution visuelle des données :

    • S’adresse aux utilisateurs dont le rôle est de paramétrer les visuels des données gérées par la plateforme.

    • Ce périmètre couvre :

      • La gestion des restitutions

      • La gestion des tableaux de bords

    • Les rôles nécessaires pour ce périmètre sont : dashboard_read, dashboard_write, dataset_read, datasource_read, widget_catalog_read, widget_catalog_write

En complément, pour les utilisateurs ne devant accéder qu’à la visulisation des tableaux de bord et restitutions paramétrés sur la plateforme, les rôles à paramétrer sont les suivants : dashboard_read, dataset_read, dataource_read, widget_catalog_read

Les tableaux ci-dessous récapitulent les rôles à assigner en fonction des accès souhaités aux différents modules de l’application.

  • Visualisation des données

Tableaux de bord Restitutions

Rôle

Consultation

Création / Modification / suppression / partage

Consultation

Création / Modification / suppression / partage

dashboard_read

X

X

dashboard_write

X

dataset_read

X

X

datasource_read

X

X

X

X

widget_catalog_read

X

X

X

widget_catalog_write

X

  • Gestion des données

Jeux de données Données

Rôle

Consultation

Création / Modification / Suppression / partage

Création / Modification / Suppression de version

Consultation

Recherche

Création / Modification / Suppression / Import

class_read

X

dataset_read

X

X

X

dataset_write

X

datasource_read

X

X

X

X

item_write

X

X

search

X

  • Gestion des modèles de données

Modèle métiers Types métiers Types relations Liens entre attributs Métadonnées et règles métadonnées

Rôle

Consultation

Création / Modification / Suppression

Consultation

Création / Modification / Suppression

Consultation

Création / Modification / Suppression

Consultation

Création / Modification / Suppression

Consultation

Création / Modification / Suppression

class_read

X

X

X

X

X

X

X

X

class_write

X

X

field_read

X

X

X

X

field_write

X

link_read

X

X

link_write

X

metadata_item_ref_read

X

X

metadata_item_ref_write

X

  • Gestion des accès aux données

Données de profil utilisateur (référentiel) Gestion des utilisateurs Gestion des données de contexte Gestion des ABAC

Rôle

Consultation

Création / Modification / Suppression

Consultation

Création / Modification / Suppression

Consultation

Création / Modification / Suppression

Consultation

Création / Modification / Suppression

class_read

X

data_access_read

X

X

data_access_write

X

field_read

X

metadata_context_read

X

X

X

metadata_context_write

X

metadata_item_ref_read

X

metadata_user_read

X

X

metadata_user_write

X

metadata_user_ref_read

X

X

X

X

metadata_user_ref_write

X

user_read

X

X

Accès anonyme

Il est possible de prévoir un accès non authentifié à Provoly.

Pour se faire, un utilisateur virtuel doit être paramétré au déploiement de l’application en précisant les rôles de cet utilisateur en fonction des fonctionnalités que le client souhaite lui ouvrir.

Gérer les utilisateurs et leur profils

Provoly permet au client de gérer les informations métier d’un utilisateur.

Ces informations permettent de définir un profil à l’utilisateur et peuvent être utilisées pour gérer les accès aux données.

Attention : la gestion de l’affectation de rôles et des groupes est à faire dans le gestionnaire d’identité lié à l’application.

Afin de permettre cette administration, Provoly met à disposition de l’utilisateur :

  • L’administration des données de profil utilisateur qui permet de déclarer les inforamtions de profils que l’on souhaite associer à un utilisateur

  • Une administration des utilisateurs qui permet de valoriser les données de profil utilisateur pour chaque utilisateur s’étant connecté à la plateforme.

Gestion du contexte métier d’exécution de la solution

Provoly met à disposition la possibilité de gérer un référentiel de variables permettant d’indiquer un contexte d’exécution de la plateforme.

Les variables constituant ce référentiel sont à la main de l’utilisateur et il peut les administrer via des services lui permettant de les déclarer et les valoriser au besoin.

La valorisation de ces variables est disponible à chaud et elles sont utilisables dans la définition de prédicat permettant d’appliquer des règles d’accès aux données.

Paramétrer les accès des utilisateurs aux données avec modèle ABAC (Attribute-based access control) sous forme de prédicats et de règles

Le modèle ABAC permet de gérer les accès des utilisateurs aux données au sein de la solution. Le système se base sur :

  • Les données de profils utilisateurs

  • Les métadonnées positionnées sur les données intégrées dans la solution

  • Les attributs des données intégrées dans la solution

  • Les informations technique de connexion

  • Les données de contexte d’exécution de la solution définis

Les ABAC sont implémentés via un système de prédicats et de règles.

Définir des prédicats de déclenchement de règles se basant sur les variables de contextes d’exécution et les données de profils utilisateurs.

Un prédicat permet de définir les conditions dans lesquelles une règle d’accès aux données s’applique. Les prédicats sont écrits en expression language et se basent sur les informations suivantes :

  • Les informations techniques de connexion

  • Les variables de contexte

  • Les données de profils utilisateur

Les profils utilisateur sont multivalués. C’est à dire qu’un utilisateur peut avoir plusieurs valeur pour un même profil. Exemple : pour le profil "secteur d’intervention" il a à la fois "Quartier" et "Commune".

Les tableaux ci-dessous présente des bases de l’utilisation de ce langage en présentant des exemples d’accès aux différentes informations.

Type de donnée

Syntaxe

Exemple

Variable de contexte

var.<nom variable>

var.crise permet de récupérer la valeur de la variable de contexte 'CRISE'

Donnée de profil utilisateur

user.metadata('<nom donnée de profil>')

user.metadata('STATUT') pour récupérer les valeurs de la données de profil "STATUT" de l’utilisateur (c’est une liste donc il faut utiliser par exemple l’opérateur contains pour vérifier la présence d’une valeur dans la liste)

Information de requête

request.header('<nom donnée>')

request.header('User-Agent') permet de récupérer l’agent de connexion

Informations utilisateurs (hors données de profil)

user.<fonction>

user.hasRole('<Nom rôle>') permet de comparer le rôle utilisateur à la valeur transmise.

La solution permet de définir un catalogue de prédicat pouvant être utilisé pour définir une règle.

Définir les règles de restriction d’accès aux données en se basant sur des métadonnées ou des valeurs d’attributs de données

Les règles d’accès aux données sont définies comme suit :

  • Un prédicat de déclenchement

  • Une condition à appliquer en cas de vérification du prédicat

Lors de la définition d’une règle, il faut préciser :

  • Le type de variable sur lequel elle s’applique :

    • Soit à des métadonnées, ce qui permet de filtrer les données visibles par l’utilisateur à différents niveaux :

      • Objet entier si la métadonnée est valorisée sur l’objet

      • Valeur d’un attribut de l’objet si la métadonnée est valorisée sur la valeur

    • Soit à des attributs ce qui permet de filtrer les objets visibles de l’utilisateur.

  • Le prédicat de déclenchement parmis ceux définis dans le catalogue.

  • La condition ou l’ensemble de conditions à appliquer. Provoly permet de définir des conditions complexes et imbriquées dans les règles.

Le principe concernant la gestion des règles est l’ouverture de droit : une règle doit indiquer dans quelles conditions il est possible d’accéder à des données en fonction des métadonnées, données de profils ou attributs.

  • Règle ouvrant l’accès à certaines données à une population spécifique :

    • Indiquer le(s) métadonnée(s) et la(es) valeur(s) concernée(s) dans la règle

    • Rédiger le prédicat en indiquant l’expression conditionnelle permettant d’ouvrir l’accès aux données

  • Règle indiquant une restriction d’accès aux données en fonction du profil utilisateur, il faut implémenter la règle inverse : c’est-à-dire dans quelle condition j’ai le droit d’accéder aux données qui ne respectent pas cette règle :

    • Dans la règle : mettre l’inverse de la restriction

    • Dans le prédicat : préciser les conditions qui font que la restriction ne s’applique pas.

L’administration des règles permet à l’utilisateur de les activer ou désactiver au besoin.