Utiliser Visual Guard avec Visual Basic .NET

| Cécile Muno | Christian Maréchal |

Visual Guard.NET est un produit de la société Novalys axé sur la sécurité. En effet, il permet de personnaliser aisément les permissions d'accès aux données et, par ce fait, de réduire les coûts engendrés par la sécurité. Il est déployable aussi bien sur les nouvelles applications que sur l'existant.

Commentez

- Titre : Utiliser Visual Guard avec Visual Basic .NET

- Auteurs : Cécile Muno, Christian Maréchal

- Parution : 23 mai 2006

- Mise à jour : 29 mai 2020

- Licence : Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.

Sommaire

- I. En quelques mots

- I-A. Comment ça marche ?

- I-B. Domaine d'application

- I-C. Gérer la sécurité

- II. Téléchargement et installation

- III. Intégration dans votre application

- III-A. Étape 1 : les références

- III-B. Étape 2 : créer un référentiel

- III-C. Étape 3 : créons notre application

- III-D. Étape 4 : définir l'application à sécuriser

- III-E. Étape 5 : les fichiers de configuration

- IV. Définition des permissions, jeu de permissions, rôles

- IV-A. Étape 1 : les permissions et leurs actions

- IV-B. Étape 2 : jeu de permission

- IV-C. Étape 3 : les rôles

- IV-D. Étape 4 : les utilisateurs

- V. Conclusion

- VI. Remerciements

- VII. Téléchargements

I - En quelques mots

I-A - Comment ça marche ?

Une vue très simplifiée du fonctionnement de Visual Guard.NET, Novalys

- Enregistrer dans une « base de sécurité » les permissions .

- Définir les règles de sécurité via le « Developer Workshop ».

- Gérer les profils et attribuer les droits grâce au « Profile manager ».

- Modifier l'application selon les droits attribués en exécutant le moteur de Visual Guard.

Vous allez pouvoir constater grâce au test sur une application simple que Visual Guard s'utilise en deux temps :

- lors du développement (ou de la maintenance) de l'application ;

- lors de l'administration de la sécurité.

Nous allons aussi essayer de vous montrer simplement avec quelle facilité il est possible de créer plusieurs types d'utilisateurs et un grand nombre de permissions variées pour chaque type.

I-B - Domaine d'application

D'après Novalys, les principaux domaines d'applications sont PowerBuilder et Visual Basic aussi bien version 5 ou 6 que la version NET 2003 ainsi qu'au langage C#. Il s'applique aussi aux développements en ASP.NET.

La version présentée ici ne fonctionne que sous le framework 1.0 ou 1.1. et au plus avec Visual Basic 2003.

Le logiciel adapté au framework 2.0 et, donc, à Visual Basic 2005 sera disponible vers le mois de juin 2006.

I-C - Gérer la sécurité

Il est vrai que le framework .NET fournit en standard un ensemble de fonctionnalités permettant de sécuriser nos applications. Visual Guard a été créé pour en faciliter la gestion et éviter des problèmes de maintenance dus à la complexité des fonctionnalités standards. Visual Guard permet d'ajouter à vos applications un mécanisme d'autorisation et d'authentification en quelques lignes de code.

II - Téléchargement et installation

Vous devez avoir installé le framework NET 1.0 ou 1.1 pour que Visual Guard puisse fonctionner. Le test suivant a été réalisé avec le framework 1.1 et Visual Basic 2003.

Vous pouvez obtenir une version d'évaluation en anglais à cette adresse : Request a trial version en vous inscrivant.

L'installation de Visual Guard s'effectue à partir d'un Setup classique. Lancez le Setup et parcourez les écrans décrits :

Si vous cliquez sur « Disk cost », un écran de gestion de votre espace disque sera affiché :

xxxxxxxxxx

L'installeur est maintenant prêt pour configurer l'installation, il vous suffit de confirmer en cliquant sur « Next » :

