Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Mettez à jour les informations d'identification de l'AWS CLI depuis AWS IAM Identity Center en utilisant PowerShell - Recommandations AWS

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.

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.

Mettez à jour les informations d'identification de l'AWS CLI depuis AWS IAM Identity Center en utilisant PowerShell

Créée par Chad Miles (AWS) et Andy Bowen (AWS)

Récapitulatif

Si vous souhaitez utiliser les informations d'identification AWS IAM Identity Center (successeur d'AWS Single Sign-On) avec AWS Command Line Interface (AWS CLI) SDKs, AWS ou AWS Cloud Development Kit (AWS CDK), vous devez généralement copier-coller les informations d'identification de la console IAM Identity Center dans l'interface de ligne de commande. Ce processus peut prendre un temps considérable et doit être répété pour chaque compte nécessitant un accès.

L'une des solutions les plus courantes consiste à utiliser la aws sso configure commande AWS CLI. Cette commande ajoute un profil activé par IAM Identity Center à votre CLI AWS ou à votre kit SDK AWS. Toutefois, l'inconvénient de cette solution est que vous devez exécuter la commande aws sso login pour chaque profil ou compte de l'interface de ligne de commande AWS que vous avez configuré de cette manière.

Comme solution alternative, ce modèle décrit comment utiliser les profils nommés de l'interface de ligne de commande AWS et les outils AWS PowerShell pour stocker et actualiser simultanément les informations d'identification de plusieurs comptes à partir d'une seule instance IAM Identity Center. Le script stocke également les données de session IAM Identity Center en mémoire pour actualiser les informations d'identification sans vous reconnecter à IAM Identity Center.

Conditions préalables et limitations

Prérequis

  • PowerShell, installé et configuré. Pour plus d'informations, consultez la section Installation PowerShell (documentation Microsoft).

  • Outils AWS pour PowerShell, installés et configurés. Pour des raisons de performances, nous vous recommandons vivement d'installer la version modulaire d'AWS Tools for PowerShell, appeléeAWS.Tools. Chaque service AWS est pris en charge par son propre petit module. À l' PowerShell invite, entrez les commandes suivantes pour installer les modules nécessaires à ce modèle : AWS.Tools.InstallerSSO, etSSOIDC.

    Install-Module AWS.Tools.Installer Install-AWSToolsModule SSO, SSOOIDC

    Pour plus d'informations, voir Installer AWS.tools sous Windows ou Installer AWS.tools sous Linux ou macOS.

  • L'AWS CLI ou le SDK AWS doivent être préalablement configurés avec des informations d'identification fonctionnelles en effectuant l'une des opérations suivantes :

Limites

  • Ce script ne peut pas être utilisé dans un pipeline ou dans une solution entièrement automatisée. Lorsque vous déployez ce script, vous devez autoriser manuellement l'accès depuis IAM Identity Center. Le script continue ensuite automatiquement.

Versions du produit

Architecture

Vous pouvez utiliser le script de ce modèle pour actualiser simultanément plusieurs informations d'identification IAM Identity Center, et vous pouvez créer un fichier d'informations d'identification à utiliser avec l'AWS CLI SDKs, AWS ou AWS CDK.

Utilisation d'un PowerShell script pour mettre à jour les informations d'identification dans l'AWS CLI, AWS CDK ou AWS SKDs.

Outils

Services AWS

  • L'interface de ligne de commande AWS (AWS CLI) est un outil open source qui vous permet d'interagir avec les services AWS par le biais de commandes dans votre shell de ligne de commande.

  • AWS IAM Identity Center vous aide à gérer de manière centralisée l'accès par authentification unique (SSO) à tous vos comptes AWS et applications cloud.

  • Les outils AWS pour PowerShell sont un ensemble de PowerShell modules qui vous aident à créer des scripts pour des opérations sur vos ressources AWS à partir de la ligne de PowerShell commande.

Autres outils

  • PowerShellest un programme d'automatisation et de gestion de configuration Microsoft qui s'exécute sous Windows, Linux et macOS.

Bonnes pratiques

Conservez une copie de ce script pour chaque instance d'IAM Identity Center. L'utilisation d'un script pour plusieurs instances n'est pas prise en charge.

Épopées

TâcheDescriptionCompétences requises

