Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

Verification de l’expiration des certificats d’un serveur ADCS: Check_ADCS_Certificat_Expiration

 

Le script ci-dessous utilise le module powershell PSPKI pour determiner les certificats arrivant a expiration dans $offset jours. (60 par defaut) et alerte si il y a au moins un certificat concernés.

Le module PSPKI est disponible sur le lien https://pspki.codeplex.com/

#SCRIPT DE RAPPORT DES CERTIFICATS ARRIVANT A EXPIRATION # ! : La variable $computername doit contenir imperativement le FQDN du serveur ADCS #Parametres param( [string]$computername = "$env:computername.$env:userdnsdomain", $offset = 60, $WarnNbCert = 1 ) $Scriptname = "Check_ADCS_Certificat_Expiration" #Verification de l'existence d'une source ayant le nom du script dans l'eventlog Application pour loguer certains events Function NewEventSource { if(!(Test-Path "HKLM:\SYSTEM\CurrentControlSet\services\eventlog\Application\$Scriptname")) { New-EventLog -LogName "Application" -Source $Scriptname } } #Log du lancement du script NewEventSource Write-EventLog -LogName application -Source $Scriptname -EntryType Information -EventId 1002 -Message "Execution du script $Scriptname" #Write-Host Write-Host “Rapport des certificats délivrés par $computername arrivant a expiration dans $offset jours” -ForegroundColor “Yellow” #Import PSPKI PowerShell module if(Get-Module -Name PSPKI | Where-Object { $_.name -eq “PSPKI” }) { Write-Host “PSPKI PowerShell module already imported…” -ForegroundColor “Yellow” } else { Write-Host “Importing PSPKI PowerShell module…” -ForegroundColor “Yellow” try { Import-Module -Name PSPKI } catch { write-host "Erreur lors de l'import du module PSPKI - Verifier que le module est disponible" } } Write-Host Write-Host $caname = $computername.ToLower() $todaysdate = Get-Date $count = Get-CertificationAuthority $caname | Get-IssuedRequest -Filter “NotAfter -ge $todaysdate”, “NotAfter -le $((Get-Date).AddDays($offset))” | Measure-Object | Select-Object -Property Count -ExpandProperty count $countdisplay = "Nombre de certificats délivrés par $computername arrivant a expiration dans $offset jours: $count `n" write-host -BackgroundColor white -ForegroundColor Blue $countdisplay $display = $(Get-CertificationAuthority $caname | Get-IssuedRequest -Filter "NotAfter -ge $todaysdate", "NotAfter -le $((Get-Date).AddDays($offset))") write-host "DETAILS:" $display $result = $display | foreach {$_.CommonName ; ":" ; $_.NotAfter ; " **** "} # Ajout a l'eventlog if ($count -ge $WarnNbCert) { NewEventSource Write-EventLog -LogName application -Source $Scriptname -EntryType Warning -EventId 1001 -Message "$countdisplay (CommonName : NotAfter) `n $result" } Else { NewEventSource Write-EventLog -LogName application -Source $Scriptname -EntryType Information -EventId 1000 -Message "$countdisplay" }

Azure AD Connect : Retour d’expérience

Introduction

Azure AD Connect est devenu, depuis quelques mois, le nouvel outil de synchronisation d’identité entre une infrastrcture Active Directory On-Premise et Azure Active Directory. Ce dernier doit remplacé les outils existants (Dirsync et Azure AD Sync) en consolidant les fonctionnalités de chacun de ceux-ci. Aussi, il apporte de nombreuses fonctionnalités comme la synchronisation des attributs étendus, la synchronisation Azure AD vers Active Directory On premise des groupes ou encore une interface de monitoring Azure AD Connect Health. Malheureusement, toutes ces nouvelles fonctionnalités nécessitent de souscrire à la version basic voir premium d’Azure Active Directory.

Du point de vue de l’installation, Microsoft à simplifié les choses pour les personnes disposant déjà d’un des outils précédemment cités. Le but de cet article est de partager un retour d’expérience sur la mise à jour de Dirsync vers Azure AD Connect au travers d’un guide pas à pas puis de détailler les changements entre les deux outils.

Azure AD Connect peut être téléchargé via le lien suivant :

https://www.microsoft.com/en-us/download/details.aspx?id=47594

Mise à jour

