Closed benbober closed 4 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;
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)
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 :
Les groupes d'utilisateurs sont :
consultables via la page ListGroupRights
créés uniquement via la configuration dans LocalSettings.php, notamment $wgGroupPermissions
détaillé plus bas
applicables/assignables aux utilisateurs
createAndPromote
ex : php createAndPromote.php --custom-groups=catalogueur username
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;
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
La restriction de modification d'entité se fait via la protection de la page de l'entité
Cette fonctionnalité issue de Mediawiki est accessible
protect
$wgRestrictionLevels
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
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
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.
Défini dans l'issue #127
Créer et modifier des éléments
$wgGroupPermissions['catalogueur']['createpage'] = true;
$wgGroupPermissions['catalogueur']['edit'] = true;
Ne peut pas créer de propriété
$wgGroupPermissions['catalogueur']['property-edit'] = false;
Ne peut pas fusionner d'entité
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' ];
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 ?
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.
Ok merci
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