Personnalisez le script SSO.

  1. Copiez le script SSO dans la section Informations supplémentaires.

  2. Dans la Param section, pour votre environnement AWS, définissez les valeurs des variables suivantes :

    • DefaultRoleName— Le rôle ou l'ensemble d'autorisations IAM à utiliser par défaut.

    • Region— La région AWS dans laquelle le centre d'identité IAM est déployé. Pour une liste complète des régions et de leurs codes, consultez la section Points de terminaison régionaux.

    • StartUrl— L'URL utilisée pour accéder à votre page de connexion à IAM Identity Center. Utilisez le même format que celui de la valeur d'exemple dans le script.

    • EnvironmentName— Nom court pour faire référence à cette copie du script, à utiliser lorsque vous exécutez plusieurs copies de script au cours de la même session.

  3. Sous la ligne 10, qui se lit comme suit# Add your Account Information, modifiez les valeurs suivantes dans les tables de hachage pour refléter votre environnement :

    • Profile— Le nom du profil de l'AWS CLI dans lequel stocker les informations d'identification temporaires.

    • AccountId— L'ID du compte AWS pour lequel vous récupérez les informations d'identification.

    • RoleName— Le nom du rôle ou de l'ensemble d'autorisations IAM Identity Center que vous souhaitez utiliser. Vous pouvez laisser cela comme $DefaultRoleName si vous vouliez utiliser le même rôle que celui que vous avez défini dans la Param section.

    Chaque ligne de la table de hachage doit se terminer par une virgule, sauf la dernière.

Administrateur du cloud

Exécutez le script SSO.

Il est recommandé d'exécuter votre script personnalisé dans le PowerShell shell à l'aide de la commande suivante.

./Set-AwsCliSsoCredentials.ps1

Vous pouvez également exécuter le script depuis un autre shell en saisissant la commande suivante.

pwsh Set-AwsCliSsoCredentials.ps1
Administrateur du cloud

Exécutez le script SSO

TâcheDescriptionCompétences requises

Personnalisez le script SSO.

  1. Copiez le script SSO dans la section Informations supplémentaires.

  2. Dans la Param section, pour votre environnement AWS, définissez les valeurs des variables suivantes :

    • DefaultRoleName— Le rôle ou l'ensemble d'autorisations IAM à utiliser par défaut.

    • Region— La région AWS dans laquelle le centre d'identité IAM est déployé. Pour une liste complète des régions et de leurs codes, consultez la section Points de terminaison régionaux.

    • StartUrl— L'URL utilisée pour accéder à votre page de connexion à IAM Identity Center. Utilisez le même format que celui de la valeur d'exemple dans le script.

    • EnvironmentName— Nom court pour faire référence à cette copie du script, à utiliser lorsque vous exécutez plusieurs copies de script au cours de la même session.

  3. Sous la ligne 10, qui se lit comme suit# Add your Account Information, modifiez les valeurs suivantes dans les tables de hachage pour refléter votre environnement :

    • Profile— Le nom du profil de l'AWS CLI dans lequel stocker les informations d'identification temporaires.

    • AccountId— L'ID du compte AWS pour lequel vous récupérez les informations d'identification.

    • RoleName— Le nom du rôle ou de l'ensemble d'autorisations IAM Identity Center que vous souhaitez utiliser. Vous pouvez laisser cela comme $DefaultRoleName si vous vouliez utiliser le même rôle que celui que vous avez défini dans la Param section.

    Chaque ligne de la table de hachage doit se terminer par une virgule, sauf la dernière.

Administrateur du cloud

Exécutez le script SSO.

Il est recommandé d'exécuter votre script personnalisé dans le PowerShell shell à l'aide de la commande suivante.

./Set-AwsCliSsoCredentials.ps1

Vous pouvez également exécuter le script depuis un autre shell en saisissant la commande suivante.

pwsh Set-AwsCliSsoCredentials.ps1
Administrateur du cloud

Résolution des problèmes

ProblèmeSolution

No AccessErreur

Le rôle IAM que vous utilisez n'est pas autorisé à accéder au rôle ou à l'ensemble d'autorisations que vous avez défini dans un RoleName paramètre. Mettez à jour les autorisations pour le rôle que vous utilisez ou définissez un rôle ou un ensemble d'autorisations différent dans le script.

Ressources connexes

Informations supplémentaires

Script SSO

Dans le script suivant, remplacez les espaces réservés entre crochets (<>) par vos propres informations et supprimez les crochets.

