Publication d’une charte informatique

L’utilisation de matériel informatique professionnel au sein de l’entreprise peut être lié à l’acceptation par les utiliateurs d’une charte décrivant leurs droits et leurs devoirs.

Lorqu’elle existe, cette charte est un guide de bonne pratiques rarement consigné par voie informatique. C’est tout l’objet de ce billet de blog ou nous allons utiliser les fonctionnalités de l’annuaire Active Directory associées à un peu de scripting PowerShell et de WinForms pour pallier à cette lacune.

Scénario d’usage

Nous disposons :

D’un enviromment Active Directory

  • De postes de travail joints au domaine et capables d’éxecuter du PowerShell.
  • D’un serveur Web
  • D’une charte informatique au format html J

Nous allons étendre le schéma Active Directory, en ajoutant aux objets de type « Utilisateur » un attribut supplémentaire « AgreePolicyDate », de type « Temps généralisé », utilisé pour stocker la date et l’heure de l’acceptation de la charte.

La charte sera présentée à l’ensemble des utilisateurs à l’ouverture de session via un script de login écrit en PowerShell présentant un formulaire « Winforms » contenant un navigateur WEB et un compteur de temps.

Si l’utilisateur n’a pas déjà validé la charte (lecture de l’attribut PolicyAgreeDate), alors celle-ci lui est présentée. Dans le cas contraire, la session s’ouvre normalement.

La page « Charte Informatique » est présentée dans le navigateur Web durant 5 minutes au maximum, pendant lesquelles l’utilisateur peut :

  • Accepter la charte    è la session se poursuit normalement, l’attribut « AgreePolicyDate » est mis à jour avec la date et l’heure
  • Refuser la charte     è La session se ferme
  • Ne rien faire        è La session se ferme au dela des 5 minutes imparties, (le décompte du temps restant est affiché sur le formulaire)

Seules ces 3 méthodes permettent de fermer le formulaire. Les boutons de fermeture de fenêtre n’étant pas présents.

L’expérience utilisateur se présentera sous cette forme

Etape 1 : extension du schéma

Sur le contrôleur de domaine disposant du rôle « Maitre de schéma », nous allons enregistrer si ce n’est fait la DLL de gestion du schéma :

Génération d’un OID Racine à l’aide du script « OIDGEN.VBS ».

Le script OIDGEN.VBS est disponible en téléchargement sur le site de Microsoft : http://gallery.technet.microsoft.com/scriptcenter/56b78004-40d0-41cf-b95e-6e795b2e8a06

Il permet la génération d’OIDs uniques dont on est certain que les extensions de schéma futures n’utiliseront pas. Nous lançons ce script pour obtenir un OID racine, que nous utiliserons par la suite pour la création des attributs personnalisés.

L’OID racine généré est : 1.2.840.113556.1.8000.2554.20101.52204.36873.17922.48872.2343985.8397790

Création de l’attribut « AgreePolicyDate »

Une fois l’OID racine obtenu, nous utilisons la console de schéma Active Directory pour créer l’attribut AgreePolicyDate

La création d’un nouvel attribut est une opération irréversible :

Renseigner les 3 premiers champs et choisir une syntaxe de type « Generalized Time »

L’OID affecté à cet attribut est le :

1.2.840.113556.1.8000.2554.20101.52204.36873.17922.48872.2343985.8397790.1.1

Soit :

1.2.840.113556.1.8000.2554.20101.52204.36873.17922.48872.2343985.8397790, qui représente l’OID racine précédemment obtenu via OIDGEN.VBS.

Suffixé de la valeur 1, qui représente les attributs que nous allons générer

Suffixé de la valeur 1, qui représente le numéro de ce premier attribut

A cette étape, nous créons une nouvelle clase d’objet de type Auxilliaire, nommée «xxxUser » (remplacer xxx par le nom de votre organisation). L’objectif est d’associer cette classe d’objet aux objets utilisateurs afin de ne pas avoir a ajouter directement les attributs précédemment créés à a classe d’objets « User ».

Cette opération doit également être effectuée depuis la console de schéma Active directory :

La création d’une classe d’objet est une opération irréversible :

Pour la création de la classe d’objet, on renseigne les 3 premiers champs et on selectionne une classe de type auxilliaire :

L’OID affecté à cette classe est le :

1.2.840.113556.1.8000.2554.20101.52204.36873.17922.48872.2343985.8397790.2.1

Soit :

1.2.840.113556.1.8000.2554.20101.52204.36873.17922.48872.2343985.8397790 qui représente l’OID racine précédemment obtenu via OIDGEN.VBS.

Suffixé de la valeur 2, qui représente les classes d’objets que nous allons générer

