Secure-UML est une extension UML dont l'objectif est d'intégrer des aspects de sécurité directement dans les modèles de systèmes logiciels.
Cette extension permet de définir des politiques de sécurité et des règles d'accès au niveau de la conception, facilitant ainsi le développement de systèmes sécurisés dès les premières étapes du cycle de vie du logiciel.
Contrôle d'Accès Basé sur les Rôles (RBAC) :
Secure-UML utilise le modèle RBAC pour définir les permissions et les rôles des utilisateurs dans le système.
Le modèle RBAC associe les permissions aux rôles plutôt qu'aux individus, simplifiant la gestion des droits d'accès.
Regroupent les permissions en fonction des responsabilités des utilisateurs.
Actions autorisées que les rôles peuvent effectuer sur les objets du système (ressources).
Secure-UML étend les diagrammes standard d'UML pour inclure des informations de sécurité.
Incluent des annotations pour spécifier les permissions et les rôles associés aux classes et aux opérations.
Identifient les rôles et les permissions nécessaires pour chaque cas d'utilisation.
Utilisées pour enrichir les éléments UML avec des informations de sécurité.
Ajoutent des informations de sécurité aux éléments UML.
Par exemple, un stéréotype « role » peut être utilisé pour annoter une classe comme représentant un rôle dans le modèle RBAC.
Règles qui spécifient les conditions de sécurité.
Par exemple, une contrainte peut définir que seulement certains rôles peuvent accéder à une méthode particulière.
Les politiques de sécurité sont définies en termes de permissions (opérations autorisées) et de rôles (regroupements de permissions).
Les rôles sont définis en fonction des responsabilités dans l'organisation.
Les permissions sont associées aux rôles plutôt qu'aux utilisateurs individuels.
Gestion d'une bibliothèque :
Dans ce diagramme, les rôles “Bibliothécaire” et “Membre” sont associés aux permissions appropriées.
Les permissions sont ensuite reliées aux cas d'utilisation correspondants, montrant comment les actions du système sont contrôlées par les rôles et les permissions.
@startuml !define ROLE Actor !define PERMISSION Actor/ #pink;line:red;line.bold;text:red ' Définition des rôles ROLE Bibliothécaire ROLE Membre ' Définition des permissions PERMISSION Lecture PERMISSION Modification PERMISSION Administration ' Acteurs (rôles) et leurs permissions Bibliothécaire -down-> Lecture : <<hasPermission>> Bibliothécaire -down-> Modification : <<hasPermission>> Bibliothécaire -down-> Administration : <<hasPermission>> Membre -down-> Lecture : <<hasPermission>> ' Cas d'utilisation du système Lecture --> (Lire un livre) : <<canDo>> Lecture --> (Emprunter un livre) : <<canDo>> Lecture --> (Retourner un livre) : <<canDo>> Modification --> (Ajouter un livre) : <<canDo>> Modification --> (Modifier les informations sur un livre) : <<canDo>> Modification --> (Supprimer un livre) : <<canDo>> Administration --> (Gérer les emprunts) : <<canDo>> @enduml
@startuml !define ROLE Class !define PERMISSION Class ' Définition des classes pour les rôles ROLE Bibliothécaire <<role>> ROLE Membre <<role>> ' Définition des permissions PERMISSION Lecture <<permission>> { + read(): execute + return(): execute + borrow():execute } PERMISSION Modification <<permission>> { + add():execute + modify():execute + delete():execute } PERMISSION Administration <<permission>> { + manage():execute } ' Association des rôles avec les permissions Bibliothécaire -down-> Lecture : <<hasPermission>> Bibliothécaire -down-> Modification : <<hasPermission>> Bibliothécaire -down-> Administration : <<hasPermission>> Membre -down-> Lecture : <<hasPermission>> ' Classes du système class Livre <<Resource>> { +title: String +author: String +ISBN: String +getDetails(): String } class Emprunt <<Resource>> { +startDate: Date +endDate: Date +isOverdue(): Boolean } class Bibliothèque <<Resource>> { +add(Livre):execute +modify(Livre):execute +delete(Livre):execute +borrow(livre: Livre, membre: Membre): Emprunt +return(emprunt: Emprunt): execute +manage(List<Emprunt>): execute } ' Permissions pour les méthodes de la classe Bibliothèque Lecture --> Livre : <<use>> Lecture --> Bibliothèque::borrow : <<canDo>> Lecture --> Bibliothèque::return : <<canDo>> Modification --> Bibliothèque::add : <<canDo>> Modification --> Bibliothèque::remove : <<canDo>> Modification --> Bibliothèque::modify : <<canDo>> Modification --> Livre : <<use>> Administration --> Bibliothèque::manage : <<canDo>> Administration --> Emprunt : <<use>> @enduml