Lors du lancement du programme d’installation, il est d’abord demandé d’accepter la licence utilisateur.

Install 02

Il s’en suit une analyse du serveur existant afin de valider que la configuration Dirsync est compatible avec le processus de migration Azure AD Connect. Si celle-ci n’est pas compatible, il faudra alors réaliser une installation complète du produit. Cela implique de reconfigurer intégralement l’outil (comptes, base de données, règles de filtrage, ….). Plusieurs causes peuvent être responsables de la non prise en charge de la migration :

  • Un trop grand nombre d’objets à synchroniser (+ de 50000)

  • L’utilisation d’une DLL d’extension personnalisée. Ces dernières permettent d’étendre les fonctionnalités de synchronisation en réalisant du filtrage plus poussé ou une transformation sur certains attributs. Il s’agit d’un concept hérité de Forefront Identity Manager (FIM). En effet Azure AD Connect, comme ses prédécesseurs est toujours basé sur cet outil.

  • La suppression d’attributs dans les règles de synchronisation.

Install 03

Lorsque l’analyse est terminée, il faut indiquer le chemin d’installation ainsi que les informations d’accès à la base de données et éventuellement un compte de service. Comme pour Dirsync, ce dernier doit posséder les droits « Replicate Directory Changes » au niveau du domaine.

Install 04

Le programme installe ensuite les prérequis.

Install 05

Les informations (login/mot de passe) du compte utilisé par Dirsync pour accéder à Azure Active Directory doivent être renseignées.

Install 06

Puis, il est nécessaire d’indiquer un compte Active Directory ayant les droits administrateur de l’entreprise.

Install 07

La dernière étape consiste à choisir si l’on a activé le mode hybride et s’il faut démarrer la synchronisation dès la fin de l’installation. Ne pas cocher la case permet néanmoins de valider que la configuration a été correctement reportée depuis Dirsync.

Install 08

Enfin, l’installation s’exécute (une dizaine de minutes).

Install 10

Revue post installation

Une fois l’installation terminée, DirSync est désinstallé et est remplacé par Azure AD Connect. De nouvelles icônes apparaissent :

  • Azure AD Connect : Permet de voir et configurer les paramètres principaux de l’outil

  • Synchronization Rules Editor : Cet utilitaire sert à la configuration des règles de filtrages et de transferts d’attributs et ne se trouvent plus dans la console de gestion de FIM.

  • Synchronization Service : Cet icône mène à la console de FIM contenant les connecteurs de gestion des identités qui a été renommé pour l’occasion. Comme pour Dirsync, il y a deux connecteurs :

    • Active Directory on premise / Azure AD Connect : import uniquement (sauf en cas d’utilisation du writeback avec Azure AD Premium)

    • Azure AD Connect / Azure Active Directory

  • Synchronisation Service Key Management Utility : Utilitaire de gestion de la clé encryptant les données dans Azure AD Connect

NB : Elles sont identiques à celles présentes dans Azure Active Directory Sync.

Menu 01

De plus, comme pour Dirsync, une tâche planifiée nommée Azure AD Sync Scheduler est créée. Elle s’exécute toutes les trois heures (mais il est bien sûr possible de changer ce comportement).

Task 01

Revue de la configuration

Azure AD Connect :

L’utilitaire Azure AD Connect permet plusieurs options :

  • Revue de la configuration actuel

  • Configuration des options de synchronisation

  • Mise à jour du connecteur

  • Gestion du mode staging

Configure 01

La première option permet simplement une revue de la synchronisation mise en place avec une visualisation des annuaires synchronisés et des options activées (synchronisation du mot de passe, des attributs étendues, mapping de l’attribut servant d’UPN dans Office 365). En effet depuis Windows Azure Active Directory Sync, il est possible d’implémenter une synchronisation multi-forêt. Aussi, une synchronisation vers des annuaires différents d’Active Directory est prévue par Microsoft mais cette fonctionnalité n’est pas encore implémentée.

NB : L’option de filtrage par groupe n’est disponible que pour une nouvelle installation et n’est conseillé par Microsoft que dans le cadre d’un déploiement progressif.

Configure 02

Les trois autres options nécessitent d’indiquer un compte administrateur Azure Active Directory  afin de modifier certaines options de configuration.

Configure 03

