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
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.
-
Le client sur l'ordinateur de l'utilisateur fédéré s'authentifie par rapport aux services AD FS.
-
Si l'authentification réussit, AD FS envoie une SAML assertion à l'utilisateur.
-
Le client de l'utilisateur envoie l'SAMLassertion à AWS Security Token Service (STS) dans le cadre d'une demande de SAML fédération.
-
STSrenvoie une SAML réponse contenant des informations d'identification AWS temporaires pour un rôle que l'utilisateur peut assumer.
-
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.
-
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
-
AD FS authentifie l'utilisateur.
-
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.
-
AWS Tools for PowerShell transmet la SAML demande, y compris les Amazon Resource Names (ARN) du rôle demandé, à STS en effectuant l'
AssumeRoleWithSAMLRequest
APIappel. -
Si la SAML demande est valide, STS renvoie une réponse contenant le AWS
AccessKeyId
SecretAccessKey
, etSessionToken
. Ces informations d'identification durent 3 600 secondes (1 heure). -
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 commandeSet-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-AWSCredential
applet 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
-
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" -
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ètreAuthenticationType
. Les valeurs valides incluentBasic
,Digest
,Kerberos
,Negotiate
etNTLM
. Si vous ne spécifiez pas ce paramètre, la valeur par défaut estKerberos
.PS >
$epName = Set-AWSSamlEndpoint -Endpoint $endpoint -StoreAs
ADFS-Demo
-AuthenticationType NTLML'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écutezSet-AWSSamlRoleProfile
à la ligne suivante. -
Exécutez maintenant l'
Set-AWSSamlRoleProfile
applet 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 $epNamePour 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
-
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
etADFS-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
etNetworkCredential
(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
-
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 AMamzn-s3-demo-bucket1
4/15/2015 6:15:53 AMamzn-s3-demo-bucket2
1/12/2015 11:20:16 PMamzn-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
Pour toute question ou commentaire d'assistance, rendez-vous sur les forums des AWS développeurs pour les PowerShell scripts