L'installation est maintenant terminée. La dernière mise en garde de l'installeur a toute son importance pour la suite du test, car il faut impérativement que votre framework soit à jour. Si vous n'êtes pas certain d'être à jour, exécutez Windows Update.

Dans le menu Démarrer de votre ordinateur, vous devez retrouver cette configuration :

III - Intégration dans votre application

Pour utiliser Visual Guard.NET, créons une solution Visual Basic.NET que nous avons appelée WinTestVG. Pour intégrer le logiciel dans notre projet, nous devons procéder en quatre étapes.

III-A - Étape 1 : les références

1. Clic droit sur le projet / ajouter une référence

2. Sélectionnez les trois références nécessaires :

où :

- Novalys.VisualGuard.Security contient les classes principales de Visual Guard ;

- Novalys.VisualGuard.Security.File contient les classes nécessaires pour accéder à un référentiel stocké sous forme de fichier. Si vous utilisez un référentiel stocké dans une base de données ou dans l'Active Directory, il faudra la remplacer par l'Assembly correspondant à votre type de référentiel ;

- Novalys.VisualGuard.Security.WinForm contient les classes graphiques pour une application de type WinForms. Cet Assembly est nécessaire uniquement si vous désirez utiliser les fenêtres fournies par défaut. À tout moment, vous pouvez utiliser vos propres fenêtres ;

- Novalys.VisualGuard.Security.VGSecurityManager est la classe principale. Elle permet de centraliser toutes les actions nécessaires au fonctionnement de Visual Guard ;

- Novalys.VisualGuard.Security.WinForm.VGLoginForm est la fenêtre par défaut de Visual Guard pour authentifier un utilisateur. Cette fenêtre n'est pas obligatoire, vous pouvez utiliser votre propre fenêtre et appeler vous-même la fonction d'authentification de VGSecurityManager.

Vous devez donc les retrouver dans votre projet :

III-B - Étape 2 : créer un référentiel

Pour cela, vous devez ouvrir la console de Visual Guard :

et comme demandé dans cet écran, créer le référentiel vers votre application. Pour cela, il y a deux manières de procéder :

soit un « clic » droit sur Visual Guard Console et « Add Repository »

soit en utilisant le bouton de bas d'écran :

Dès lors, vous ouvrez l'assistant d'installation du référentiel :

Cliquez sur « Next » et suivez les écrans en choisissant de créer un nouveau référentiel ainsi que le dossier de destination.

L'étape suivante est très importante, car elle permet de définir quel sera l'utilisateur par défaut qui pourra administrer ce référentiel. À la fin de l'assistant, Visual Guard créera cet utilisateur dans le référentiel Visual Guard et lui donnera les droits d'administration.

Attention, ce mot de passe est important, ne l'oubliez pas, sinon vous ne pourrez plus accéder au référentiel par la suite.

Pour terminer, cliquez sur « Finish » et nommez votre référentiel. Ici, nous allons choisir le nom « Dvp ».

Enfin, connectez-vous à « Dvp » en double-cliquant dessus et en introduisant votre login et password, en l'occurrence dans notre exemple « Administrator » et « 1234 » :

III-C - Étape 3 : créons notre application

Nous désirons attirer votre attention sur le fait que nous avons testé ce programme différemment de l'exemple livré avec Visual Guard. En effet, reproduire un exemple existant déjà n'était pas très représentatif d'un test « grandeur nature ».
Nous avons décidé de travailler :

- avec une base de données en Access (NorthWind.mdb) plutôt que SQL Server ;

- directement dans le code pour l'exploitation de cette base de données et non via l'assistant de Visual Basic.

Afin de poursuivre l'implémentation de Visual Guard, nous devons créer l'ébauche de notre application. En effet, vous verrez au point suivant que nous avons besoin de référencer un exécutable.

Il est bien évident que Visual Guard est applicable à des projets déjà existants. Les seules modifications importantes à réaliser consistent à référencer Visual Guard et à pouvoir déterminer quel utilisateur se connecte.

L'application est créée dans un répertoire nommé C:\VG sous la dénomination WinTestVG. Afin de permettre différents tests d'accès aux données, nous avons dessiné :