Le second onglet offre la possibilité d’ajouter d’autres annuaires Active Directory pour la synchronisation.

Configure 04

Il permet aussi d’activer ou désactiver certaines options comme la gestion du mode hybride d’Exchange ou l’écriture inversée (Azure AD vers Active Directory On premise).

Configure 05

L’actualisation du connecteur peut être utilisée après une mise à jour de votre schéma Active Directory. Ainsi, Azure AD Connect pourra mettre à jour ses connecteurs en cas de changement.

Enfin, la dernière option concerne l’activation du mode staging. Lorsqu’il est activé, aucun changement n’est synchronisé/exporté vers Active Directory (si le Writeback est activé) ou vers Office 365. Cela permet de valider sa configuration avant d’appliquer un changement.

Configure 06

Synchronization Service :

Il s’agit de la console Synchronisation Service de Forefront Identity Management. Cependant pour chaque connecteur (appelé Management Agent), les options de configuration sont bien plus légères que dans Dirsync. Il n’est possible de configurer que les paramètres de connexion à l’annuaire, les attributs accessibles et le filtrage par unité d’organisation (via le bouton Container de l’onglet Configure Directory Partitions). En effet, la configuration des filtres par attribut et des règles de jointure d’attribut s’effectue via l’outil présenté dans le chapitre suivant. Cette nouveauté était apparue avec Azure Active Directory Sync.

Post Install 01

Synchronization Rules Editor :

Cet outil  change la manière dont sont gérées les règles de synchronisation. Cette gestion ne s’effectue plus au sein de la console de synchronisation héritée de Forefront Identity Manager. Néanmoins, cette nouveauté permet d’utiliser la syntaxe déclarative de FIM qui n’était utilisable qu’au travers de FIM portal (et qui nécessite des CAL pour chaque utilisateur géré par ce système). Ce langage donne la possibilité d’effectuer des opérations simples sans passer par du développement en C# ou VB.Net. Les deux liens ci-dessous expliquent la syntaxe et la détaille :

L’utilitaire offre une vision globale des règles entrantes (import depuis Active Directory On premise ou Azure AD) et sortantes (export vers Active Directory On premise ou Azure AD). Toutes ces règles ont une priorité (la plus faible étant prioritaire sur les autres). Si ces dernières ont un poids supérieur à 100 alors elles correspondent aux règles par défaut de l’outil.

Configure 07

Nous remarquons sur l’image précédente qu’il y a une règle avec une priorité de 99. Il s’agit d’une règle personnalisée reprise lors de la migration de Dirsync. Celle-ci filtre les utilisateurs via un attribut Active Directory. On peut définir le type d’objet source (ici l’annuaire Active Directory On premise) et le type d’objet dans la Metaverse, c’est-à-dire dans la base de données d’Azure AD Connect. Enfin, on peut redéfinir la priorité de la règle. 

Configure 08

L’onglet suivant permet de définir le ou les attributs utilisé(s) pour filtrer les objets (ici des utilisateurs mais cela peut aussi s’appliquer à des groupes par exemple). La définition du filtrage se fait de la même façon que sur Dirsync (les objets satisfaisants la règle étant exclus de la synchronisation).

Configure 09

Ensuite, il est possible de définir une règle de jointure entre un objet provenant de la source (annuaire Active Directory ou Azure Active Directory) et la metaverse. Cette jointure s’effectue sur un attribut. Dans le cas de notre règle de filtrage, il n’existe pas de règle de jointure. Cependant il n’est pas nécessaire d’en ajouter.

Configure 10

En effet, si l’on ouvre la règle avec la priorité 100 (In From AD – User Join), on remarque qu’une règle de jointure existe déjà pour les objets de types utilisateurs.

Configure 12

Enfin, on définit les valeurs transmises depuis la source vers la metaverse. Elles peuvent être de trois types :

  • une valeur constante

  • un attribut source

  • un attribut source transformé via la syntaxe déclarative

Dans le cadre d’un filtrage par attribut pour la synchronisation, les objets non synchronisés doivent posséder l’attribut cloudFiltered avec la valeur True dans la metaverse.

Configure 11

Conclusion

L’installation est donc très similaire à celle de Dirsync et demande les mêmes informations (compte administrateur de l’entreprise, serveur SQL, …). De plus, le processus de mise à jour est simplifiée au maximum. Néanmoins, pour les personnes n’ayant pas utilisées Azure Active Directory Sync, l’administration et notamment la configuration les règles de synchronisation est différente.

