Didacticiel IAM : utiliser un modèle CloudFormation pour créer un fournisseur d’identité (IdP) SAML et un rôle IAM fédéré SAML
Pour vous familiariser avec la fédération SAML et ses capacités, vous utiliserez un modèle CloudFormation pour configurer un fournisseur d’identité (IdP) SAML et le rôle IAM fédéré associé. Ce didacticiel vous montre comment créer les deux ressources ensemble dans une seule pile.
Le modèle crée un IdP SAML pouvant être utilisé pour l’accès fédéré aux ressources AWS, ainsi qu’un rôle IAM qui fait confiance au fournisseur SAML. Les utilisateurs authentifiés par votre IdP externe peuvent endosser ce rôle pour accéder aux ressources AWS.
Les ressources déployées sont composées des éléments suivants :
-
Un IdP SAML configuré avec le document de métadonnées de votre IdP.
-
Un rôle IAM fédéré qui fait confiance à l’IdP SAML et peut être endossé par des utilisateurs authentifiés.
-
Des politiques gérées configurables qui peuvent être associées au rôle afin d’accorder des autorisations spécifiques.
Prérequis
Le didacticiel présume que vous avez déjà ce qui suit en place :
-
Python 3.6 ou version ultérieure installée sur votre ordinateur local pour exécuter la commande Python utilisée dans ce didacticiel afin de formater le fichier XML des métadonnées SAML de votre IdP.
-
Un document de métadonnées SAML provenant de votre IdP externe enregistré sous forme de fichier XML.
Créez un IdP et un rôle SAML en utilisant CloudFormation
Pour créer l’IdP SAML et le rôle fédéré, vous allez créer un modèle CloudFormation et l’utiliser pour créer une pile contenant les deux ressources.
Création du modèle
Créez d’abord le modèle CloudFormation.
-
Dans la section Modèle, cliquez sur l’icône de copie dans l’onglet JSON ou YAML pour copier le contenu du modèle.
-
Copiez le contenu du modèle dans un nouveau fichier.
-
Enregistrez le fichier au niveau local.
Créez la pile .
Utilisez ensuite le modèle de fichier que vous venez de créer pour provisionner une pile CloudFormation.
-
Ouvrez la console CloudFormation, à l’adresse https://console.aws.amazon.com/cloudformation
. -
Sur la page Piles, dans le menu Créer une pile, choisissez Avec de nouvelles ressources (standard).
-
Spécifiez un modèle :
-
Sous Prérequis, choisissez Choisir un modèle existant.
-
Sous Spécifier le modèle, sélectionnez Charger un modèle de fichier.
-
Choisissez Choisir un fichier, accédez au fichier du modèle, puis sélectionnez-le.
-
Choisissez Suivant.
-
-
Spécifiez les détails de la pile suivants :
-
Saisissez le nom de la pile.
-
Pour IdentityProviderName, vous pouvez laisser ce champ vide pour générer automatiquement un nom basé sur le nom de la pile, ou saisir un nom personnalisé pour votre IdP SAML.
Exemple :
CompanyIdPouEnterpriseSSO -
Pour IdentityProviderSAMLMetadataDocument, vous devez formater votre fichier XML de métadonnées SAML en une seule ligne avant de le coller dans ce champ. Cela est nécessaire, car la console CloudFormation exige que le contenu XML soit formaté en une seule ligne lorsqu’il est transmis via les paramètres de la console.
Utilisez la commande Python suivante pour reformater votre fichier XML :
python3 -c "import sys, re; content=open(sys.argv[1]).read(); print(re.sub(r'>\s+<', '><', content.replace('\n', '').replace('\r', '').strip()))"saml-metadata.xmlNote
Le document de métadonnées SAML de l’IdP doit être formaté en une seule ligne pour la saisie des paramètres de la console. La commande Python supprime les sauts de ligne et les espaces supplémentaires afin de créer le format requis tout en conservant l’intégralité du contenu et de la structure d’origine.
Copiez le résultat de la commande Python et collez-le dans le champ IdentityProviderSAMLMetadataDocument.
Exemple de document de métadonnées SAML formaté (abrégé) :
<?xml version="1.0" encoding="UTF-8"?><md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://portal.sso.example.com/saml/assertion/CompanyIdP"><md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"><md:KeyDescriptor use="signing"><ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:X509Data><ds:X509Certificate>MIIDXTCCAkWgAwIBAgIJAJC1HiIAZAiIMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV...</ds:X509Certificate></ds:X509Data></ds:KeyInfo></md:KeyDescriptor><md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://portal.sso.example.com/saml/logout/CompanyIdP"/><md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat><md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://portal.sso.example.com/saml/assertion/CompanyIdP"/></md:IDPSSODescriptor></md:EntityDescriptor> -
Pour RoleName, vous pouvez laisser ce champ vide pour générer automatiquement un nom basé sur le nom de la pile, ou saisir un nom personnalisé pour le rôle IAM fédéré.
Exemple :
SAML-Developer-AccessouSAML-ReadOnly-Role -
Pour les autres paramètres, acceptez les valeurs par défaut ou saisissez les vôtres en fonction de vos besoins :
-
IdentityProviderAddPrivateKey : clé privée facultative pour déchiffrer les assertions SAML
-
IdentityProviderAssertionEncryptionMode : mode de chiffrement pour les assertions SAML
Exemples de valeurs :
Allowed,Required, ou laissez vide pour aucun chiffrement -
RoleSessionDuration : durée maximale de session en secondes (3 600 à 43 200, 7 200 par défaut)
Exemple :
14400(4 heures) -
RolePermissionsBoundary : ARN facultatif d’une politique de limite des autorisations
Exemple :
arn:aws:iam::123456789012:policy/DeveloperBoundary -
RolePath : chemin du rôle IAM (la valeur par défaut est /)
Exemple :
/saml-roles/ -
RoleManagedPolicy1-5 : ARN facultatifs contenant jusqu’à 5 politiques gérées à associer
Exemple pour RoleManagedPolicy1 :
arn:aws:iam::aws:policy/ReadOnlyAccessExemple pour RoleManagedPolicy2 :
arn:aws:iam::123456789012:policy/CustomPolicy
-
-
Choisissez Suivant.
-
-
Configurez les options de pile :
-
Sous Options d’échec de pile, choisissez Supprimer toutes les ressources nouvellement créées.
Note
Le choix de cette option vous évite d’être facturé pour des ressources dont la politique de suppression indique qu’elles doivent être conservées même en cas d’échec de la création de la pile.
-
Acceptez toutes les autres valeurs par défaut.
-
Sous Capacités, cochez la case pour confirmer que CloudFormation peut créer des ressources IAM dans votre compte.
-
Choisissez Suivant.
-
-
Vérifiez les détails de la pile et choisissez Envoyer.
CloudFormation crée la pile. Une fois la création de la pile terminée, les ressources de la pile sont prêtes à être utilisées. Vous pouvez utiliser l’onglet Ressources de la page détaillée de la pile pour afficher les ressources provisionnées dans votre compte.
La pile produira les valeurs suivantes, que vous pouvez consulter dans l’onglet Sorties :
-
RoleARN : ARN du rôle IAM créé (par exemple,
arn:aws:iam::123456789012:role/SAML-Developer-Accessouarn:aws:iam::123456789012:role/stack-name-a1b2c3d4si vous utilisez un nom généré automatiquement). -
IdentityProviderArn : l’ARN de l’IdP SAML créé (par exemple,
arn:aws:iam::123456789012:saml-provider/CompanyIdP).
Vous aurez besoin de ces deux ARN lors de la configuration de votre IdP afin d’envoyer les attributs SAML appropriés pour l’attribution des rôles.
Tester la fédération SAML
Une fois que l’IdP SAML et le rôle fédéré ont été créés, vous pouvez tester la configuration de la fédération.
-
Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/
. -
Dans le panneau de navigation, sélectionnez Fournisseurs d'identité.
Vous devez voir votre IdP SAML nouvellement créé dans la liste.
-
Choisissez le nom de l’IdP pour en afficher les détails.
Sur la page de détails de l’IdP, vous pouvez consulter le document de métadonnées SAML et d’autres détails de configuration.
-
Dans le panneau de navigation, choisissez Roles (Rôles).
-
Trouvez et choisissez le rôle fédéré que vous venez de créer.
Sur la page de détails du rôle, vous pouvez voir la politique de confiance qui permet à l’IdP SAML d’endosser ce rôle.
-
Choisissez l’onglet Relations de confiance pour consulter la politique de confiance.
La politique de confiance doit indiquer que l’IdP SAML est fiable pour assumer ce rôle à condition que l’audience SAML (
SAML:aud) corresponde àhttps://signin.aws.amazon.com/saml.
Nettoyage : supprimez les ressources
Enfin, vous allez supprimer la pile et les ressources qu’elle contient.
-
Ouvrez la console CloudFormation.
-
Sur la page Piles, choisissez la pile créée à partir du modèle, choisissez Supprimer, puis confirmez Supprimer.
CloudFormation lance la suppression de la pile et de toutes les ressources qu’elle inclut.
Détails du modèle CloudFormation
Ressources
Le modèle CloudFormation utilisé pour ce didacticiel créera les ressources suivantes dans votre compte :
-
AWS::IAM::SAMLProvider: un IdP SAML qui établit la confiance entre AWS et votre IdP externe. -
AWS::IAM::Role: un rôle IAM fédéré qui peut être endossé par les utilisateurs authentifiés via l’IdP SAML.
Configuration
Le modèle comprend les paramètres configurables suivants :
-
IdentityProviderName : nom de l’IdP SAML (laissez le champ vide pour un nom généré automatiquement)
-
IdentityProviderSAMLMetadataDocument : document de métadonnées SAML provenant de votre IdP (obligatoire)
-
IdentityProviderAddPrivateKey : clé privée facultative pour déchiffrer les assertions SAML
-
IdentityProviderAssertionEncryptionMode : mode de chiffrement pour les assertions SAML
-
RoleName : nom du rôle IAM (laissez le champ vide pour un nom généré automatiquement)
-
RolePath : chemin du rôle IAM (la valeur par défaut est /)
-
RolePermissionsBoundary : ARN facultatif d’une politique de limite des autorisations
-
RoleSessionDuration : durée maximale de session en secondes (3 600 à 43 200, 7 200 par défaut)
-
RoleManagedPolicy1-5 : ARN facultatifs contenant jusqu’à 5 politiques gérées à associer
Modèle CloudFormation
Enregistrez le code JSON ou YAML suivant dans un fichier séparé afin de l’utiliser comme modèle CloudFormation pour ce didacticiel.