1. Une feuille concernant la Clientèle « FrmClient »

2. Une feuille concernant les Produits « FrmProduits »

3. Une feuille concernant les Employés « FrmEmployes »

Toutes ces feuilles ayant une apparence très classique quant à la navigation au niveau des données d'une société.
Jusque là, rien de spécial !

4. Ensuite, nous avons aussi créé une feuille MDI « MDIDemarrage » très simple comprenant un menu « Fichier » et un lien vers nos feuilles existantes

Dans cette feuille, il faut y placer quelques références importantes :

- l'importation des classes ;

- l'implémentation de Visual Guard via VGISecurable :

Imports Novalys.VisualGuard.Security.WinForm
Imports Novalys.VisualGuard.Security

Public Class MDIForm
Inherits System.Windows.Forms.Form

Vous pouvez constater que, suivant la manière dont on se connecte, certaines parties de ce menu sont inaccessibles. But avoué de la sécurisation via Visual Guard.

5. Pour la connexion, vous pouvez créer vous-même une feuille de « Login » classique. Personnellement, nous avons décidé d'utiliser celle implémentée dans Visual Guard :

Si vous créez votre propre feuille et, en supposant que vous y placiez un bouton de validation appelé « BtnOK », il est indispensable d'insérer ce code :

Imports Novalys.VisualGuard.Security

D'abord, ne pas oublier d'appeler la classe Novalys nécessaire pour coder nos besoins de sécurité et de connexion (ci-dessus). Ensuite, dans l'événement « clic » du bouton « OK », le code suivant :

Private Sub BtnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOk.clic
Dim state As VGAuthenticationState = VGSecurityManager.Authenticate(userTextBox.Text, passwordTextBox.Text)
If state.IsFailed() Then
Me.DialogResult = DialogResult.None
If state.IsCanceled() Then Return
If state.IsCredentialInvalid() Then
If state.IsLastBadLogin() Then
MessageBox.Show("Le nom de l'utilisateur ou le mot de passe est incorrect" & _
Environment.NewLine & "Impossible de continuer.")
Else
MessageBox.Show("Le nom de l'utilisateur ou le mot de passe est incorrect")
End If
ElseIf state.IsUserNotAuthorized() Then
MessageBox.Show( _
"Vous n'êtes pas authentifié en tant qu'utilisateur pour l'application")
ElseIf state.IsUserAccountExpired() Then
MessageBox.Show("Votre compte et votre mot de passe ne sont plus valides. " & _
Environment.NewLine & "Contactez votre administrateur")
ElseIf state.IsUserAccountNotYetAvailable() Then
MessageBox.Show("Votre compte et votre mot de passe ne sont pas disponibles.")
ElseIf state.IsUserAccountLocked() Then
MessageBox.Show("Votre compte est bloqué. " & _
Environment.NewLine & "Contactez votre administrateur.")
End If
Else
Me.DialogResult = DialogResult.OK
If state.IsPasswordSecure() Then
Return
ElseIf state.IsLastGraceLogon() Then
MessageBox.Show("Vous devez changer votre mot de passe")
Dim form As FrmChangePassword = New FrmChangePassword
form.ShowDialog()
Else
MessageBox.Show("Votre mot de passe n'est pas suffisamment sécurisé. " & _
Environment.NewLine & "N'oubliez pas de le modifier.")
End If
End If
End Sub

Ce code permet d'envoyer le mot de passe et le nom de l'utilisateur vers la sécurité gérée par Novalys et d'afficher les différents messages suivant la réponse reçue :

1. state.IsFailed (= True) : l'authentification a échoué pour une des raisons suivantes :

2. state.IsCanceled : l'opération a été annulée par l'utilisateur,

3. state.IsLastBadLogin : le nom de l'utilisateur et/ou le mot de passe sont erronés et il s'agissait de la dernière tentative avant blocage du compte,

4. state.IsUserNotAuthorized : l'utilisateur n'est pas autorisé à accéder à l'application,

