transition-bibliographique / poc-fne

Preuve de concept basée sur Wikibase pour le "Fichier National d'Entités" (Abes/BNF). Projet réalisé en 2019.
http://www.abes.fr/Autorites-et-referentiels/Projet-FNE-Fichier-National-d-Entites
4 stars 1 forks source link

Les rôles et les restrictions dans Wikibase #211

Closed benbober closed 4 years ago

benbober commented 5 years ago

Ce ticket permet de synthétiser en un seul l’ensemble des tickets qui ont trait aux rôles, aux restrictions et à leur implémentation dans le FNE. Il s’agit des tickets #40, #58, #59, #64, #97, #98, #51. Par ailleurs, les tickets #108 , #109, #110, #122, #123, #124, #125, #126, et #127 qui entraient plus dans des détails d’implémentations des thématiques évoquées ici sont désormais clos. En amont du rapport final qui devra donner un avis spécifique sur chacune de ces fonctionnalités, l’objet du présent ticket est de fournir des orientations de plus haut niveau sur ce qu’il conviendrait de faire pour répondre aux besoins spécifiques du POC sur cette question des rôles et des restrictions.

L’avis portera plus particulièrement sur les 3 points suivants

jum-s commented 5 years ago

La création et la modification d’entités ne peuvent se faire que par un utilisateur logué

Un paramétrage des groupes utilisateurs permettrait de satisfaire cette spec : Les lignes suivantes désactivent l'édition des pages par tous, et créent un groupe appelé emailconfirmed avec les droits d'édition et de création:

$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['user']['edit'] = false;
$wgGroupPermissions['user']['createpage'] = false;
# Only confirmed email addresses are in the group.
$wgAutopromote['emailconfirmed'] = APCOND_EMAILCONFIRMED;
$wgGroupPermissions['emailconfirmed']['edit'] = true;
$wgGroupPermissions['emailconfirmed']['createpage'] = true;

source: https://www.mediawiki.org/wiki/Manual:User_rights

jum-s commented 5 years ago

Il doit être possible de créer et administrer des groupes d’utilisateurs logués ayant des droits particuliers

Est-ce que l'interface du fichier LocalSettings.php est suffisante pour cette spec, aucune interface graphique n'est disponible a ma connaissance pour gérer les droits administrateurs (à confirmer pendant l'exploration en tant que telle)

gotnc commented 5 years ago

Suite à notre discussion d'hier sur une granularité possible sur les habilitations et flux d'entités, et pour compléter ce qui est déjà listé au dessus, voilà d'autres exemples qui ne reflètent pas de cas d'usage (ils sont à préciser) mais qui pourraient se rapprocher de ce que l'on aura besoin de faire :

jum-s commented 4 years ago

Les groupes d'utilisateurs sont :

Restrictions à la lecture

Visibilité des entités

Empêcher la consultation des entités est possible via la restriction des pages elles-mêmes :

$wgGroupPermissions['*']['editpage'] = false;

$wgGroupPermissions['*']['read'] = false;

$wgGroupPermissions['*']['createaccount'] = false;

Visibilité des déclarations

La possibilité de restreindre l'accès seulement à certaines déclarations dans une entité n'est pas envisagée par la communauté Wikibase.

Un moyen de restreindre cet accès pourrait être de dupliquer l'entité dans plusieurs 'Namespaces' (ex: Item pour les éléments avec les déclarations sensibles et publicItem sans ces données), et d'attribuer des interdictions sur les Namespace via $wgNamespaceProtection

Restrictions à l'écriture

Edition d'une entité spécifique

La restriction de modification d'entité se fait via la protection de la page de l'entité

Cette fonctionnalité issue de Mediawiki est accessible

Édition d'un type d'entité

Les restrictions sur les types d'entités peuvent s'appliquer en protégeant toutes les pages d'un Namespace particulier avec la variable $wgNamespaceProtection

Édition de propriété uniquement par les utilisateurs d'une institution

Il existe la possibilité de créer deux groupes (nommé abes et bnf par exemple) et de protéger l'édition de la propriété en question dans l'interface graphique via l'action protect

Restriction des services

Par définition, la restriction d'accès à un autre service que Wikibase ne peut être réalisée sur Wikibase. Un utilitaire/wrapper autour du service pourrait être envisagé avec une authentification Oauth, cet utilitaire devra assurer la responsabilité de sauvegarde des tokens.

Cas d'usage : Groupe catalogueur

Défini dans l'issue #127

Cela revient à interdire l'accès à la page Special:MergeItems La restriction des pages spéciales est possible via l'extension Lockdown

$wgSpecialPageLockdown['MergeItems'] = [ 'catalogueur' ];
gotnc commented 4 years ago

Merci pour vos retours et pistes.

Une petite remarque toutefois à propos de l'utilisation possible de l'extension Lockdown : nous avons regardé et la doc ici https://github.com/wikimedia/mediawiki-extensions-Lockdown nous parait indiquer que ce serait tordre un peu le modèle que d'essayer d'utiliser cette extension WB pour restreindre l'accès aux données, voir par exemple : "Mediawiki is not designed to be a CMS, or to protect sensitive data. To the contrary, it was designed to be as open as possible. Thus it does not support full featured, air-tight protection of private content. This extension can be used to apply read-restrictions to namespaces, limiting read access to specific groups. Note however that there may be several ways in which data thusly protected may be "leaked" to the public:

De la même manière, dupliquer des millions d'entités sous différents namespaces ne semble pas une solution réellement adaptée au besoin décrit. Dans le rapport de fin de POC, sera-t-il possible de détailler plus à fond les limites des fonctionnalités évoquées et manques pour répondre au besoin, ainsi que les actions à entreprendre si l'on s'orientait tout de même vers cette approche ?

jum-s commented 4 years ago

Aucune solution préexistante ne semble être disponible pour couvrir les besoins décrits. La sécurisation des données sensibles n'est pas dans les objectifs de Wikibase et nous savions tous que le poc allait coincer sur ce sujet.

D'autres pages essaient de palier aux limites de Mediawiki, mais il n'en reste pas moins que le logiciel a été créé pour des données ouvertes. Certaines pages laissent perplexe quant à la satisfaction de vos besoins : "almost all hacks or patches promising to add [per-page access restrictions] will likely have flaws somewhere". Toutes restrictions d'accès est vu comme un contournement du logiciel.

Le POC (et précisément le rapport final) documentera les impossibilités à ce sujet et nous détaillerons les lectures sur la sécurité des données personnelles. Néanmoins nous souhaitons aussi proposer l'exploration de certaines pistes (et leurs limites), d'ou la duplication d'entités.

L'une des forces de wikibase est de pouvoir traiter des dizaines de millions d'entités, la duplication dans des namespaces, pour nous, bute sur d'autres contraintes que la masse d'entité. Par exemple, comment gérer le transfert d'un namespace à l'autre ou la référence inter-namespace. Il serait possible de créer des utilitaires qui assurent la mise à jour des données entre différents namespaces, mais les incertitudes restent grandes sur la maintenabilité de cette piste d'exploration.

Autre piste qui sera détaillée dans le rapport : un proxy qui viendrait filtrer les requêtes sur certaines pages, en dehors de Wikibase pour éviter les contournements internes découragés.

gotnc commented 4 years ago

Ok merci