ADFS : Metadata incorrectes lors de l’ajout d’une fédération

Introduction

Avec le développement de l’authentification unique en entreprise, ADFS (Active Directory Federation Services) est devenu un rôle de plus en plus déployé. Même si son déploiement reste simple et très documenté (grâce notamment, au déploiement d’Office 365), il est courant de rencontrer des difficultés lorsque l’on souhaite ajouter une fédération ou réaliser une configuration spécifique.

Au cours de cette article, il sera question de résoudre une erreur pouvant se produire lors de l’ajout d’une fédération, c’est-à-dire lorsque l’on veut utiliser son système d’authentification d’entreprise avec un partenaire (une application SAAS par exemple). Généralement, les informations permettant d’établir une fédération sont contenues dans un fichier de métadata qui est accessible depuis une url ou qu’il faut importer via un fichier. Cependant, des erreurs dans le fichier de métadata fourni par le partenaire peuvent empêcher d’avoir une configuration correcte.

Problème rencontré

L’ajout d’une fédération s’effectue dans la console de gestion ADFS via l’action « Add relying party trust » dans le menu « Trust Relationships / Relying Party Trusts« .

ADFS Add Federation

Lorsque l’assistant s’ouvre, il est possible de choisir la méthode de configuration de la fédération. Il existe trois méthodes :

  • Une url d’accès au metadata : il s’agit de la méthode nécessitant le moins de maintenance. Les mises à jour des métadata sont prises en compte automatiquement. Si vous souhaitez fournir les vôtres via cette méthode (afin de faciliter la configuration pour le partenaire), il suffit d’ouvrir l’accès à l’url suivante https://NOM_DNS/federationmetadata/2007-06/federationmetadata.xml (n’oublier pas de remplacer NOM_DNS par le nom DNS d’accès au service ADFS).

  • Un fichier de metadata : il s’agit d’un fichier fourni par le partenaire dont le contenu est identique à celui présent via la première méthode.

  • Une configuration manuelle : il faut insérer chaque paramètre manuellement

La méthode qui nous intéresse ici et qui peut poser problème est la seconde. En effet, si le fichier contient des erreurs de syntaxe, le message suivant peut apparaitre :

Some of the content in the federation metadata was skipped because it is not supported by AD FS. Review the properties of the trust carefully before you save te trust to the ADFS configuration database.

Error ADFS Metadata

Même si celle-ci n’est pas bloquante, elle peut entrainer une mauvaise configuration de la fédération.

Résolution

Les conseils ci-dessous sont issues de retour d’expérience. Lorsque l’erreur ci-dessus est rencontrée, il convient de modifier le fichier est de faire des tests de façon dichotomique afin d’obtenir une configuration valide. Par exemple, on peut supprimer les assertions une à une afin de trouver celle(s) qui posent problème. Il faudra ensuite vérifier si elle est nécessaire pour le bon fonctionnement de la fédération (auquel cas, un correctif devra être trouvé) ou si elle peut être supprimée.

La principale erreur rencontrée dans un fichier de métadata est la présence d’assertion pour plusieurs versions  de SAML. En effet ADFS supporte les standards SAML en version 1.0, 1.1 et 2.0 permettant d’échanger des informations avec un partenaire de manière sécurisée. Même si cela permet à un partenaire de ne maintenir qu’un seul fichier de métadata, ADFS ne tolère la présence que d’une version de SAML par fichier. Par exemple, la présence concomitante de ces deux assertions doit être proscrite :

 

Dans ce cas là, il suffira de supprimer les assertions en SAML v1.0.

D’autre part, une erreur courante est d’intégrer des URLs non sécurisées (HTTP au lieu de HTTPS). Cela n’est pas autorisé.

Dernière erreur courante, ADFS est permissif sur la syntaxe et plus précisément sur la casse des assertions. Ainsi, l’assertion suivante est invalide si HTTP-Redirect est remplacé par HTTP-REDIRECT.

 

Aussi, si vous souhaitez accéder à la syntaxe complète du langage SAML afin de valider un fichier de métadata, vous trouverez ci-dessous des liens détaillant la syntaxe selon la version :