5. state.IsUserAccountExpired : le compte de l'utilisateur a expiré et n'est plus utilisable,

6. state.IsUserAccountNotYetAvailable : le compte de l'utilisateur existe, mais n'est pas encore valide,

7. state.IsUserAccountLocked : l'utilisateur est bloqué par l'administrateur ou suite à de nombreuses tentatives d'authentification invalides ;

8. state.IsFailed (= False) : l'authentification a réussi et :

9. state.IsPasswordSecure : le mot de passe respecte les règles de stratégies de sécurité des mots de passe. Si la valeur et False, il faut proposer à l'utilisateur de changer son mot de passe,

10. state.IsLastGraceLogon : l'authentification a réussi, mais le mot de passe ne respecte pas les règles de stratégies de sécurité des mots de passe. Si l'utilisateur ne le change pas avant une prochaine connexion, son compte sera bloqué. Il faut ouvrir la fenêtre de changement de mot de passe et forcer l'utilisateur à changer son mot de passe.

N'oubliez pas de créer aussi une feuille style « FrmChangePassword » pour donner la possibilité à l'utilisateur de modifier son compte suivant les messages d'erreur rencontrés ;

6. Dernière petite fenêtre : « FrmUserList ». Elle est composée d'une simple ListBox dans laquelle seront listés les rôles accessibles à certains utilisateurs. Vous verrez comment créer ces rôles dans la suite du tutoriel.

7. Pour démarrer l'application, nous allons utiliser un module pour référencer la sécurité de notre application. Il est bien évident que ce module sera aussi le point d'entrée lors de l'exécution.
Commençons par ne pas oublier les références de classes :

Imports Novalys.VisualGuard.Security
Imports Novalys.VisualGuard.Security.WinForm
Imports Novalys.VisualGuard.Security.Authentication.VGNamePasswordCredential

Ensuite, le code ci-après va simplement appeler la feuille de connexion intégrée et selon le retour, l'application peut se poursuivre ou non.

Module Demarrage
Public Sub Main()
AddHandler VGSecurityManager.SecurityError, AddressOf OnSecurityError
AddHandler VGSecurityManager.PermissionsLoading, AddressOf OnPermissionLoading

Application.EnableVisualStyles()
Application.DoEvents()

Dim login As New Novalys.VisualGuard.Security.WinForm.VGLoginForm
login.ResetText()
login.HeaderTitle = "Test de Visual Guard"

If login.ShowDialog() = DialogResult.OK Then
login.Dispose()
Application.Run(New MDIDemarrage)
End If

End Sub

'Permet de lever toutes les erreurs interceptées par Visual Guard et demander une confirmation
'à l'utilisateur avant de générer une exception
Private Sub OnSecurityError(ByVal sender As Object, ByVal e As VGSecurityErrorEventArgs)
If MessageBox.Show("Une action de sécurité est invalide dans Visual Guard" & _
Environment.NewLine & "The following error occured:" & Environment.NewLine & _
e.Exception.Message & Environment.NewLine & Environment.NewLine & _
"Do you want to continue?", "Visual Guard error", MessageBoxButtons.YesNo, _
MessageBoxIcon.Error, MessageBoxDefaultButton.Button2) = DialogResult.Yes Then
e.Continue = True
End If
End Sub

'Permet à l'utilisateur la sélection un rôle dans une liste de rôles
Private Sub OnPermissionLoading(ByVal sender As Object, ByVal e As VGPermissionsLoadingEventArgs)
If e.Roles.Length > 1 Then
Dim form As New FrmUserList

form.Roles = e.Roles
If form.ShowDialog() = DialogResult.OK Then
e.Roles = form.Roles
e.Status = VGAuthorizationStatus.Success
Else
e.Status = VGAuthorizationStatus.Failure Or VGAuthorizationStatus.ProcessCanceled
End If
End If
End Sub
End Module

8. Il reste un peu de code à placer dans le « code généré par le concepteur »

Public Sub New()
MyBase.New()

'Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()

