Utilisation des informations d'identification AWS - AWS Tools for PowerShell

Utilisation des informations d'identification AWS

Chaque commande des AWS Tools for PowerShell doit inclure un ensemble d'informations d'identification AWS, qui sont utilisées pour signer de manière chiffrée la demande de service web correspondante. Vous pouvez spécifier les informations d'identification par commande, par session ou pour toutes les sessions.

En tant que bonne pratique, afin d'éviter d'exposer vos informations d'identification, ne placez pas d'informations d'identification littérales dans une commande. Au lieu de cela, créez un profil pour chaque ensemble d'informations d'identification que vous souhaitez utiliser et stockez le profil dans l'un ou l'autre des magasins d'informations d'identification. Spécifiez le profil approprié par son nom dans votre commande. Les AWS Tools for PowerShell récupéreront alors les informations d'identification associées. Pour obtenir une description générale de la manière de gérer en toute sécurité les informations d'identification AWS, veuillez consulter Bonnes pratiques en matière de gestion des clés d'accès AWS dans la référence générale Amazon Web Services.

Note

Vous avez besoin d'un compte AWS pour obtenir des informations d'identification et utiliser les AWS Tools for PowerShell. Pour plus d'informations sur l'inscription à un compte, consultez Compte Compte AWS et clés d'accès.

Emplacements de stockage des informations d'identification

Les AWS Tools for PowerShell peuvent utiliser l'un ou l'autre des emplacements de stockage des informations d'identification :

  • Le magasin SDK AWS, qui chiffre vos informations d'identification et les stocke dans votre dossier de base. Sous Windows, ce magasin se trouve à l'adresse suivante : C:\Users\username\AppData\Local\AWSToolkit\RegisteredAccounts.json.

    Les AWS SDK for .NET et Toolkit for Visual Studio peuvent également utiliser le magasin SDK AWS.

  • Le fichier d'informations d'identification partagées, qui est également situé dans votre dossier de base, mais qui stocke les informations d'identification en texte brut.

    Par défaut, le fichier d'informations d'identification est stocké ici :

    • Sur Windows : C:\Users\username\.aws\credentials

    • Sur Mac/Linux : ~/.aws/credentials

    Les kits SDK AWS et l'AWS Command Line Interface peuvent également utiliser le fichier d'informations d'identification. Si vous exécutez un script en dehors de votre contexte d'utilisateur AWS, veillez à ce que le fichier qui contient vos informations d'identification soit copié dans un emplacement dans lequel tous les comptes d'utilisateur (système local et utilisateur) peuvent accéder à vos informations d'identification.

Gestion des profils

Les profils vous permettent de référencer différents jeux d'informations d'identification avec les AWS Tools for PowerShell. Vous pouvez utiliser les applets de commande des AWS Tools for PowerShell pour gérer vos profils dans le magasin SDK AWS. Vous pouvez également gérer les profils du magasin SDK AWS à l'aide du Toolkit for Visual Studio ou par programmation à l'aide du AWS SDK for .NET. Pour obtenir des instructions de gestion des profils dans le fichier d'informations d'identification, veuillez consulter Bonnes pratiques en matière de gestion des clés d'accès AWS.

Ajouter un profil

Pour ajouter un nouveau profil au magasin SDK AWS, exécutez la commande Set-AWSCredential. Le magasin stocke votre clé d'accès et votre clé secrète dans votre fichier d'informations d'identification par défaut sous le nom de profil que vous spécifiez.