Suffixé de la valeur 1, qui représente le numéro de cette première classe d’objet.

Nous affectons ensuite à la classe d’objets l’attribut AgreePolicyDate précédemment créé, toujours depuis la console de schéma Active directory, en effectuant un clic droit sur la classe d’objets « User » et en choisissoant l’option « Properties » :

Nous sélectionnons l’onglet « RelationShip » et ajoutons notre classe auxiliaire « AgreePolicyDate »:

Nous sélectionnons la classe auxiliaire « xxxUser » :

La classe auxiliaire « xxxUser » est a présent associée à la classe d’objets « User » :

Pou s’assurer que les attributs précédemment créés sont bien disponibles pour la classe d’objets « User », un petit tour dans « ADSIEDIT.MSC » pour vérifier que les attributs sont bien présents sur un objet utilisateur quelconque :

Et voila notre extension de schéma terminée !!

Etape 2 : délégation de contrôle sur les attributs créés.

Pour permettre aux utilisateurs de modifier la propriété de notre attribut AgreePolicyDate, il est nécessaire de mettre en place une délégation d’administration leur y autorisant l’accès en écriture

La délégation se fait depuis la console « Utilisateurs et Ordinateurs Active Directory », et sur l’unité organisationnelle détenant les comptes d’utilisateurs :

Clic droit sur l’OU appropriée pour lancer l’assistant de délégation :

On veut que chaque utilisateur puisse modifier l’attribut rattaché à son compte, l’entité « SELF » (soi même) doit être choisie :


Il s’agit d’une délégation personalisée :

La délégation porte sur les objets “Utilisateurs” uniquement:

Seules l’attribut AgreePolicyDate doit être impacté par les autorisations de lecture / écriture :


C’est fini, chaque utilisateur a désormais la possibilité de lire / écrire sur cet attribut pour son propre compte.

Etape 3 : mise au point du script Accept-EULA.PS1

Le script Accept-EULA.PS1 présente un formulaire « Winforms » contenant un navigateur WEB et un compteur de temps. Ce script sera lancé à l’ouverture de session par GPO.

Si l’utilisateur n’a pas déjà validé la charte (lecture de l’attribut cpaPolicyAgreeDate), alors celle-ci lui est préssentée. Dans le cas contraire, la session s’ouvre normalement.

La page « Charte Informatique » est présentée dans le navigateur Web durant 5 minutes au maximum, pendant lesquelles l’utilisateur peut :

  • Accepter la charte    è la session se poursuit normalement
  • Refuser la charte     è La session se ferme
  • Ne rien faire        è La session se ferme au dela des 5 minutes imparties

Seuls ces 3 méthodes permettent de fermer le formulaire. Les boutons de fermeture de fenêtre n’étant pas présents.

Les plus malins pourront lancer le gestionnaire de tâches leur permettant de fermer l’application et faire comme si de rien n’était. Si ce point est rédibitoire, on peut activer le traitement des scripts d’ouverture de session en mode « Synchrone » (pas d’interface utilisateur avant la fin des scripts et empêche toute action tant que ces derniers ne sont pas terminés) mais il rallonge la durée de l’ouverture de session, à choisir donc entre la sécurité ou la rapidité.

Contenu du script : AcceptEula

 

Lancement du script par GPO

La GPO de lancement du script doit être attribuée aux utilisateurs.

Elle doit détenir les paramètres de scripts suivants :

Script :

%windir%\system32\WindowsPowerShell\v1.0\Powershell.exe

Paramètres

-ExecutionPolicy Bypass -sta -WindowStyle Hidden -F “.\Accept-EULA.ps1”

Le fichier Accept-EULA.PS1 doit se trouver dans le dossier des scripts d’ouverture de session utilisateur de la GPO

Experience utilisateur

Le formulaire suivant est présenté a toute personne executant le script et n’ayant pas préalablement validé la charte:

Le contenu du navigateur Web est celui ciblé dans le script au travers de la propriété url de la variable webbrowser :



$webBrowser.Url =
New-Object
System.Uri(
http://intranet.company.fr/charte_info.html)

Le navigateur Web prend en charge les contenus compatibles IE6 / IE7. Les pages doivent être enregistrés sous cette contrainte

3 réflexions au sujet de « Publication d’une charte informatique »

  1. Bonjour,

    Merci pour cet article très intéressant.
    Serait-il possible d’avoir les sources du script Accept-EULA.ps1?

    1. Désolé, le lien du script avait du sauter lors de la dernière publication. Il se trouve à présent dans l’article et doit bien entendu être adapté à chaque usage (les informations propres au site ou cela a été mis en production ont été tronquées ou modifiées).

      Merci de votre commentaire et bons tests.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *