Oracle Content Server : Groupes de sécurité et Comptes

Le modèle de sécurité UCM repose sur deux notions principales : groupes de sécurité et comptes.
Ces deux notions se recoupent et sont rattachées directement au document via des métadonnées spécifiques. Le modèle de sécurité est ainsi centré sur le document.
A chaque utilisateur sont associés des rôles octroyant des permissions sur les groupes de sécurité et comptes : lecture, écriture, suppression et administration (souscription d’un contenu au nom de quelqu’un d’autre, etc.).
Les droits d’un utilisateur sur un document appartenant à la fois à un groupe et un compte sont définis par l’union des droits de l’utilisateur  sur le compte avec ses droits sur le groupe.

Étudions cela plus en détail …

Groupes de sécurité

« Groupe de sécurité » est le nom donné à un regroupement de contenus UCM. Les documents appartenant à un groupe de sécurité sont enregistrés dans un dossier qui porte le nom du groupe. Cette notion est utile à la fois pour les contributeurs et les autres utilisateurs du portail.
Le groupe de sécurité est une métadonnée obligatoire.
Penser : restreint, classé, secret, top secret, etc.

Comptes

Un compte est un peu comme un répertoire (virtuel) où réside un document dans un système de sécurité. Ils sont typiquement orientés services / départements, mais il est également possible de mettre en place des comptes transverses.
Le compte est une métadonnée facultative.
Penser : RH, R&D, Bureaux de Lyon, etc.

Performances

Comme je le disais plus haut, les comptes et groupes de sécurité sont en réalité des métadonnées et sont donc stockés dans la base de données. Plus le modèle de sécurité est complexe, plus les requêtes seront complexes et la restitution des résultats de recherche lente. L’aspect performance n’est donc pas à négliger lors de la réflexion sur l’implémentation du modèle de sécurité …
Oracle, en tant qu’éditeur, fait la préconisation suivante : « The number of security groups should be kept at a minimum to provide optimum search performance and user administration performance. If your security model requires more than 50 security classifications, you should enable accounts and use them to control user permissions. » (« accounts ») (cf. Managing Security and User Access). Selon Oracle, il convient donc d’activer les comptes dès lors que le modèle de sécurité dépasse les 50 groupes de sécurité.
Néanmoins, les problèmes de performances n’apparaissent pas tant en fonction du nombre de groupes mais plutôt en fonction de la complexité du modèle de sécurité. Par exemple, si vous avez 100 groupes mais que chaque utilisateur ne peut accéder qu’à deux ou trois groupes, il n’y aura, a priori, aucun problème de performance. En revanche, si chaque utilisateur accède à 50 groupes, alors des problèmes de performances liés à la complexification des clauses de sécurité dans les requêtes SQL risquent d’apparaître.
En effet, les clauses WHERE sont construites avec la liste des groupes auxquels l’utilisateur a droit si le nombre est inférieur à 50% du nombre de groupes  total ou avec la liste des groupes auxquels il n’a pas accès dans le cas inverse. Ainsi, pour un utilisateur ayant accès à 50% des groupes, les recherches seront moins efficaces.
Ainsi, la limite en nombre sur les groupes de sécurité ne peut être prise en compte seule si on veut modéliser un système de sécurité performant, il convient également de prendre en considération les accès de chacun.
Enfin, ces baisses de performance liées au modèle de sécurité peuvent également être minimisés à l’aide de tuning sur la base de données.

Conclusion

Le modèle de sécurité mis en place dépend fortement de l’organisation de l’entreprise, il semble donc très difficile de sortir un modèle de sécurité type.
Ce modèle est à la base de la gestion du contenu et doit être réfléchi en amont de la mise en place de la solution de gestion de contenu. En effet, cette modélisation revêt une importance capitale puisqu’elle détermine les accès des utilisateurs sur les documents et influence les performances de la solution et donc directement les utilisateurs finaux.
J’espère avoir éclairci un peu la gestion de la sécurité dans Content Server …