'Ajoutez une initialisation quelconque après l'appel InitializeComponent()

VGSecurityManager.SetSecurity(Me)
End Sub

9. Nous pouvons maintenant enregistrer notre design dans le répertoire C:\VG sous la dénomination WinTestVG et compiler notre projet afin d'obtenir un exécutable. Il faut obtenir une arborescence comme suit :

III-D - Étape 4 : définir l'application à sécuriser

Nous pouvons maintenant réaliser l'interactivité entre Visual Guard et l'application que nous désirons sécuriser. Sur « Dvp », faites un clic droit et choisissez « New » puis « Application » :

Un nouvel assistant est démarré pour vous permettre de définir le type d'application et son langage :

Remarquez bien que vous devez spécifier le chemin de l'ASSEMBLY de votre solution.

Vous retrouvez ainsi dans votre division « Dvp » le nom de votre solution ainsi que de l'administrateur du référentiel.

III-E - Étape 5 : les fichiers de configuration

Il faut maintenant générer la configuration. Visual Guard créera deux fichiers « config » lors de l'exécution de « Generate Visual Guard settings… »

Définissez l'emplacement du fichier de configuration, en général, il se trouve dans le dossier de l'application.

Visual Guard configure deux fichiers et vous signale que les modifications sont effectuées :

Vous devez retrouver les informations suivantes :

IV - Définition des permissions, jeu de permissions, rôles

Une permission, comme son nom l'indique, permet d'autoriser ou de restreindre l'accès à certaines parties de l'application pour l'utilisateur. Une fois l'ensemble des permissions définies, elles seront regroupées en jeux de permissions qui sont un ensemble cohérent d'autorisations devant être associés à un rôle.

Une permission correspond à un ensemble d'actions que Visual Guard devra effectuer sur l'application (désactiver un menu, filtrer une liste, cacher un champ de saisie, etc.). C'est le développeur qui définit les permissions et la liste des actions.

Dans Visual Guard, il existe deux types d'action :

- Properties Action : permet de créer une action qui modifiera les propriétés des objets de votre application ;

- Script Action : permet d'écrire un script (en Visual Basic ou en C#) qui s'exécutera dynamiquement dans l'application.

Pour chaque action, il faut définir :

- pour quelle classe l'action s'exécutera ;

- à quel moment l'action doit s'exécuter : au moment où l'objet est sécurisé (après le constructeur pour les objets automatiquement interceptés comme les fenêtres ou à l'appel de la méthode SetSecurity), ou à n'importe quel événement de la classe (Load, clic…) ;

- les propriétés proprement dites de l'action.

Nous nous limiterons dans ce test aux Properties actions. En ce qui concerne les Script actions, un manuel très complet existe.

IV-A - Étape 1 : les permissions et leurs actions

Nous travaillons ici dans la console Visual Guard au niveau de notre application WinTestVG

1. Création d'un répertoire renfermant les permissions. Dans notre cas, trois répertoires sont créés : Clients, Produits, Employes

2. Création d'une permission

3. Création de toutes les permissions pour chaque type de répertoire

Vous nommez et décrivez le plus clairement possible la permission créée. Imaginez que vous pouvez en réaliser un très grand nombre, soyez donc précis à ce niveau afin de vous faciliter le travail à venir.

Pour chaque permission existante, il faut définir les Properties Action qui leur sont propres. Pour cela, Visual Guard dispose d'un autre assistant :

Remarquez que vous retrouvez les feuilles de votre application ainsi que les feuilles internes à Visual Guard. Les actions seront donc définies sur les éléments contenus dans ces feuilles. En choisissant la feuille FrmClient que nous avons créée précédemment pour afficher les données de notre base de données NorthWind.mdb, nous voyons que nous pouvons accéder à tous les événements de cette feuille.
Sélectionnons l'événement (Default) After loading the security. Ce n'est pas un événement réel de la classe, mais indique à Visual Guard qu'il faut exécuter cette action au chargement de la sécurité pour cette classe.

