cnam:nfe114:secureuml

Ceci est une ancienne révision du document !


Secure-UML

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.

Rôles

Regroupent les permissions en fonction des responsabilités des utilisateurs.

Permissions

Actions autorisées que les rôles peuvent effectuer sur les objets du système.

Secure-UML étend les diagrammes standard d'UML pour inclure des informations de sécurité.

Diagrammes de Classes Sécurisés

Incluent des annotations pour spécifier les permissions et les rôles associés aux classes et aux opérations.

Diagrammes de Cas d'Utilisation Sécurisés

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é.

Stereotypes

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.

Constraints

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).

Définition des Rôles

Les rôles sont définis en fonction des responsabilités dans l'organisation.

Assignation des Permissions

Les permissions sont associées aux rôles plutôt qu'aux utilisateurs individuels.

Gestion d'une bibliothèque :

Rôles :

  • Bibliothécaire : Un utilisateur avec le rôle de Bibliothécaire.
  • Membre : Un utilisateur avec le rôle de Membre.

Permissions :

  • Lecture : Inclut les actions de lire, emprunter et retourner des livres.
  • Modification : Inclut les actions d'ajouter, modifier et supprimer des livres.
  • Administration : Inclut l'action de gérer les emprunts.

Cas d'utilisation :

  • Lecture : Lire un livre, emprunter un livre, retourner un livre.
  • Modification : Ajouter un livre, modifier les informations sur un livre, supprimer un livre.
  • Administration : Gérer les emprunts.

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.

Secure Use case diagram

@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 : <> Bibliothécaire -down-> Modification : <> Bibliothécaire -down-> Administration : <> Membre -down-> Lecture : <> ' Cas d'utilisation du système Lecture --> (Lire un livre) : <> Lecture --> (Emprunter un livre) : <> Lecture --> (Retourner un livre) : <> Modification --> (Ajouter un livre) : <> Modification --> (Modifier les informations sur un livre) : <> Modification --> (Supprimer un livre) : <> Administration --> (Gérer les emprunts) : <> @enduml

Secure Object Diagram

@startuml !define ROLE Class !define PERMISSION Class ' Définition des classes pour les rôles ROLE Bibliothécaire <> ROLE Membre <> ' Définition des permissions PERMISSION Lecture <> { + read(): execute } PERMISSION Modification <> { + add():execute + modify():execute + delete():execute } PERMISSION Administration <> { + manage():execute } ' Association des rôles avec les permissions Bibliothécaire -down-> Lecture : <> Bibliothécaire -down-> Modification : <> Bibliothécaire -down-> Administration : <> Membre -down-> Lecture : <> ' Classes du système class Livre <> { +title: String +author: String +ISBN: String +getDetails(): String } class Emprunt <> { +startDate: Date +endDate: Date +isOverdue(): Boolean } class Bibliothèque <> { +add(Livre):execute +modify(Livre):execute +delete(Livre):execute +borrow(livre: Livre, membre: Membre): Emprunt +return(emprunt: Emprunt): execute +manage(List): execute } ' Permissions pour les méthodes de la classe Bibliothèque Lecture --> Livre : <> Lecture --> Bibliothèque::borrow : <> Lecture --> Bibliothèque::return : <> Modification --> Bibliothèque::add : <> Modification --> Bibliothèque::remove : <> Modification --> Bibliothèque::modify : <> Modification --> Livre : <> Administration --> Bibliothèque::manage : <> Administration --> Emprunt : <> @enduml