Exercice 02 : Horaire de Garde
Niveau de Difficulté
đą DĂ©butant (GuidĂ© Ă©tape par Ă©tape)
Objectifs Pédagogiques
- Créer un compte utilisateur temporaire avec date d'expiration
- Configurer des horaires d'accÚs restreints (logon hours) pour les gardes médicales
- Ajouter un utilisateur à un groupe spécialisé (Oncall)
- Tester les restrictions temporelles d'Active Directory
Durée Estimée
25-30 minutes
Prérequis
Environnement requis
- Laboratoire MediCare complÚtement configuré
- Groupe GG-MediCare-Medical-Oncall existant
- AccĂšs Administrateur de domaine
- Connaissance de base d'Active Directory Users and Computers
Contexte / Scénario
Scénario réel - SystÚme de garde MediCare
Email du Coordinateur de Garde (Thomas Renard) :
Bonjour IT,
Nous avons besoin d'un compte de garde rotatif pour les urgences nocturnes et les week-ends.
Cahier des charges :
- Nom du compte : "Médecin de Garde" (SamAccountName :
garde)- Mot de passe temporaire :
MediCare2025!- Horaires d'accĂšs strictes : Uniquement de 18h Ă 8h du matin + week-ends 24/7
- Expiration du compte : 7 jours (renouvellement hebdomadaire)
- Groupe d'accĂšs : GG-MediCare-Medical-Oncall (accĂšs systĂšme patients urgents)
Le compte sera utilisé sur la station URGENCES-WS01 pour les consultations de nuit.
Merci! Thomas Renard - Coordinateur de Garde
Votre mission : Créer ce compte avec les restrictions horaires appropriées.
Tùches à Réaliser
Ătape 1 : CrĂ©er le compte utilisateur "MĂ©decin de Garde"
-
Ouvrir Active Directory Users and Computers (
dsa.msc) -
Naviguer vers :
maxtec.be > MediCare > Medical > Users -
Clic droit sur Users > New > User
-
Configurer le nouveau compte :
- First name :
Médecin - Last name :
de Garde - Full name :
Médecin de Garde - User logon name :
garde@maxtec.be -
Cliquer Next
-
Configurer le mot de passe :
- Password :
MediCare2025! - Confirm password :
MediCare2025! - Décocher "User must change password at next logon"
- Cocher "User cannot change password" (compte partagé)
- Cocher "Password never expires" (compte de service)
- Cliquer Next > Finish
Résultat attendu
Le compte garde apparaĂźt dans la liste des utilisateurs de l'OU Medical > Users.
Ătape 2 : Configurer la date d'expiration du compte
-
Dans Active Directory Users and Computers, double-cliquer sur Médecin de Garde
-
Onglet Account
-
Section Account expires :
- Sélectionner End of: (radio button)
- Cliquer sur le calendrier et sélectionner la date dans 7 jours
-
Exemple : Si aujourd'hui est le 5 octobre, sélectionner le 12 octobre
-
Cliquer Apply
Résultat attendu
Le compte expirera automatiquement dans 7 jours.
Ătape 3 : Configurer les horaires d'accĂšs (Logon Hours)
Restriction horaire complexe
Nous devons autoriser l'accĂšs uniquement :
- Lundi Ă Vendredi : 18h00 - 23h59 + 00h00 - 08h00
- Samedi et Dimanche : 24h/24 (00h00 - 23h59)
-
Toujours dans les propriétés de Médecin de Garde, onglet Account
-
Cliquer sur le bouton Logon Hours...
-
Par défaut, tous les créneaux sont autorisés (bleu)
-
Bloquer d'abord toutes les heures de travail normales (8h-18h, lundi-vendredi) :
- Lundi : Cliquer et glisser de 8 AM à 6 PM (devient blanc/bloqué)
-
Répéter pour Mardi, Mercredi, Jeudi, Vendredi
-
Vérifier que les créneaux suivants sont autorisés (bleu) :
- Lundi-Vendredi : 18h (6 PM) â 8h (8 AM le lendemain)
-
Samedi-Dimanche : 0h â 23h (toute la journĂ©e)
-
Cliquer OK > Apply > OK
Résultat attendu
La grille des horaires montre :
- Lundi-Vendredi : Bleu de 18h Ă 8h (+ plage nocturne), Blanc de 8h Ă 18h
- Samedi-Dimanche : EntiĂšrement bleu (24/24)
Ătape 4 : Ajouter le compte au groupe GG-MediCare-Medical-Oncall
-
Dans Active Directory Users and Computers, naviguer vers :
MediCare > Medical > Groups -
Double-cliquer sur GG-MediCare-Medical-Oncall
-
Onglet Members
-
Cliquer Add...
-
Dans le champ Enter the object names to select, taper :
garde -
Cliquer Check Names (le nom doit devenir souligné : Médecin de Garde)
-
Cliquer OK > Apply > OK
Résultat attendu
Le compte Médecin de Garde apparaßt dans la liste des membres du groupe Oncall.
Ătape 5 : Configurer les propriĂ©tĂ©s additionnelles
-
Retourner aux propriétés de Médecin de Garde
-
Onglet General :
- Description :
Compte de garde rotatif - Urgences nocturnes et week-ends - Office :
Salle des Urgences -
Telephone number :
+32-2-555-URGE -
Onglet Organization :
- Title :
Médecin de Garde -
Department :
Medical -
Cliquer Apply > OK
Résultat attendu
Les propriétés du compte sont complÚtes et documentées.
Ătape 6 : VĂ©rification PowerShell du compte créé
-
Ouvrir PowerShell ISE en tant qu'Administrateur
-
Exécuter le script de vérification suivant :
# Vérification du compte de garde
Import-Module ActiveDirectory
Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host "VĂRIFICATION COMPTE MĂDECIN DE GARDE" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
# Obtenir le compte
$garde = Get-ADUser -Identity garde -Properties AccountExpirationDate, Description, Title, Department, LogonHours
Write-Host "`nâ Compte trouvĂ©: $($garde.Name)" -ForegroundColor Green
Write-Host " SamAccountName: $($garde.SamAccountName)" -ForegroundColor Gray
Write-Host " Description: $($garde.Description)" -ForegroundColor Gray
Write-Host " Titre: $($garde.Title)" -ForegroundColor Gray
Write-Host " Département: $($garde.Department)" -ForegroundColor Gray
# Vérifier expiration
if ($garde.AccountExpirationDate) {
$daysUntilExpiry = ($garde.AccountExpirationDate - (Get-Date)).Days
Write-Host "`nâ Expiration configurĂ©e:" -ForegroundColor Green
Write-Host " Date: $($garde.AccountExpirationDate)" -ForegroundColor Gray
Write-Host " Expire dans: $daysUntilExpiry jours" -ForegroundColor Yellow
} else {
Write-Host "`nâ ERREUR: Aucune date d'expiration configurĂ©e!" -ForegroundColor Red
}
# Vérifier groupe Oncall
$oncallGroup = Get-ADGroupMember -Identity "GG-MediCare-Medical-Oncall" | Where-Object {$_.SamAccountName -eq "garde"}
if ($oncallGroup) {
Write-Host "`nâ Membre du groupe GG-MediCare-Medical-Oncall" -ForegroundColor Green
} else {
Write-Host "`nâ ERREUR: Pas membre du groupe Oncall!" -ForegroundColor Red
}
# Vérifier horaires d'accÚs
if ($garde.LogonHours) {
Write-Host "`nâ Horaires d'accĂšs configurĂ©s (Logon Hours)" -ForegroundColor Green
Write-Host " (Détails visibles dans l'interface graphique)" -ForegroundColor Gray
} else {
Write-Host "`nâ ïž AVERTISSEMENT: Horaires d'accĂšs non configurĂ©s (accĂšs 24/7)" -ForegroundColor Yellow
}
Résultat attendu
Le script affiche toutes les propriétés du compte avec des messages de succÚs en vert.
Ătape 7 : Tester les restrictions horaires
Test en conditions réelles
Pour tester pleinement cette configuration, vous devriez :
- Tester dans les horaires autorisés (18h-8h ou week-end)
- Tester hors horaires (8h-18h en semaine)
Méthode de test :
- Si vous ĂȘtes dans les horaires autorisĂ©s (soir/nuit/week-end) :
# Test de connexion (simulation)
runas /user:maxtec\garde "powershell -NoExit -Command 'Write-Host Connexion autorisée! -ForegroundColor Green'"
- Si vous ĂȘtes hors horaires autorisĂ©s (journĂ©e de semaine) :
- La tentative de connexion devrait échouer avec le message :
- "Your account has time restrictions that prevent you from signing in at this time."
Simulation de test
Si vous ne pouvez pas attendre les horaires de garde, vous pouvez :
- Temporairement autoriser toutes les heures pour tester que le compte fonctionne
- Vérifier via PowerShell que les LogonHours sont bien définies
- Consulter l'interface graphique pour voir la grille horaire
Ătape 8 : Documentation pour le coordinateur de garde
- Créer un fichier de documentation dans C:\Labos\MediCare\Garde_Instructions.txt :
# Créer fichier d'instructions
$instructions = @"
========================================
COMPTE DE GARDE - INSTRUCTIONS
========================================
Compte utilisateur : garde@maxtec.be
Mot de passe : MediCare2025!
HORAIRES D'ACCĂS AUTORISĂS:
- Lundi à Vendredi : 18h00 - 08h00 (soirée + nuit)
- Samedi et Dimanche : 24h/24
EXPIRATION DU COMPTE:
Le compte expire dans 7 jours et doit ĂȘtre renouvelĂ© chaque semaine.
STATION DE TRAVAIL:
Utilisez le poste URGENCES-WS01 pour les consultations nocturnes.
ACCĂS SYSTĂME:
Le compte donne accĂšs aux dossiers patients urgents via le groupe Oncall.
Pour renouveler le compte, contactez l'équipe IT.
========================================
Généré le: $(Get-Date -Format "yyyy-MM-dd HH:mm")
========================================
"@
New-Item -Path "C:\Labos\MediCare" -ItemType Directory -Force | Out-Null
$instructions | Out-File -FilePath "C:\Labos\MediCare\Garde_Instructions.txt" -Encoding UTF8
Write-Host "`nâ
Instructions créées dans C:\Labos\MediCare\Garde_Instructions.txt" -ForegroundColor Green
notepad "C:\Labos\MediCare\Garde_Instructions.txt"
Résultat attendu
Le fichier d'instructions s'ouvre automatiquement dans Notepad pour révision.
Vérification de la Réussite
Commandes PowerShell de Vérification
Exécutez le script de vérification automatique :
C:\Labos\MediCare\scripts\verification\verif_exercice_02.ps1
CritÚres de Réussite
- Le compte garde existe dans
OU=Users,OU=Medical,OU=MediCare - Le compte a une date d'expiration dans 7 jours
- Les horaires d'accÚs (Logon Hours) sont configurés (18h-8h + week-ends)
- Le compte est membre du groupe GG-MediCare-Medical-Oncall
- Les propriétés Description, Title, Department sont renseignées
- Le fichier d'instructions existe dans *C:\Labos\MediCare*
Solution ComplĂšte (Pour Instructeur)
Méthode GUI
Suivre les étapes 1 à 7 décrites dans la section "Tùches à Réaliser" ci-dessus.
Méthode PowerShell
# === SCRIPT COMPLET - Création Compte de Garde ===
Import-Module ActiveDirectory
# Variables
$ouPath = "OU=Users,OU=Medical,OU=MediCare,DC=maxtec,DC=be"
$expirationDate = (Get-Date).AddDays(7)
# 1. Créer le compte utilisateur
Write-Host "`n[ĂTAPE 1] CrĂ©ation du compte MĂ©decin de Garde..." -ForegroundColor Cyan
try {
$password = ConvertTo-SecureString "MediCare2025!" -AsPlainText -Force
New-ADUser `
-Name "Médecin de Garde" `
-GivenName "Médecin" `
-Surname "de Garde" `
-SamAccountName "garde" `
-UserPrincipalName "garde@maxtec.be" `
-Path $ouPath `
-AccountPassword $password `
-Enabled $true `
-PasswordNeverExpires $true `
-CannotChangePassword $true `
-AccountExpirationDate $expirationDate `
-Description "Compte de garde rotatif - Urgences nocturnes et week-ends" `
-Title "Médecin de Garde" `
-Department "Medical" `
-Office "Salle des Urgences" `
-OfficePhone "+32-2-555-URGE"
Write-Host " â Compte 'garde' créé avec succĂšs" -ForegroundColor Green
Write-Host " Expiration: $expirationDate" -ForegroundColor Gray
} catch {
Write-Host " â ERREUR: $($_.Exception.Message)" -ForegroundColor Red
}
# 2. Configurer les horaires d'accĂšs (Logon Hours)
Write-Host "`n[ĂTAPE 2] Configuration des horaires d'accĂšs..." -ForegroundColor Cyan
# Créer le tableau d'heures (21 bytes, 168 bits pour 7 jours x 24 heures)
# Chaque octet représente 8 heures, chaque bit = 1 heure
# 1 = autorisé, 0 = bloqué
# Ordre: Dimanche, Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi
# Configuration simplifiée: Autoriser 18h-8h en semaine + 24/7 week-end
# Cette configuration est complexe en PowerShell, utilisation de la GUI recommandée
Write-Host " â ïž Les horaires d'accĂšs doivent ĂȘtre configurĂ©s manuellement via GUI" -ForegroundColor Yellow
Write-Host " Active Directory Users > garde > Account > Logon Hours" -ForegroundColor Gray
Write-Host " Bloquer: Lundi-Vendredi 8h-18h" -ForegroundColor Gray
Write-Host " Autoriser: Tout le reste (18h-8h + week-ends)" -ForegroundColor Gray
# NOTE TECHNIQUE: La configuration via PowerShell nécessite manipulation de bits
# Pour référence instructeur:
# $logonHours = [byte[]]::new(21)
# [Manipulation complexe des bits pour chaque tranche horaire]
# Set-ADUser -Identity garde -Replace @{logonHours = $logonHours}
# 3. Ajouter au groupe Oncall
Write-Host "`n[ĂTAPE 3] Ajout au groupe Oncall..." -ForegroundColor Cyan
try {
Add-ADGroupMember -Identity "GG-MediCare-Medical-Oncall" -Members garde
Write-Host " â AjoutĂ© au groupe GG-MediCare-Medical-Oncall" -ForegroundColor Green
} catch {
Write-Host " â ERREUR: $($_.Exception.Message)" -ForegroundColor Red
}
# 4. Créer fichier d'instructions
Write-Host "`n[ĂTAPE 4] CrĂ©ation du fichier d'instructions..." -ForegroundColor Cyan
$instructions = @"
========================================
COMPTE DE GARDE - INSTRUCTIONS
========================================
Compte utilisateur : garde@maxtec.be
Mot de passe : MediCare2025!
HORAIRES D'ACCĂS AUTORISĂS:
- Lundi à Vendredi : 18h00 - 08h00 (soirée + nuit)
- Samedi et Dimanche : 24h/24
EXPIRATION DU COMPTE:
Le compte expire le $($expirationDate.ToString("yyyy-MM-dd")) et doit ĂȘtre renouvelĂ©.
STATION DE TRAVAIL:
Utilisez le poste URGENCES-WS01 pour les consultations nocturnes.
ACCĂS SYSTĂME:
Le compte donne accĂšs aux dossiers patients urgents via le groupe Oncall.
Pour renouveler le compte, contactez l'équipe IT.
========================================
Généré le: $(Get-Date -Format "yyyy-MM-dd HH:mm")
========================================
"@
New-Item -Path "C:\Labos\MediCare" -ItemType Directory -Force | Out-Null
$instructions | Out-File -FilePath "C:\Labos\MediCare\Garde_Instructions.txt" -Encoding UTF8
Write-Host " â Instructions créées: C:\Labos\MediCare\Garde_Instructions.txt" -ForegroundColor Green
Write-Host "`nâ
Configuration du compte de garde terminée!" -ForegroundColor Green
Write-Host "`nâ ïž ACTION MANUELLE REQUISE:" -ForegroundColor Yellow
Write-Host " Configurez les Logon Hours via Active Directory Users and Computers" -ForegroundColor Yellow
Points Clés à Retenir
Concepts importants
-
Comptes temporaires : Utiliser
AccountExpirationDatepour les comptes à durée limitée (stagiaires, gardes, consultants) -
Logon Hours : Permet de restreindre les heures de connexion selon les besoins métier (gardes médicales, shifts)
-
Comptes partagés : Configurer
CannotChangePasswordpour les comptes utilisés par plusieurs personnes -
Groupes spécialisés : Le groupe Oncall permet un accÚs distant/urgence sans donner tous les droits admin
-
Documentation : Toujours fournir des instructions claires pour les utilisateurs finaux
Dépannage (Erreurs Courantes)
| Erreur Possible | Cause | Solution |
|---|---|---|
| "User already exists" | Compte garde existe déjà | Supprimer l'ancien compte ou utiliser Remove-ADUser |
| "Password does not meet requirements" | Politique de mot de passe stricte | Vérifier complexité minimale (12 caractÚres dans MediCare) |
| "Cannot find group Oncall" | Nom de groupe incorrect | Vérifier avec Get-ADGroup -Filter {Name -like "*Oncall*"} |
| Logon Hours non sauvegardées | Erreur de manipulation GUI | Cliquer bien sur OK (pas Cancel) dans chaque dialogue |
| Expiration non visible | Mauvaise date sélectionnée | Vérifier avec Get-ADUser garde -Properties AccountExpirationDate |
Exercice Suivant Suggéré
Progression pédagogique
Une fois cet exercice maßtrisé, passez à :
Exercice 03 : Audit d'AccÚs Médical - Activer l'audit des fichiers et générer un rapport de conformité RGPD.