Configurez l'identité fédérée avec le AWS Tools for PowerShell - AWS Tools for PowerShell

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configurez l'identité fédérée avec le AWS Tools for PowerShell

Pour permettre aux utilisateurs de votre organisation d'accéder aux AWS ressources, vous devez configurer une méthode d'authentification standard et reproductible à des fins de sécurité, d'auditabilité, de conformité et pour permettre la séparation des rôles et des comptes. Bien qu'il soit courant de fournir aux utilisateurs la possibilité d'accéder AWS APIs, sans API accès fédéré, vous devez également créer AWS Identity and Access Management (IAM) utilisateurs, ce qui va à l'encontre de l'objectif de la fédération. Cette rubrique décrit la prise en charge du langage de balisage d'assertions de sécurité SAML (Security Assertion Markup Language) AWS Tools for PowerShell qui facilite votre solution d'accès fédéré.

SAMLle support vous AWS Tools for PowerShell permet de fournir à vos utilisateurs un accès fédéré aux AWS services. SAMLest un format XML basé sur un standard ouvert pour la transmission des données d'authentification et d'autorisation des utilisateurs entre les services, en particulier entre un fournisseur d'identité (tel qu'Active Directory Federation Services) et un fournisseur de services (tel que AWS). Pour plus d'informations à ce sujet SAML et SAMLsur son fonctionnement, consultez Wikipedia ou les spécifications SAML techniques sur le site Web de l'Organisation pour l'avancement des normes d'information structurées (OASIS). SAMLle support dans le AWS Tools for PowerShell est compatible avec SAML 2.0.

Prérequis

Vous devez disposer des éléments suivants avant d'essayer d'utiliser le SAML support pour la première fois.

  • Une solution de fédération d'identités correctement intégrée à votre compte AWS pour l'accès à la console en utilisant uniquement les informations d'identification de votre entreprise. Pour plus d'informations sur la manière de procéder spécifiquement pour les services de fédération Active Directory, consultez À propos de la fédération SAML 2.0 dans le guide de IAM l'utilisateur et le billet de blog intitulé Enabling Federation to AWS Using Windows Active Directory, AD FS et SAML 2.0. Même si l'article du blog couvre AD FS 2.0, les étapes sont similaires si vous exécutez AD FS 3.0.

  • Version 3.1.31.0 ou ultérieure AWS Tools for PowerShell installée sur votre poste de travail local.

Comment un utilisateur fédéré par identité obtient un accès fédéré au service AWS APIs

Le processus suivant décrit, de manière générale, comment un utilisateur Active Directory (AD) est fédéré par AD FS pour accéder aux AWS ressources.

Diagram showing federated user access flow to AWS resources via AD FS and Security Token Service.
  1. Le client sur l'ordinateur de l'utilisateur fédéré s'authentifie par rapport aux services AD FS.

  2. Si l'authentification réussit, AD FS envoie une SAML assertion à l'utilisateur.

  3. Le client de l'utilisateur envoie l'SAMLassertion à AWS Security Token Service (STS) dans le cadre d'une demande de SAML fédération.

  4. STSrenvoie une SAML réponse contenant des informations d'identification AWS temporaires pour un rôle que l'utilisateur peut assumer.

  5. L'utilisateur accède au AWS service APIs en incluant ces informations d'identification temporaires dans la demande faite par AWS Tools for PowerShell.

Comment fonctionne SAML le Support dans le AWS Tools for PowerShell

Cette section décrit comment les AWS Tools for PowerShell applets de commande permettent de configurer la fédération d'identité SAML basée sur la base des utilisateurs.