Nous pouvons maintenant accéder à tous les contrôles placés dans cette feuille et surtout à toutes leurs propriétés.

Vous avez donc compris que le but de Visual Guard est de définir au niveau même des contrôles l'action à déclencher par rapport à l'utilisateur connecté.

Remarquez aussi que, dès qu'une action est définie pour un élément de votre feuille, son nom se colore en rouge dans la liste. Une facilité supplémentaire pour savoir quels éléments sont concernés par des actions

Créez donc les actions propres à chacune des permissions que vous avez déjà établies :

Et voilà toute une série de permissions et leurs actions définies pour une simple petite application. Nous nous sommes limités aux accès du menu ainsi qu'aux boutons à afficher ou non, il est évident que vous pouvez étendre ces actions à tous les autres contrôles de vos feuilles et « jouer » avec toutes les propriétés.

IV-B - Étape 2 : jeu de permission

Voyons maintenant comment les permissions peuvent être regroupées en jeu de permissions (Permission set).

Ces groupes doivent être nommés afin de pouvoir ultérieurement les attribuer facilement à des utilisateurs.

Nous avons donc rassemblé diverses permissions créées auparavant et provenant de nos différents répertoires. Nous voyons dans l'exemple que le « jeu de permissions » nommé « Commercial externe permissions » regroupe plusieurs permissions de base définies aussi bien au niveau des Clients que des Produits et des Employés. Il intègre même le « jeu de permissions » nommé « Commercial interne permissions » qui correspond lui aussi à diverses permissions de base.

Vous constatez qu'à ce rythme-là, on peut créer une telle arborescence de possibilités que le bon choix des noms est impératif et rendra ces regroupements plus aisés à comprendre et exploiter.

Pour ajouter et enlever des permissions, il existe une édition des listes de permissions qui vous facilite grandement la tâche :

Un choix qui vous mène à cette fenêtre de travail :

et vous remarquerez que vous pouvez continuer à faire des regroupements de niveau grâce à l'option « Edit permission set list » qui est, en fait, un « jeu de liste de permissions »

IV-C - Étape 3 : les rôles

Pour créer un rôle, le principe reste toujours le même.
Rappelez-vous la feuille « FrmUserList » que nous avons créée, elle intervient à ce niveau lors de l'exécution de notre application en listant les rôles attribuables à l'utilisateur connecté. À condition, évidemment, que vous définissiez dans la console que tel utilisateur peut choisir entre différents rôles, nous verrons comment faire dans le point suivant.

Commençons par créer nos rôles :

Par exemple, nous avons créé ici, quatre rôles qui pourront être alloués aux utilisateurs comme suit :

Vous pouvez voir que tous les utilisateurs qui pourront choisir le rôle de « l'équipe commerciale 1 » auront dans leur attribution le « jeu de permissions » attribué à ce rôle. En l'occurrence ici, « commercial externe permissions ».

IV-D - Étape 4 : les utilisateurs

Toujours suivant le même principe, il faut maintenant créer nos utilisateurs et leur allouer des droits à chacun aussi bien au niveau des autorisations que de la gestion des dates d'accès.

Remarquez qu'une fenêtre de travail s'ouvre lorsque vous désirez attribuer des rôles à l'utilisateur en cours :

La modification des éléments « Start Date », « End Date » et « Locked » a une incidence précise sur les possibilités de connexion de votre utilisateur.

Il existe aussi la possibilité de « dupliquer » un utilisateur, mais, il faut quand même modifier ses autorisations, son mot de passe et ses coordonnées. Seul regret à émettre, l'impossibilité de créer « à la volée » un groupe d'utilisateur ayant les mêmes privilèges avec génération de leurs mots de passe.

Quand nous avons fini toutes ces manipulations, la console de Visual Guard complètement « étendue » donne ce genre de résultat :

V - Conclusion

Un produit encore très jeune qui doit évoluer (et qui évolue) vers une simplification de la génération des autorisations. Ayant relevé quelques points « améliorables », nous les avons soumis à l'équipe de développement chez Novalys.
Vous pouvez constatez à leur réponse que le produit est en développement constant :