Set-AwsCliSsoCredentials.ps1 Param( $DefaultRoleName = '<AWSAdministratorAccess>', $Region = '<us-west-2>', $StartUrl = "<https://d-12345abcde.awsapps.com/start/>", $EnvironmentName = "<CompanyName>" ) Try {$SsoAwsAccounts = (Get-Variable -name "$($EnvironmentName)SsoAwsAccounts" -Scope Global -ErrorAction 'SilentlyContinue').Value.Clone()} Catch {$SsoAwsAccounts = $False} if (-not $SsoAwsAccounts) { $SsoAwsAccounts = @( # Add your account information in the list of hash tables below, expand as necessary, and do not forget the commas @{Profile = "<Account1>" ; AccountId = "<012345678901 >"; RoleName = $DefaultRoleName }, @{Profile = "<Account2>" ; AccountId = "<123456789012>"; RoleName = "<AWSReadOnlyAccess>" } )} $ErrorActionPreference = "Stop" if (-not (Test-Path ~\.aws)) { New-Item ~\.aws -type Directory } if (-not (Test-Path ~\.aws\credentials)) { New-Item ~\.aws\credentials -type File } $CredentialFile = Resolve-Path ~\.aws\credentials $PsuedoCreds = @{AccessKey = 'AKAEXAMPLE123ACCESS';SecretKey='PsuedoS3cret4cceSSKey123PsuedoS3cretKey'} # Pseudo Creds, do not edit. Try {$SSOTokenExpire = (Get-Variable -Scope Global -Name "$($EnvironmentName)SSOTokenExpire" -ErrorAction 'SilentlyContinue').Value} Catch {$SSOTokenExpire = $False} Try {$SSOToken = (Get-Variable -Scope Global -Name "$($EnvironmentName)SSOToken" -ErrorAction 'SilentlyContinue').Value } Catch {$SSOToken = $False} if ( $SSOTokenExpire -lt (Get-Date) ) { $SSOToken = $Null $Client = Register-SSOOIDCClient -ClientName cli-sso-client -ClientType public -Region $Region @PsuedoCreds $Device = $Client | Start-SSOOIDCDeviceAuthorization -StartUrl $StartUrl -Region $Region @PsuedoCreds Write-Host "A Browser window should open. Please login there and click ALLOW." -NoNewline Start-Process $Device.VerificationUriComplete While (-Not $SSOToken){ Try {$SSOToken = $Client | New-SSOOIDCToken -DeviceCode $Device.DeviceCode -GrantType "urn:ietf:params:oauth:grant-type:device_code" -Region $Region @PsuedoCreds} Catch {If ($_.Exception.Message -notlike "*AuthorizationPendingException*"){Write-Error $_.Exception} ; Start-Sleep 1} } $SSOTokenExpire = (Get-Date).AddSeconds($SSOToken.ExpiresIn) Set-Variable -Name "$($EnvironmentName)SSOToken" -Value $SSOToken -Scope Global Set-Variable -Name "$($EnvironmentName)SSOTokenExpire" -Value $SSOTokenExpire -Scope Global } $CredsTime = $SSOTokenExpire - (Get-Date) $CredsTimeText = ('{0:D2}:{1:D2}:{2:D2} left on SSO Token' -f $CredsTime.Hours, $CredsTime.Minutes, $CredsTime.Seconds).TrimStart("0 :") for ($i = 0; $i -lt $SsoAwsAccounts.Count; $i++) { if (([DateTimeOffset]::FromUnixTimeSeconds($SsoAwsAccounts[$i].CredsExpiration / 1000)).DateTime -lt (Get-Date).ToUniversalTime()) { Write-host "`r `rRegistering Profile $($SsoAwsAccounts[$i].Profile)" -NoNewline $TempCreds = $SSOToken | Get-SSORoleCredential -AccountId $SsoAwsAccounts[$i].AccountId -RoleName $SsoAwsAccounts[$i].RoleName -Region $Region @PsuedoCreds [PSCustomObject]@{AccessKey = $TempCreds.AccessKeyId; SecretKey = $TempCreds.SecretAccessKey; SessionToken = $TempCreds.SessionToken } | Set-AWSCredential -StoreAs $SsoAwsAccounts[$i].Profile -ProfileLocation $CredentialFile $SsoAwsAccounts[$i].CredsExpiration = $TempCreds.Expiration } } Set-Variable -name "$($EnvironmentName)SsoAwsAccounts" -Value $SsoAwsAccounts.Clone() -Scope Global Write-Host "`r$($SsoAwsAccounts.Profile) Profiles registered, $CredsTimeText"
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.