Diagram showing SAML-based federation flow between organization, AD FS, AWS, and service APIs.
  1. AWS Tools for PowerShell s'authentifie auprès d'AD FS en utilisant les informations d'identification actuelles de l'utilisateur Windows, ou de manière interactive, lorsque l'utilisateur essaie d'exécuter une applet de commande nécessitant des informations d'identification pour être appelée. AWS

  2. AD FS authentifie l'utilisateur.

  3. AD FS génère une réponse d'authentification SAML 2.0 qui inclut une assertion ; le but de l'assertion est d'identifier et de fournir des informations sur l'utilisateur. AWS Tools for PowerShell extrait de l'SAMLassertion la liste des rôles autorisés de l'utilisateur.

  4. AWS Tools for PowerShell transmet la SAML demande, y compris les Amazon Resource Names (ARN) du rôle demandé, à STS en effectuant l'AssumeRoleWithSAMLRequestAPIappel.

  5. Si la SAML demande est valide, STS renvoie une réponse contenant le AWS AccessKeyIdSecretAccessKey, etSessionToken. Ces informations d'identification durent 3 600 secondes (1 heure).

  6. L'utilisateur dispose désormais d'informations d'identification valides lui permettant de travailler avec n'importe quel AWS service APIs auquel son rôle est autorisé à accéder. AWS Tools for PowerShell applique automatiquement ces informations d'identification pour tous les AWS API appels suivants et les renouvelle automatiquement lorsqu'elles expirent.

    Note

    Lorsque les informations d'identification arrivent à expiration, et que de nouvelles informations d'identification sont nécessaires, les AWS Tools for PowerShell sont automatiquement ré-authentifiés auprès d'AD FS et obtiennent de nouvelles informations d'identification pour une nouvelle heure. Pour les utilisateurs de comptes joints à un domaine, ce processus se produit silencieusement. Pour les comptes qui ne sont pas joints à un domaine, AWS Tools for PowerShell invite les utilisateurs à saisir leurs informations d'identification avant de pouvoir s'authentifier à nouveau.

Comment utiliser les applets de PowerShell SAML commande de configuration

AWS Tools for PowerShell inclut deux nouvelles applets de commande qui fournissent une SAML assistance.

  • Set-AWSSamlEndpoint configure votre point de terminaison AD FS, attribue un nom convivial au point de terminaison et, en option, décrit le type d'authentification du point de terminaison.

  • Set-AWSSamlRoleProfile crée ou modifie un profil de compte utilisateur que vous souhaitez associer à un point de terminaison AD FS, identifié en spécifiant le nom convivial que vous avez fourni à l'applet de commande Set-AWSSamlEndpoint. Chaque profil de rôle correspond à un seul rôle qu'un utilisateur est autorisé à effectuer.

    Comme pour les profils AWS d'identification, vous attribuez un nom convivial au profil de rôle. Vous pouvez utiliser le même nom convivial pour l'Set-AWSCredentialapplet de commande ou comme valeur du -ProfileName paramètre pour toute applet de commande qui invoque le service. AWS APIs

Ouvrez une nouvelle AWS Tools for PowerShell session. Si vous utilisez la PowerShell version 3.0 ou une version plus récente, le AWS Tools for PowerShell module est automatiquement importé lorsque vous exécutez l'une de ses applets de commande. Si vous utilisez la PowerShell version 2.0, vous devez importer le module manuellement en exécutant l'applet de commande ``Import-Module``, comme illustré dans l'exemple suivant.

PS > Import-Module "C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell\AWSPowerShell.psd1"