PS > Set-AWSCredential ` -AccessKey AKIA0123456787EXAMPLE ` -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY ` -StoreAs MyNewProfile
  • -AccessKey – L'ID de la clé d'accès.

  • -SecretKey – La clé secrète.

  • -StoreAs – Le nom du profil, qui doit être unique. Pour spécifier le profil par défaut, utilisez le nom default.

Mettre à jour un profil

Le magasin SDK AWS doit être tenu à jour manuellement. Si vous modifiez ultérieurement les informations d'identification du service, en utilisant par exemple la console IAM, l'exécution d'une commande avec les informations d'identification stockées localement échouera avec le message d'erreur suivant :

The Access Key Id you provided does not exist in our records.

Vous pouvez mettre à jour un profil en répétant la commande Set-AWSCredential pour le profil et en lui transmettant les nouvelles clé d'accès et clé secrète.

Répertorier les profils

Vous pouvez vérifier la liste actuelle des noms à l'aide de la commande suivante. Dans cet exemple, un utilisateur nommé Shirley a accès à trois profils qui sont tous stockés dans le fichier d'informations d'identification partagées (~/.aws/credentials).

PS > Get-AWSCredential -ListProfileDetail ProfileName StoreTypeName ProfileLocation ----------- ------------- --------------- default SharedCredentialsFile /Users/shirley/.aws/credentials production SharedCredentialsFile /Users/shirley/.aws/credentials test SharedCredentialsFile /Users/shirley/.aws/credentials

Supprimer un profil

Pour supprimer un profil dont vous n'avez plus besoin, utilisez la commande suivante.

PS > Remove-AWSCredentialProfile -ProfileName an-old-profile-I-do-not-need

Le paramètre -ProfileName spécifie le profil que vous souhaitez supprimer.

La commande obsolète Clear-AWSCredential est toujours disponible pour la rétrocompatibilité, mais vous devez lui préférer Remove-AWSCredentialProfile.

Spécification des informations d'identification

Vous pouvez spécifier les informations d'identification de plusieurs façons. La méthode conseillée consiste à identifier un profil au lieu d'incorporer des informations d'identification littérales dans votre ligne de commande. Les AWS Tools for PowerShell localisent le profil à l'aide d'un ordre de recherche décrit dans Ordre de recherche des informations d'identification.

Sous Windows, les informations d'identification AWS stockées dans le magasin du kit SDK AWS sont chiffrées avec l'identité utilisateur Windows connectée. Elles ne peuvent pas être déchiffrées en utilisant un autre compte ou utilisées sur un appareil différent de celui sur lequel elles ont été créées à l'origine. Pour exécuter les tâches qui requièrent les informations d'identification d'un autre utilisateur, tel qu'un compte utilisateur sous lequel une tâche planifiée devra être exécutée, configurez un profil d'informations d'identification, comme décrit dans la section précédente, que vous pourrez utiliser lorsque vous vous connecterez à l'ordinateur en tant qu'utilisateur. Connectez-vous en tant qu'utilisateur exécutant des tâches pour terminer les étapes de configuration des informations d'identification et créez un profil qui fonctionne pour cet utilisateur. Ensuite, déconnectez-vous, puis reconnectez-vous avec vos propres informations d'identification pour configurer la tâche planifiée.

Note

Utilisez le paramètre -ProfileName pour spécifier un profil. Ce paramètre est l'équivalent du paramètre -StoredCredentials des versions précédentes des AWS Tools for PowerShell. Pour des raisons de rétrocompatibilité, -StoredCredentials est toujours prise en charge.

Tous les kits SDK et les outils de gestion AWS peuvent trouver vos informations d'identification automatiquement sur votre ordinateur local si les informations d'identification sont stockées dans un profil nommé default. Par exemple, si vous avez un profil nommé default sur l'ordinateur local, vous n'avez pas à exécuter l'applet de commande Initialize-AWSDefaultConfiguration ou Set-AWSCredential. Les outils utilisent automatiquement les données de clé d'accès et de clé secrète stockées dans ce profil. Pour utiliser une région AWS autre que la région par défaut (les résultats de Get-DefaultAWSRegion), vous pouvez exécuter Set-DefaultAWSRegion et spécifier une région.

Si votre profil n'est pas nommé default, mais que vous souhaitez l'utiliser en tant que profil par défaut pour la session en cours, exécutez Set-AWSCredential pour le définir en tant que profil par défaut.

Même si l'exécution de Initialize-AWSDefaultConfiguration vous permet de spécifier un profil par défaut pour chaque session PowerShell, l'applet de commande charge les informations d'identification depuis votre profil dont le nom est personnalisé, mais remplace le profil default par le profil nommé.

Nous vous recommandons de ne pas exécuter, Initialize-AWSDefaultConfiguration sauf si vous exécutez une session PowerShell sur une instance Amazon EC2 qui n'a pas été lancée avec un profil d'instance, et que vous voulez configurer le profil d'informations d'identification manuellement. Notez que le profil d'informations d'identification ne contient pas d'informations d'identification dans ce scénario. Le profil d'informations d'identification résultant de l'exécution de Initialize-AWSDefaultConfiguration sur une instance EC2 ne stocke pas directement les informations d'identification, mais pointe plutôt vers les métadonnées d'instance (qui fournissent des informations d'identification temporaires effectuant une rotation automatique). Cependant, il stocke la région de l'instance. Il se produit un autre scénario pouvant nécessiter l'exécution de Initialize-AWSDefaultConfiguration si vous voulez exécuter un appel sur une région autre que celle dans laquelle l'instance s'exécute. L'exécution de cette commande remplace définitivement la région stockée dans les métadonnées de l'instance.

PS > Initialize-AWSDefaultConfiguration -ProfileName MyProfileName -Region us-west-2
Note

Par défaut, les informations d'identification sont incluses dans le magasin SDK AWS sous le nom de profil default. La commande remplace tout profil existant par ce nom.

Si votre instance EC2 a été lancée avec un profil d'instance, PowerShell obtient automatiquement les informations d'identification AWS et les informations de région depuis le profil d'instance. Vous n'avez pas besoin d'exécuter Initialize-AWSDefaultConfiguration. L'exécution de l'applet de commande Initialize-AWSDefaultConfiguration sur une instance EC2 lancée avec un profil d'instance n'est pas nécessaire, car l'applet utilise les mêmes données de profil d'instance que celles déjà utilisées par PowerShell par défaut.

Profil de session

Utilisez Set-AWSCredential pour spécifier un profil par défaut pour une session particulière. Ce profil remplace tout profil par défaut pendant la durée de la session. Nous vous recommandons de l'utiliser si vous souhaitez utiliser un profil dont le nom est personnalisé dans votre session au lieu du profil default actuel.

PS > Set-AWSCredential -ProfileName MyProfileName
Note

Dans les versions des Tools for Windows PowerShell antérieures à 1.1, l'applet de commande Set-AWSCredential ne fonctionnait pas correctement et vous deviez remplacer le profil spécifié par « MyProfileName ». Nous vous recommandons d'utiliser une version plus récente des Tools for Windows PowerShell.

Profil de commande

Dans les commandes individuelles, vous pouvez ajouter le paramètre -ProfileName pour spécifier un profil qui ne s'applique qu'à cette commande. Ce profil remplace tous les profils par défaut ou de session, comme illustré dans l'exemple suivant.

PS > Get-EC2Instance -ProfileName MyProfileName
Note

Lorsque vous indiquez un profil de session ou un profil par défaut, vous pouvez également ajouter un paramètre -Region pour remplacer une région de session ou par défaut. Pour de plus amples informations, veuillez consulter Spécification des régions AWS. L'exemple suivant spécifie un profil et une région par défaut.

PS > Initialize-AWSDefaultConfiguration -ProfileName MyProfileName -Region us-west-2

Par défaut, le fichier d'informations d'identification partagées AWS est supposé être dans le dossier de base de l'utilisateur (C:\Users\username\.aws sous Windows ou ~/.aws sous Linux). Pour spécifier un fichier d'informations d'identification situé dans un autre emplacement, incluez le paramètre -ProfileLocation et spécifiez le chemin d'accès du fichier d'informations d'identification. L'exemple suivant spécifie un fichier d'informations d'identification autre que par défaut pour une commande spécifique.

PS > Get-EC2Instance -ProfileName MyProfileName -ProfileLocation C:\aws_service_credentials\credentials
Note

Si vous exécutez un script PowerShell à un moment où vous n'êtes pas normalement connecté à AWS (par exemple, vous exécutez un script PowerShell comme une tâche planifiée en dehors de vos heures de travail habituelles), ajoutez le paramètre -ProfileLocation lorsque vous spécifiez le profil que vous souhaitez utiliser et définissez la valeur du chemin du fichier qui stocke vos informations d'identification. Pour être certain que votre script des AWS Tools for PowerShell s'exécute avec les informations d'identification de compte correctes, vous devez ajouter le paramètre -ProfileLocation chaque fois que votre script s'exécute dans un contexte ou processus qui n'utilise pas de compte AWS. Vous pouvez également copier votre fichier d'informations d'identification dans un emplacement accessible au système local ou dans un autre compte que vos scripts utilisent pour exécuter les tâches.

Ordre de recherche des informations d'identification

Lorsque vous exécutez une commande, les AWS Tools for PowerShell recherchent les informations d'identification dans l'ordre suivant. Ils s'arrêtent lorsqu'ils trouvent des informations d'identification utilisables.

  1. Informations d'identification littérales intégrées en tant que paramètres dans la ligne de commande.

    Nous vous recommandons vivement d'utiliser des profils plutôt que de placer des informations d'identification littérales dans vos lignes de commande.

  2. Un nom de profil ou un emplacement de profil spécifié.

    • Si vous spécifiez uniquement un nom de profil, la commande recherchera le profil spécifié dans le magasin SDK AWS et, s'il n'existe pas, le profil spécifié dans le fichier d'informations d'identification partagées AWS de l'emplacement par défaut.

    • Si vous spécifiez uniquement un emplacement de profil, la commande recherchera le profil default dans ce fichier d'informations d'identification.

    • Si vous spécifiez à la fois un nom et un emplacement, la commande recherchera le profil spécifié dans ce fichier d'informations d'identification.

    Si le profil ou l'emplacement spécifié est introuvable, la commande lèvera une exception. La recherche exécute les étapes suivantes uniquement si vous n'avez pas spécifié de profil ou d'emplacement.

  3. Informations d'identification spécifiées par le paramètre -Credential.

  4. Le profil de session, s'il en existe un.

  5. Le profil par défaut, dans l'ordre suivant :

    1. Le profil default dans le magasin SDK AWS.

    2. Le profil default dans le fichier d'informations d'identification partagées AWS.

    3. Le profil AWS PS Default dans le magasin SDK AWS.

  6. Si la commande s'exécute sur une instance Amazon EC2 configurée pour utiliser un rôle IAM, les informations d'identification temporaires de l'instance EC2 auxquelles le système a accédé à partir du profil d'instance.

    Pour en savoir plus sur l'utilisation des rôles IAM pour les instances Amazon EC2, consultez la section AWS SDK for .NET.

Si cette recherche échoue à retrouver les informations d'identification spécifiées, la commande lèvera une exception.

Gestion des informations d'identification dans les AWS Tools for PowerShell Core

Les applets de commande des AWS Tools for PowerShell Core acceptent les clés d'accès et les clés secrètes AWS ou les noms des profils d'informations d'identification lorsqu'ils s'exécutent, de la même manière que les AWS Tools for Windows PowerShell. Lorsqu'ils s'exécutent sur Windows, les deux modules ont accès au fichier du magasin d'informations d'identification du kit AWS SDK for .NET (stocké dans le fichier AppData\Local\AWSToolkit\RegisteredAccounts.json par utilisateur).

Ce fichier stocke vos clés dans un format chiffré et ne peut pas être utilisé sur un autre ordinateur. Il s'agit du premier fichier dans lequel les AWS Tools for PowerShell recherchent un profil d'informations d'identification et il s'agit également du fichier dans lequel les AWS Tools for PowerShell stockent les profils d'informations d'identification. Pour de plus amples informations sur le fichier du magasin d'informations d'identification du AWS SDK for .NET, consultez Configuration des informations d'identification AWS. Le module Tools for Windows PowerShell ne prend pas en charge actuellement l'écriture des informations d'identification sur d'autres fichiers ou emplacements.

Ces deux modules peuvent lire les profils à partir du fichier d'informations d'identification partagées AWS, lequel fichier est utilisé par d'autres kits SDK AWS et par l'AWS CLI. Sous Windows, l'emplacement par défaut du fichier est C:\Users\<userid>\.aws\credentials. Sur les plates-formes autres que Windows, le fichier est stocké à l'emplacement ~/.aws/credentials. Le paramètre -ProfileLocation peut être utilisé pour pointer vers un nom de fichier ou emplacement du fichier autre que par défaut.

Le magasin d'informations d'identification du kit SDK conserve vos informations d'identification sous une forme chiffrée à l'aide des API de chiffrement Windows. Ces API ne sont pas disponibles sur d'autres plates-formes, de telle sorte que le module des AWS Tools for PowerShell Core utilise exclusivement le fichier d'informations d'identification partagées AWS et prend en charge l'écriture de nouveaux profils d'informations d'identification dans le fichier d'informations d'identification partagées.

Les exemples de scripts suivants qui utilisent l'applet de commande Set-AWSCredential montrent les options de gestion des profils d'informations d'identification sous Windows avec le module AWSPowerShell ou le module AWSPowerShell.NetCore.

# Writes a new (or updates existing) profile with name "myProfileName" # in the encrypted SDK store file Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName # Checks the encrypted SDK credential store for the profile and then # falls back to the shared credentials file in the default location Set-AWSCredential -ProfileName myProfileName # Bypasses the encrypted SDK credential store and attempts to load the # profile from the ini-format credentials file "mycredentials" in the # folder C:\MyCustomPath Set-AWSCredential -ProfileName myProfileName -ProfileLocation C:\MyCustomPath\mycredentials

Les exemples suivants illustrent le comportement du module AWSPowerShell.NetCore sous Linux ou macOS.

# Writes a new (or updates existing) profile with name "myProfileName" # in the default shared credentials file ~/.aws/credentials Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName # Writes a new (or updates existing) profile with name "myProfileName" # into an ini-format credentials file "~/mycustompath/mycredentials" Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName -ProfileLocation ~/mycustompath/mycredentials # Reads the default shared credential file looking for the profile "myProfileName" Set-AWSCredential -ProfileName myProfileName # Reads the specified credential file looking for the profile "myProfileName" Set-AWSCredential -ProfileName myProfileName -ProfileLocation ~/mycustompath/mycredentials