- la duplication des permissions, rôles, utilisateurs avec un minimum de modifications à effectuer.

Novalys : la duplication de tous les items sera possible dans la version 2.0 (courant septembre). À l'heure actuelle, il possible de dupliquer un utilisateur et ses permissions ou de dupliquer une action ;

- une possibilité interactive de tester immédiatement l'effet des autorisations/restrictions sur l'application concernée

Novalys : cela ne pourrait pas se faire sur l'ensemble des actions ou pourrait poser des problèmes dans l'application. Ce qui est envisagé est de pouvoir éventuellement recharger le jeu de permissions courant si son contenu a changé sans avoir à quitter l'application ;

- le « double-emploi » des rôles et des jeux de permissions puisqu'on ne peut avoir qu'un seul jeu de permissions pour un rôle déterminé.

Novalys : dans la plupart des cas, le rôle et le jeu de permission sont semblables et très liés. C'est pourquoi ils semblent redondants. Cependant il existe plusieurs différences :
il est possible avec VG d'avoir un rôle sans jeu de permissions,
il est possible de définir des jeux de permissions à partir d'autres jeux de permissions (une sorte d'héritage de jeu de permissions). Le rôle ne le permet pas.
La notion de rôle correspond à la notion rôle standard dans .Net. La notion de permission telle que définie dans VG n'existe pas dans le framework .net. La notion de jeu de permissions définie dans .Net pour la sécurité d'accès au code n'a pas de lien avec les rôles. C'est pourquoi les deux notions ont été séparées.
Dans la version 2.0 de VG, il sera possible de définir des rôles partagés par plusieurs applications. Dans ce cas, un rôle pourra avoir plusieurs jeux de permissions (un par application).
Une amélioration envisagée pour la version 2.0 serait de créer par défaut un jeu de permissions à chaque création de rôle (et vice versa) et de les lier automatiquement. Ce qui simplifierait la saisie ;

- lors d'une modification dans l'application, il serait bien d'en constater la répercussion immédiate dans la console. Actuellement, il faut faire plusieurs manœuvres.

Novalys : les versions actuelles détectent automatiquement si une assembly a été recompilée et la rechargent automatiquement. Il est possible de vérifier toutes les actions d'une application en sélectionnant avec le clic de droite sur l'item de l'application l'option « Check Action ».
Cette option va vérifier la validité de chaque action et créer une liste d'action en erreur avec un message d'erreur. Dans le cas d'une classe renommée, il suffit de double-cliquer sur l'action en erreur et de sélectionner la classe avec le nouveau nom dans la liste puis de valider la saisie. Ces options n'existaient pas dans votre version ;

- une structure schématique sous forme d'organigramme pourrait être générée à partir des imbrications de permissions, jeu de permissions, liste de rôle…
Soit une structure comme on peut en visualiser dans Access et les liaisons entre tables, soit une exportation dans un document XML de l'arborescence de la console. Le XML ayant tendance à devenir une référence en matière de structuration de données, il semblerait logique de privilégier cette option.

Le produit ne cessant de s'affiner dans les nouvelles versions, il plaira très certainement à un large public. Il n'est plus nécessaire d'avoir des connaissances profondes d'administration réseau pour sécuriser les applications d'une entreprise.

VI - Remerciements

Nous tenons à remercier tout particulièrement et chaleureusement Madame Grolleau, notre contact ainsi que toute l'équipe de développement de Novalys pour leurs précieux conseils et leur disponibilité.

Merci également aux membres de l'équipe Dotnet, notamment Didier Danse pour ses conseils avisés et StormimOn pour sa relecture finale.

VII - Téléchargements

L'application réalisée pour le test : VG.zip (miroir HTTP)

N'oubliez pas que vous ne pourrez pas la tester sans avoir installé la console Visual Guard, le framework 1.1 et Visual Basic 2003.

L'article au format PDF : Visual Guard.pdf (miroir HTTP)