Comment exécuter les applets de commande Set-AWSSamlEndpoint et Set-AWSSamlRoleProfile

  1. Tout d'abord, configurez les paramètres de point de terminaison du système AD FS. Le moyen le plus simple de procéder consiste à stocker le point de terminaison dans une variable, comme indiqué dans cette étape. Assurez-vous de remplacer le compte fictif IDs et le nom d'hôte AD FS par vos propres compte IDs et nom d'hôte AD FS. Spécifiez le nom d'hôte AD FS dans le paramètre Endpoint.

    PS > $endpoint = "https://adfs.example.com/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices"
  2. Pour créer les paramètres de point de terminaison, exécutez l'applet de commande Set-AWSSamlEndpoint, en spécifiant la valeur correcte du paramètre AuthenticationType. Les valeurs valides incluent Basic, Digest, Kerberos, Negotiate et NTLM. Si vous ne spécifiez pas ce paramètre, la valeur par défaut est Kerberos.

    PS > $epName = Set-AWSSamlEndpoint -Endpoint $endpoint -StoreAs ADFS-Demo -AuthenticationType NTLM

    L'applet de commande renvoie le nom amical que vous avez assigné en utilisant le paramètre -StoreAs. Ainsi, vous pouvez l'utiliser lorsque vous exécutez Set-AWSSamlRoleProfile à la ligne suivante.

  3. Exécutez maintenant l'Set-AWSSamlRoleProfileapplet de commande pour vous authentifier auprès du fournisseur d'identité AD FS et obtenir l'ensemble des rôles (dans l'SAMLassertion) que l'utilisateur est autorisé à exécuter.

    L'applet de commande Set-AWSSamlRoleProfile utilise l'ensemble de rôles retourné pour demander à l'utilisateur de sélectionner un rôle à associer au profil spécifié ou de valider que les données de rôle fournies dans les paramètres sont présentes (si ce n'est pas le cas, l'utilisateur est invité à choisir). Si l'utilisateur est autorisé pour un seul rôle, l'applet de commande associe automatiquement le rôle au profil, sans intervention de l'utilisateur. Il n'est pas nécessaire de fournir les informations d'identification pour configurer un profil en vue d'une utilisation jointe à un domaine.

    PS > Set-AWSSamlRoleProfile -StoreAs SAMLDemoProfile -EndpointName $epName

    Pour les non-domain-joined comptes, vous pouvez également fournir des informations d'identification Active Directory, puis sélectionner un AWS rôle auquel l'utilisateur a accès, comme indiqué dans la ligne suivante. Cette solution est utile si vous avez différents comptes utilisateur Active Directory pour différencier les rôles au sein de votre entreprise (par exemple, les fonctions d'administration).

    PS > $credential = Get-Credential -Message "Enter the domain credentials for the endpoint" PS > Set-AWSSamlRoleProfile -EndpointName $epName -NetworkCredential $credential -StoreAs SAMLDemoProfile
  4. Dans tous les cas, l'applet de commande Set-AWSSamlRoleProfile vous invite à choisir le rôle qui doit être stocké dans le profil. L'exemple suivant montre deux rôles disponibles : ADFS-Dev et ADFS-Production. Les IAM rôles sont associés à vos identifiants de connexion AD par l'administrateur AD FS.

    Select Role Select the role to be assumed when this profile is active [1] 1 - ADFS-Dev [2] 2 - ADFS-Production [?] Help (default is "1"):

    Vous pouvez également spécifier un rôle sans invite, en entrant les paramètres RoleARN, PrincipalARN et NetworkCredential (ce dernier paramètre est facultatif). Si le rôle spécifié n'est pas répertorié dans l'assertion renvoyée par l'authentification, l'utilisateur est invité à choisir parmi les rôles disponibles.

    PS > $params = @{ "NetworkCredential"=$credential, "PrincipalARN"="{arn:aws:iam::012345678912:saml-provider/ADFS}", "RoleARN"="{arn:aws:iam::012345678912:role/ADFS-Dev}" } PS > $epName | Set-AWSSamlRoleProfile @params -StoreAs SAMLDemoProfile1 -Verbose
  5. Vous pouvez créer des profils pour tous les rôles en une seule commande en ajoutant le paramètre StoreAllRoles, comme indiqué dans le code suivant. Notez que le nom du rôle est utilisé comme nom de profil.

    PS > Set-AWSSamlRoleProfile -EndpointName $epName -StoreAllRoles ADFS-Dev ADFS-Production

Comment utiliser des profils de rôle pour exécuter des applets de commande nécessitant des informations d'identification AWS

Pour exécuter des applets de commande qui nécessitent des AWS informations d'identification, vous pouvez utiliser les profils de rôle définis dans le fichier d'informations d'identification AWS partagé. Fournissez le nom d'un profil de rôle Set-AWSCredential (ou comme valeur de n'importe quel ProfileName paramètre du AWS Tools for PowerShell) afin d'obtenir automatiquement des AWS informations d'identification temporaires pour le rôle décrit dans le profil.

Même si vous n'utilisez qu'un seul profil de rôle à la fois, vous pouvez basculer entre les profils au sein d'une session shell. L'applet de commande Set-AWSCredential n'authentifie pas et n'obtient pas les informations d'identification lorsque vous l'exécutez seule ; l'applet de commande enregistre que vous souhaitez utiliser un profil de rôle spécifié. Tant que vous n'exécutez pas une applet de commande nécessitant des informations d'identification AWS , aucune authentification ou demande d'informations d'identification ne se produit.

Vous pouvez désormais utiliser les AWS informations d'identification temporaires que vous avez obtenues avec le SAMLDemoProfile profil pour utiliser le AWS serviceAPIs. Les sections suivantes fournissent des exemples sur l'utilisation des profils de rôle.

Exemple 1 : Définir un rôle par défaut avec Set-AWSCredential

Cet exemple définit un rôle par défaut pour une AWS Tools for PowerShell session en utilisantSet-AWSCredential. Ensuite, vous pouvez exécuter des applets de commande qui nécessitent des informations d'identification et sont autorisées par le rôle spécifié. Cet exemple répertorie toutes les instances Amazon Elastic Compute Cloud de la région USA Ouest (Oregon) associées au profil que vous avez spécifié avec l'applet de commande Set-AWSCredential.

PS > Set-AWSCredential -ProfileName SAMLDemoProfile PS > Get-EC2Instance -Region us-west-2 | Format-Table -Property Instances,GroupNames Instances GroupNames --------- ---------- {TestInstance1} {default} {TestInstance2} {} {TestInstance3} {launch-wizard-6} {TestInstance4} {default} {TestInstance5} {} {TestInstance6} {AWS-OpsWorks-Default-Server}

Exemple 2 : Modifier les profils de rôle au cours d'une PowerShell session

Cet exemple répertorie tous les compartiments Amazon S3 disponibles dans le AWS compte du rôle associé au SAMLDemoProfile profil. L'exemple montre que même si vous avez peut-être utilisé un autre profil plus tôt dans votre AWS Tools for PowerShell session, vous pouvez modifier les profils en spécifiant une valeur différente pour le -ProfileName paramètre avec les applets de commande qui le prennent en charge. Il s'agit d'une tâche courante pour les administrateurs qui gèrent Amazon S3 depuis la ligne de PowerShell commande.

PS > Get-S3Bucket -ProfileName SAMLDemoProfile CreationDate BucketName ------------ ---------- 7/25/2013 3:16:56 AM amzn-s3-demo-bucket 4/15/2015 12:46:50 AM amzn-s3-demo-bucket1 4/15/2015 6:15:53 AM amzn-s3-demo-bucket2 1/12/2015 11:20:16 PM amzn-s3-demo-bucket3

Notez que l'applet de commande Get-S3Bucket spécifie le nom du profil créé en exécutant l'applet de commande Set-AWSSamlRoleProfile. Cette commande peut être utile si vous avez défini un profil de rôle précédemment dans votre session (par exemple, en exécutant l'applet de commande Set-AWSCredential) et que vous voulez utiliser un autre rôle pour l'applet de commande Get-S3Bucket. Le gestionnaire de profils rend les informations d'identification temporaires accessibles à l'applet de commande Get-S3Bucket.

Bien que les informations d'identification expirent au bout d'une heure (limite imposée parSTS), les actualise AWS Tools for PowerShell automatiquement en demandant une nouvelle SAML assertion lorsque l'outil détecte que les informations d'identification actuelles ont expiré.

Pour les utilisateurs joints à un domaine, ce processus a lieu sans interruption, car l'identité Windows de l'utilisateur actif est utilisée lors de l'authentification. Pour les comptes non-domain-joined utilisateur, AWS Tools for PowerShell affiche une demande PowerShell d'identification demandant le mot de passe utilisateur. L'utilisateur fournit les informations d'identification qui sont utilisées pour l'authentifier à nouveau et obtenir une nouvelle assertion.

Exemple 3 : Obtenir les instances d'une région

L'exemple suivant répertorie toutes les EC2 instances Amazon de la région Asie-Pacifique (Sydney) associées au compte utilisé par le ADFS-Production profil. Il s'agit d'une commande utile pour renvoyer toutes les EC2 instances Amazon d'une région.

PS > (Get-Ec2Instance -ProfileName ADFS-Production -Region ap-southeast-2).Instances | Select InstanceType, @{Name="Servername";Expression={$_.tags | where key -eq "Name" | Select Value -Expand Value}} InstanceType Servername ------------ ---------- t2.small DC2 t1.micro NAT1 t1.micro RDGW1 t1.micro RDGW2 t1.micro NAT2 t2.small DC1 t2.micro BUILD

Lectures complémentaires

Pour des informations générales sur la mise en œuvre de l'APIaccès fédéré, voir Comment implémenter une solution générale pour l'CLIaccès API fédéré/à l'aide SAML de la version 2.0.

Pour toute question ou commentaire d'assistance, rendez-vous sur les forums des AWS développeurs pour les PowerShell scripts ou. NETDéveloppement.