Utilisation du service AD ​​Federation pour autoriser les utilisateurs AWS avec une distribution de droits

Traduction gratuite de l'article de Jeff Wierer " Activation de la fédération vers AWS à l'aide de Windows Active Directory, ADFS et SAML 2.0 " avec des ajouts et des clarifications.

1. Les données source
2. Préparation
3. Configuration AD
4. Installez ADFS
5. Configuration d'ADFS
6. Configuration d'AWS
7. Test
8. Erreurs connues et leurs solutions



1. Les données source

A augmenté AD Windows 2016
L'auteur a utilisé EC2 de Windows 2008R2 sur Amazon, j'ai une machine virtuelle dans le réseau local Windows 2016 avec accès à Internet.
Compte AWS (qui paiera tout)
Bras droits
Objectif: permettre à l'utilisateur AD de se connecter à AWS avec les droits spécifiés (pour obtenir un rôle) en fonction du groupe AD.

Schéma:



1. L'utilisateur (sera Bob) ouvre la page (https://ADFS.domain.name/adfs/ls/IdpInitiatedSignOn.aspx)

2. Bob est autorisé (ADFS demande les champs obligatoires dans AD)

3. Le navigateur de Bob reçoit les données nécessaires au format SAML d'ADFS

4. Le navigateur envoie les données reçues au service d'autorisation SAML (https://signin.aws.amazon.com/saml)

5. Bob Browser obtient l'URL de connexion pour la console AWS

2. Préparation

2.1. Vous avez déjà généré AD et commencé des utilisateurs appartenant à différents groupes.

2.2. IIS surélevé ( Comment accroître le rôle d'IIS )

2.3. Générez un certificat SSL auto-signé. ( comment générer un certificat SSL auto-signé ) installez-le immédiatement pour le site par défaut.

3. Configuration AD

3.1. Vous devez créer deux groupes AWS-Production et AWS-Billing

3.2. Créez l'utilisateur Bob (Attention !!! l'utilisateur doit remplir le champ email: bob@youdomain.com, sinon vous recevrez une erreur en entrant dans la console AWS)

3.3. Ajouter Bob aux groupes AWS-Production et AWS-Billing créés

3.4. Créez un autre utilisateur ADFSSVC. Compte de service spécial pour la connexion à AD.

4. Installez ADFS

Il existe plusieurs versions d'ADFS

  • ADFS 1.0 - Windows Server 2003 R2 (téléchargement supplémentaire)
  • ADFS 1.1 - Windows Server 2008 et Windows Server 2008 R2
  • ADFS 2.0 - Windows Server 2008 et Windows Server 2008 R2 (téléchargement depuis Microsoft.com)
  • ADFS 2.1 - Windows Server 2012
  • ADFS 3.0 - Windows Server 2012 R2 [5]

  • ADFS 4.0 - Windows Server 2016 - Notre choix
  • ADFS 5.0 - Windows Server 2019

L'auteur télécharge ADFS v2 et l'installe.
Nous allons augmenter le rôle de l'ADFS
Il n'y a aucune difficulté, trois captures d'écran vous aideront à cliquer sur le bouton suivant>

Captures d'écran
image
image
image
Je l'ai déjà installé, donc il a l'air un peu différent.
Ensuite, ensuite, installez ...

5. Configuration d'ADFS

Ce lien vous permet d'appeler le configurateur ADFS

image

image

image

Connectez-vous à AD avec l'utilisateur actuel.

image

Ici, nous avons besoin du certificat que nous avons généré dans IIS (section 2.3) et du nom de notre futur ADFS (adfs.you-domain.com), la ligne d'affichage est NAME YOUR COMPANY

image

Nous sélectionnons le compte de service ADFSSVC que nous avons créé dans la section 3.4

image

Créer une nouvelle base de données

image

Vérification ...

image
Vérification de la préinstallation ... Cliquez sur Configurer

image

C'est fait.

La console commence par rechercher «AD Management» dans le terme de recherche Windows.

image

image

Ensuite, accédez à Trust Relationships et choisissez Relying Party Trusts

Bouton droit -> Ajouter une confiance de partie de confiance

image

Choix des réclamations

image

Sélectionnez «Importer les données publiées par la partie utilisatrice en ligne ...» et entrez la ligne https://signin.aws.amazon.com/static/saml-metadata.xml c'est la même chose pour tout le monde et elle est fournie par AWS.

image

Conduisez le nom " AWS GO " à votre discrétion ou laissez-le tel quel.

image

Nous sélectionnons "Autoriser tous les utilisateurs ..." l'accès est autorisé à tous.

image

Revérifiez et terminé.

image

Faites un clic droit sur nos relais et sélectionnez «Modifier la politique d'émission des réclamations»

image

Nous commençons à ajouter nos règles:

5.1 Obtention d'un nom d'utilisateur. Modèle: Transformez une réclamation entrante puis remplissez les champs:

a. Nom de la règle de revendication: NameId
b. Type de réclamation entrante: nom du compte Windows
c. Type de réclamation sortante: ID de nom
d. Format d'ID de nom sortant: identifiant persistant
e. Passez toutes les valeurs de réclamation: coché

image

C'est fait.

5.2 Obtention d'une liste de rôles pour l'utilisateur. Modèle: envoyer des attributs LDAP en tant que revendications ,

image

champs:

a. Nom de la règle de revendication: RoleSessionName
b. Magasin d'attributs: Active Directory
c. Attribut LDAP: adresses électroniques
d. Type de réclamation sortante:

 https://aws.amazon.com/SAML/Attributes/RoleSessionName 

image

Terminé

5.3 Remarque importante: dans cette règle, tous les rôles de l'utilisateur seront extraits et mappés à des rôles similaires dans IAM (c'est-à-dire les rôles qui commencent par AWS -...). Cette règle récupère toutes les adhésions AD. Modèle: envoyer des revendications à l'aide d'une règle personnalisée

image

champs
a. Nom de la règle de revendication: obtenir les groupes AD
b. Rôle personnalisé:

 c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => add(store = "Active Directory", types = ("http://temp/variable"), query = ";tokenGroups;{0}", param = c.Value); 

image

pour ajouter la règle suivante, vous devrez revenir après l'étape 6 (ou vous pouvez l'ajouter puis modifier l'ID)

5.4 Ajoutez une autre règle comme 5.3 ce sera comme ceci:

a. Nom de la règle de revendication: Roless
b. Rôle personnalisé:

 c:[Type == "http://temp/variable", Value =~ "(?i)^AWS-"] => issue(Type = "https://aws.amazon.com/SAML/Attributes/Role", Value = RegExReplace(c.Value, "AWS-", "arn:aws:iam::123456789012:saml-provider/ADFS,arn:aws:iam::123456789012:role/ADFS-")); 

image

Ici, vous devez changer la valeur 123456789012 en votre propre IAM AWS

image

Cela sera décrit à l'article 6.

6. Configuration d'AWS

Toutes les actions ont lieu dans la console AWS :)

6.1 Création d'un fournisseur SAML

a. IAM -> Fournisseurs d'identité -> Créer un fournisseur
Type de fournisseur - SAML
Nom du fournisseur - ADFS
Document de métadonnées - cette vignette doit être prise (téléchargée) sur votre serveur FS à https: ///FederationMetadata/2007-06/FederationMetadata.xml
si le fichier n'est pas disponible, voir point 8 - Erreurs connues et leurs solutions

image

b. Créez deux rôles pour nos utilisateurs.
Rôles IAM Rôles -> Créer un rôle

image

Esquissez les politiques nécessaires (par exemple, Facturation (politique par défaut) pour les utilisateurs qui surveilleront l'argent, ou vous pouvez pré-créer votre propre politique et l'attribuer ici)

image

attribuer des balises si nécessaire ...

image

Donnez un nom: le nom après "-" doit correspondre au nom dans AD après "-" ASFS- Billing = AWS- Billing, auquel cas votre utilisateur sera dans le bon groupe.

Et cliquez sur Créer un rôle

image

7. Test

7.1 Dans votre navigateur préféré, accédez à la page de votre serveur https://localhost/adfs/ls/IdpInitiatedSignOn.aspx (un certificat auto-signé devra être confirmé)

Une page avec un contenu similaire s'ouvrira.

image

Entrez les données de notre utilisateur AD

image

Et nous sommes redirigés vers la page AWS avec une proposition du rôle sous lequel l'utilisateur travaillera dans AWS

image

c'est parce que notre Bob est dans deux groupes AD à la fois (AWS-Production et AWS-billing).

Nous sélectionnons la facturation AWS et voyons les paramètres nécessaires (nous pouvons consulter et modifier le budget mais n'avons pas le droit de créer EC2 selon les rôles que nous avons définis pour lui)

image

8. Erreurs connues et leurs solutions

8.1 Le portail ne répond pas ou ne trouve pas les pages nécessaires. Par exemple:

 https://localhost/adfs/ls/IdpInitiatedSignOn.aspx 

Solution: sur le serveur ADFS, vous devez exécuter la commande PowerShell

 Set-AdfsProperties -EnableIdPInitiatedSignonPage $true 

Vous pouvez immédiatement mettre le logo sur la page d'accueil

 Set-AdfsWebTheme -TargetName default -Illustration @{path="C:\path\adfslogo.jpg"} 

8.2 Lors de la redirection vers la console AWS, vous obtenez une erreur de la forme:

 RoleSessionName is required in AuthnResponse (Service: AWSSecurityTokenService; Status Code: 400; Error Code: InvalidIdentityToken; Request ID: e4ddf8cd-d7b7-11e9-8729-09c90d2561b0). Please try again 

Solution: votre utilisateur n'a probablement pas de champ de messagerie dans AD

image

Solution 2: il y a probablement une erreur dans l'écriture du groupe dans AD et du rôle dans AWS

Source: https://habr.com/ru/post/fr466859/


All Articles