1. Règles fondamentales
D'abord, la sécurité doit être prise en compte lors de toutes les phases d'un projet : de la conception à la recette jusqu'à l'utilisation de l'application par les contributeurs en production. Avant la mise en production, la recette doit TOUJOURS être effectuée sur un certain nombre de scénarios fonctionnels bien définis. La question principale est : quelles informations doivent rester confidentielles et de qui ?
La confidentialité d'un contenu ou d'un document doit TOUJOURS s'appuyer sur les droits. Il n'est pas concevable de baser la confidentialité de son application par des modifications d'interface (ex : cacher le moteur de recherche sur les contenus).
Les droits ne doivent pas dépendre d'un bon usage des utilisateurs mais être garantis par l'application. Si l'utilisateur va explicitement ouvrir les droits de consultation d'un contenu, il en sera évidemment entièrement responsable. En revanche, par exemple, si la suppression d'une catégorie dans les méta données d'un contenu rend public un contenu privé, alors l'utilisateur ne va probablement pas en avoir conscience. Il faut empêcher cela.
Tout au long de la mise en oeuvre d'une application et de son exploitation en production, il est obligatoire de bénéficier des derniers correctifs en installant le dernier service pack de maintenance de la solution JPlatform, de déployer régulièrement le module PatchPlugin (voir : PatchPlugin - Présentation et utilisation) et les dernières versions correctives de modules (version de type "x.y.z"). Ces actions vous garantissent d'avoir une plateforme robuste en particulier en ce qui concerne les aspects de confidentialité des données. Pour les questions de sécurité et pour le respect du RGPD, nous vous invitons à faire connaître auprès de votre contact commercial Jalios, vos contacts RSSI et DPO (pour plus d'information sur la gestion des anomalies logicielles liées à la sécurité, lire le document Plan Qualité Support , §4.1).
2. Les bonnes pratiques
- Les droits d’accès sont définis par type de contenu et espaces de travail pour les contenus et par rôle sur les workflows.
- Ces droits sont définis au niveau des groupes et peuvent être affinés au niveau du membre.
- Un membre appartenant à plusieurs groupes cumule les droits des groupes auxquels il appartient.
- Les droits du groupe définissent des droits communs pour l’ensemble des membres appartenant au groupe.
- Des droits de consultation explicites sur les dossiers (via le module Category Right) et les publications peuvent être positionnés manuellement par les membres.
Les niveaux d’accès en standard sont :
- Administrateur central (local et technique) : accès à tout
- Administrateur fonctionnel : droit d’administration de leurs espaces selon paramétrage applicatif
- Animateur : administrateur fonctionnel d'une communauté (espace collaboratif)
- Membres : accès en lecture et en écriture en fonction du paramétrage applicatif
- Comptes invités : accès uniquement aux espaces collaboratifs auxquels ils sont invités
- Accès publique (si le site a une partie publique)
La solution JPlatform apporte une gestion fine des droits d’administration (ACL) :
- L’administrateur central peut déléguer tout ou partie de ses droits à d’autres utilisateurs. Il attribue les droits d’administration souhaités grâce à une ACL (Access Control List).
- Une fonction d'audit affiche l'ensemble des accès dont dispose un membre ou un groupe.
- Inversement, on peut connaître l'ensemble des membres ayant accès à une fonction donnée.
La solution propose une fonctionnalité standard d'analyseur de droits. Cet outil de vérification des droits est disposnible sur les contenus. Ceci permet de savoir si un membre donné à le droit de consulter, modifier ou supprimer un contenu donné.
JPlatform peut être configuré en site "public" (ex : des pages de contenu peuvent être consultées sans authentification en amont) ou en site "privé" (l'ensemble des pages front et back office sont soumises à une authentification en amont).
JPlatform apporte également un cloisonnement fort par des espaces collaboratifs (communautés) :
- Espace Public : tout le monde peut voir un espace public, et consulter ses contenus.
- Espace Privé : tout le monde peut avoir connaissance d'un espace privé, mais seuls les participants peuvent consulter ses contenus.
- Espace Secret : seuls les participants d'un espace secret ont connaissance de cet espace, et peuvent consulter ses contenus.
Les contrôles d’accès aux publications des espaces collaboratifs sont effectués bas niveau par des RightPolicyFilter standards Jalios dédiés lors de l’application des politiques d’accès.
Les comptes invités accèdent uniquement aux espaces collaboratifs auxquels ils sont invités.
Certaines fonctionnalités de la solution sont transverses (ex : annuaire, messagerie instantanée). Les recommandations sont volontairement transversales à l’ensemble des espaces.
Cloisonnement des contenus par espace :
- Droits de consultation par défaut sur les types de contenu ou bien redéfinis dans chaque espace (éditorial ou collaboratif)
- Droits de consultation sur la publication ou pour un document sur la publication/formulaire référençant celui-ci par la mécanique des pièces jointes
- Droits sur les catégories d'une publication (avec le module Category Rights)
- des outils de Contrôle des accès (analyseur de droit + ACL applicative)
Des filtrages automatiques et bas niveau sont pris en charge par les couches techniques d’accès aux données de la solution JPlatform :
- Par espace de travail
- Par catégorie
- Par type de publication
- Par état de workflow
Des filtrages dynamiques en mémoire, selon l’utilisateur connecté et les politiques de contrôles d’accès en place, sont réalisés sur l'ensemble des pages (front et back office) :
- Droits de lecture explicites (DAC : Discretionary access control)
- Profils de consultation (Audiencement)
- RightPolicyFilter :
- Espace collaboratif secret et privé (CollaborativeSpacePlugin)
- Droit de lectures par catégories (CategoryRightPlugin)
N'hésitez pas à consulter le Livre blanc fonctionnel - JPlatform 10 et en particulier le paragraphe §2.9 concernant la confidentialité
Reste dans le cadre d'un projet de mise en oeuvre à correctement utiliser ces fonctionnalités ou bien d'exiger un partenaire certifié Jalios (ex : Administrateur fonctionnel, Développeur). Vous pouvez consulter la liste des partenaires certifiés.
Enfin, il est extrêmement important que le cycle de formation d'administration fonctionnelle avancée de la solution JPlatform (Catalogue de formations) soit à minima dispensé auprès de l'équipe d'administration fonctionnelle en charge de l'application. L'objectif est de bien comprendre les principaux concepts et les fonctionnalités de la solution.
3. Liste de points à vérifier lors de l'audit
Pour les publications en général, les solutions possibles sont de :
- positionner ces contenus dans un espace protégé avec des droits de consultation sur le type de contenu
- positionner ces contenus dans un espace collaboratif privé ou secret
- expliciter un droit de consultation par défaut sur le type de contenu
- expliciter un droit de consultation sur les contenus eux-même
Pour les formulaires mis en oeuvre avec des documents joints, la solution est :
- définir les soumissions d'un formulaire dans un espace protégé avec un droit de consultation sur le type document
- remarque: un utilisateur anonyme ne pourra pas consulter ses documents déposés (ex : un CV déposé dans un formulaire de candidature) dans un espace protégé par les droits de consultation.
Sur un site privé, seules les personnes authentifiées peuvent accéder aux contenus.
Souvent, il faut s'assurer que le contributeur d'un contenu et éventuellement un nombre limité de personnes puissent consulter ce contenu.
Dans ce cas, les solutions les plus simples sont:
- passer par un espace collaboratif privé ou secret
- modifier le droit de consultation du contenu uniquement au contributeur, à certains membres ou groupes.
Les administrateurs centraux ou d'espace peuvent accéder à toutes les publications du site. Les administrateurs d'espace peuvent accéder à toutes les publications de leur espace.
La protection des contenus par les catégories avec la fonction de gestion des droits de consultation par catégorie (module Category Rights) doit être utilisé très précautionneusement. Pour l'explication détaillée , vous pouvez consulter la documentation du module et notre base de connaissance , en particulier : Pourquoi certaines publications ne sont pas protégées par le Module Category Rights ?
Il y a la possibilité de contrôler et d'interdire éventuellement la suppression d'une catégorie mais en passant par un développement spécifique utilisant l'API de la solution JPlatform.
Ce n'est pas le rôle du workflow de protéger les droits de consultation d'un contenu.
Il y a le cas du workflow des pièces jointes qui permet à un document en pièce jointe de suivre les droits de sa publication référente mais c'est un mécanisme particulier et qui doit être utilisé précautionneusement.
Les droits de consultation ne doivent jamais reposer sur les mécanismes permettant d'empêcher l'affichage d'un contenu (masquer un bouton, cacher une zone affichant un contenu, utiliser du javascript, interdire l'accès aux robots d'indexation etc.).
La vérification des droits doit être systématiquement faite sur les contenus qui doivent être protégés.
La solution JPlatform permet d'implémenter des politiques de sécurité spécifiques dans le contexte de mise en oeuvre d'une application (ex : un membre appartenant un groupe A ne doit pas voir un membre d'un groupe B dans un espace collaboratif).
Il est important lors de l'audit :
- de vérifier l'existence ou pas d'une ou plusieurs politiques de sécurité spécifiques.
- de vérifier si les politiques spécifiques ont été formalisées dans une document dédié au projet (rappel du contexte, le pourquoi, les règles fonctionnelles associées, les scénarios de test, ...).
- de vérifier le bon fonctionnement des politiques spécifiques de sécurité en réalisant des tests applicatifs.
Une politique de sécurité spécifique a la capacité de surcharger le comportement nominal de la solution JPlatform. A chaque mise à jour applicative réalisée de votre projet, nous vous recommandons de bien retester vos éventuelles politiques spécifiques de sécurité.
Il est important de réaliser régulièrement une campagne de revue des droits d'accès, notamment au sein des communautés, et tout particulièrement celles qui peuvent contenir des informations sensibles.
4. Quelques conseils
Nous vous conseillons de mettre en oeuvre :
- des droits associés à un espace collaboratif, dans ce cas, prévoir les conséquences d'un partage inter-espaces
- des droits gérés par les utilisateurs (uniquement si c'est occasionnel jamais si ça doit être effectué pour tous les contenus car il y a un risque d'oubli)
- des droits positionnés par DataController (sous réserve de contrôler le code)
- des droits vérifiés par un RightPolicyFilter (sous réserve de contrôler le code)
- des droits associés à des catégories mais avec la réserve qu'il faut dans ce cas mettre en place un DataController qui vérifie la non disparition de catégories suite à une édition ; il faut aussi prévoir les conséquences d'un partage inter-espaces.
- de limiter au maximum les membres avec des pouvoirs importants sur votre plateforme de production (qui sont les administrateurs fonctionnels des espaces ? qui sont les administrateurs centraux de votre application ?)
- ne pas recopier systématiquement la totalité de vos données de l'environnement de production vers l'environnement de pré-production. Traditionnellement, les accès sur les environnements de pré production sont plus souples. Donc il se peut que des données confidentielles soient accessibles à des utilisateurs non habilités.
5. Documentation
Vous pouvez également consulter :
- JPlatform - Personnalisation de la gestion des droits (ne concerne pas uniquement les droits de consultation)
- Règles de développement pour la sécurité de JPlatform / JCMS et des modules (jalios.com)
- Des articles dans notre base de connaissance sur le thème général des droits : base de connaissance, droits (ne concerne pas uniquement les droits de consultation)