Windows Azure Pack–Authentificaction ADFS Admin-Side : Les cercles de l’enfer (1/7)

Parler d’authentification basée sur ADFS c’est bien, le mettre en œuvre, c’est mieux. Rentrons dans le vif du sujet. Bienvenu dans le premier des sept cercles de l’enfer Windows Azure Pack / ADFS. Pourquoi sept et pas neuf? Juste pour ne pas faire fuir le lecteur.

J’ai bien des idées pour arriver à neuf mais ce serait pas raisonnable. Avec l’intégration de Multi-Factor Authentication et Microsoft Azure Access Control, on pourrait y arriver mais j’hésite. Cette série de billets sera déjà assez disruptive pour ne pas en plus mêler le grand frère Microsoft Azure à l’histoire. Mais ce seront des sujets qu’on ne pourra pas négliger pour nos locataires.

 

Un peu d’architecture

L’annuaire Active Directory de l’infrastructure utilisé par ma plateforme Windows Azure Pack est situé dans une zone réseau isolée. C’est un service partagé par un certain nombre de composants de ma plateforme et qui n’a pas besoin d’être accessible par mes locataires. La bonne pratique est de placer le rôle ADFS sur un serveur dédié de tel manière qu’il soit aisé d’ajouter d’autres serveurs à la ferme (impliquera donc une base SQL dédiée, un certificat Web SSL avec clé privée exportable, …). Voila pour l’architecture.

 

Vous reprendrez bien des certificats?

Encore, ben oui. Qui dit ADFS dit web service exposé à sécuriser donc certificat SSL à prévoir. Première question : l’autorité émettrice, est-elle publique ou peut-elle être privée? Vu que nos utilisateurs seront les administrateurs de notre plateforme Windows Azure Pack. On pourrait se contenter d’un certificat émis par une autorité de certification privée. Cependant que se passera t’il lorsque nous voudrons offrir un service d’authentification par fédération à nos locataires? Pour cette raison, je recommande une autorité de certification publique, nativement reconnue de tous.

Dans mon contexte, j’ai fait au plus simple : un certificat serveur SSL (gabarit "Web Server" délivré par mon autorité de certification interne). J’ai juste personnalité le gabarit du certificat pour autoriser l’export du certificat avec sa clé privée. C’est essentiel si on veut pouvoir installer le serveur sur d’autre futurs serveurs de la ferme ADFS.

 

Mise en place ADFS

L’installation du rôle ADFS n’est qu’une succession de click-next, rien de bien passionnant. La seule chose importante est qu’ADFS doit impérativement être mis en œuvre sur une plateforme Windows Server 2012 ou supérieure. C’est nécessaire pour le support de JWT (JSON Web Token). Ca y est, ca pique déjà.

clip_image001

Une fois le processus d’installation terminé, reste plus que la configuration de la ferme de fédération ADFS. Avant de commencer, assurez-vous que le certificat d’authentification serveur SSL nécessaire est bien présent dans le magasin personnel de votre serveur.

clip_image002

Vu que c’est le premier serveur de la ferme, il faut configurer celle-ci dans son intégralité.

clip_image003

Tout est dit dans l’illustration ci-dessous, elle se passe de commentaire.

clip_image004

Mon certificat est bien présent dans le magasin personnel de mon serveur ADFS01.Windowsazurepack.lan. Ma fédération va avoir un nom FQDN. Normalement, c’est le nom inscrit dans le certificat (ADFS.windowsazurepack.lan). Si ce certificat est un wildcard, il faut alors compléter l’information. Le "Display Name", c’est ce que nous allons présenter à nos locataires lors de leur connexion au portail d’administration de Windows Azure Pack.

clip_image005

Un détail, si nous utilisons un certificat délivré par notre autorité de certification, le gabarit "Web Server" par défaut n’autorise pas l’export de la clé privée. Cela implique donc qu’on ne pourra pas (avec ce certificat) ajouter un nouveau serveur à la ferme. N’oubliez pas ce point lorsque vous remplissez votre demande de certificat auprès de votre fournisseur habituel.

Mon infrastructure ADFS va opérer dans le contexte d’un compte de service. On va exploiter la fonctionnalité Managed Service Account pour se simplifier la vie, pas de mot de passe à maintenir pour ce compte de service.

clip_image006

La configuration d’ADFS est stockée dans une base SQL. J’aurai pu choisir d’utiliser une instance de Windows Internal Database mais cela veut dire aussi que si je perds ce serveur, je perds aussi mon ADFS. J’ai donc choisi d’héberger la base sur un serveur SQL déjà existant. Les puristes me reprocheront de ne pas avoir mis en œuvre une instance SQL dédiée sur un SQL 2012 en High Availability mais, je manque de place sur ma maquette. Y a déjà près de 168go hébergés et j’ai encore besoin de place.

clip_image007

On en a fini avec la configuration initiale d’ADFS. Les puristes du PowerShell peuvent se divertir pendant l’installation en parcourant les commandes Powershell qui vont être exécutées. Dans mon cas, ce sera la commande Install-AdfsFarm.

clip_image008

Aucun problème au niveau des prérequis (ma Root Key pour GMSA est bien répliquée vers tous les contrôleurs de domaine depuis plus de 10 heures). Go!

clip_image009

C’est fini pour l’installation d’ADFS.

clip_image010

Vu que j’ai beaucoup galéré avec ADFS (4 ans sans pratiquer, il a bien changé le machin), j’avais besoin d’avoir des logs un peu plus verbeux que par défaut. Un rapide petit tout dans le module PowerShell et on a une première idée de ce qui sera journalisé out of the box.

clip_image011

Pas de trace des éventuels succès ou échecs d’authentification. On va donc y remédier, toujours en PowerShell.

clip_image012

Pour les amateurs de l’interface graphique, voilà de quoi on parle.

clip_image013

Voilà pour la mise en œuvre d’ADFS sur ma plateforme Windows Azure Pack. Prêt pour le prochain cercle de l’enfer? La prochaine fois, on va parler de partenaire de confiance. En attendant, quelques lectures qui m’ont bien aidé :

 

On notera que j’ai été sympa, j’aurai pu scripter toute la configuration en PowerShell. Ne vous réjouissiez pas trop vite, dès qu’on va revenir dans Windows Azure Pack, on replongera dans Powershell. On n’aura pas le choix.

 

Mais pourquoi est-il si méchant?

 

BenoîtS – Simple and secure by design but Business compliant (with disruptive flag enabled)

Benoit

Simple, yes, Secure Maybe, by design for sure, Business compliant always!

Les derniers articles par Benoit (tout voir)

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.