Je rejoins les autres contributeurs ici : le modèle de contrôle d’accès gagnerait à être amélioré avec une couche supplémentaire de granularité RBAC (contrôle d’accès basé sur les rôles) permettant de spécifier précisément ce que les staff et admin peuvent accéder (pour certaines fonctions, pas toutes).
Par exemple, un site pourrait souhaiter ajouter davantage d’administrateurs, mais préférer leur accorder un ensemble restreint de privilèges RBAC ; par exemple, autoriser ou non le téléchargement de la sauvegarde complète du site ou l’accès à certains fichiers de journaux d’actions du personnel. De plus, un site pourrait souhaiter s’assurer que certains membres du personnel n’ont pas les permissions RBAC pour consulter les actions du personnel effectuées par les administrateurs ou les développeurs, ou simplement certaines actions considérées comme plus « privées ».
Tous les experts en cybersécurité apprennent (et le savent par expérience directe) que la plus grande menace pour toute organisation est l’« employé mécontent » et non les pirates ou attaquants externes. Il ne fait aucun doute quant à ce risque fondamental en sécurité informatique, et c’est une connaissance bien établie pour les professionnels de la sécurité informatique formés ou expérimentés. Par conséquent, rejeter la menace intérieure en disant « faites simplement confiance à votre administrateur » ou « vous devez faire confiance à votre personnel » n’est pas une solution technique pour les professionnels de l’informatique. Même le personnel le plus digne de confiance, loyal depuis de nombreuses années, peut commencer à rencontrer des problèmes personnels susceptibles de le transformer en « employé mécontent ». De plus, ce sont les membres du personnel les plus privilégiés qui commettent le plus d’erreurs ; et nous savons tous que les erreurs bien intentionnées du personnel ou des administrateurs provoquent généralement plus d’arrêts de service que n’importe quel pirate, en général.
Il y a quelque temps, j’ai envisagé de modifier la classe Guardian de Discourse pour notre site, mais après un examen plus approfondi de cette classe, il ne m’a pas semblé évident qu’il existait une « solution rapide » me permettant d’écrire un minimum de code de patch (monkey patch) pour améliorer le RBAC de Discourse. Étant naturellement paresseux et préférant créer des solutions simples chaque fois que possible, j’ai mis cette idée de côté pour me consacrer à d’autres projets de « clients bien rémunérés ».
Par la suite, j’ai envisagé de descendre d’un niveau dans le code et de transférer certaines des fonctions staff et admin vers developer, mais cette approche nécessitait trop de patches (monkey patches), ce qui, à l’époque, ne me semblait pas être une bonne idée. Après tout, si nous pouvons accomplir quelque chose avec un seul patch plutôt qu’avec dix, il est évident qu’un seul patch est préférable.
Je n’ai pas encore eu le temps ni une « exigence urgente » d’approfondir cette partie du cœur de Discourse pour déterminer s’il existe une extension de plugin RBAC « facile » que je pourrais écrire via un plugin « relativement simple ».
Honnêtement, je pense que le problème est que je ne suis pas encore un super développeur Ruby et que, pour l’essentiel, je me considère davantage comme un « aspirant » codeur Ruby, LOL. Je suis convaincu qu’il existe, plus que probablement, une solution de plugin RBAC simple quelque part, mais personnellement, je ne l’ai pas encore trouvée. Peut-être qu’une personne Ruby beaucoup plus expérimentée pourra examiner rapidement le code et voir comment aborder ce problème.
Mon idée serait d’ajouter de nouveaux paramètres booléens au site qui limiteraient ou accorderaient des permissions RBAC spécifiques en fonction du rôle, puis d’intégrer ces booléens dans la partie appropriée du code via un patch (monkey patch) dans un plugin. Cependant, comme je l’ai mentionné, je préférerais patcher un seul fichier et non « plusieurs », afin que ce soit propre, simple et facile à maintenir.
Quand j’aurai le temps, j’étudierai plus en profondeur cette amélioration du RBAC, car elle est certainement intéressante.