Tutoriel d'SSOutilisation du AWS CLI et. NETapplications - AWS SDK for .NET

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.

Tutoriel d'SSOutilisation du AWS CLI et. NETapplications

Ce didacticiel explique comment activer un SSO module de base. NETapplication et SSO utilisateur de test. Il utilise le AWS CLI pour générer un SSO jeton temporaire au lieu de le générer par programmation.

Ce didacticiel présente une petite partie des SSO fonctionnalités du AWS SDK for .NET. Pour plus de détails sur l'utilisation IAM d'Identity Center avec le AWS SDK for .NET, consultez la rubrique contenant des informations générales. Dans cette rubrique, consultez en particulier la description détaillée de ce scénario dans la sous-section intituléeAWS CLIet application .NET.

Note

Plusieurs étapes de ce didacticiel vous aident à configurer des services tels que AWS Organizations IAM Identity Center. Si vous avez déjà effectué ces configurations, ou si vous êtes uniquement intéressé par le code, vous pouvez passer à la section contenant l'exemple de code.

Prérequis

  • Configurez votre environnement de développement si ce n'est pas déjà fait. Ceci est décrit dans les sections telles que Installez et configurez votre chaîne d'outils etMise en route.

  • Identifiez ou créez-en au moins un Compte AWS que vous pouvez utiliser pour testerSSO. Dans le cadre de ce didacticiel, cela s'appelle le compte de test Compte AWS ou simplement le compte de test.

  • Identifiez un SSOutilisateur qui peut effectuer le test SSO pour vous. Il s'agit d'une personne qui utilisera SSO les applications de base que vous créez. Pour ce didacticiel, cette personne peut être vous (le développeur) ou quelqu'un d'autre. Nous recommandons également une configuration dans laquelle l'SSOutilisateur travaille sur un ordinateur qui ne se trouve pas dans votre environnement de développement. Cependant, cela n'est pas strictement nécessaire.

  • L'ordinateur de l'SSOutilisateur doit disposer d'un. NETframework installé compatible avec celui que vous avez utilisé pour configurer votre environnement de développement.

  • Assurez-vous que la AWS CLI version 2 est installée sur l'ordinateur de l'SSOutilisateur. Vous pouvez vérifier cela aws --version en exécutant une invite de commande ou un terminal.

Configurez AWS

Cette section explique comment configurer différents AWS services pour ce didacticiel.

Pour effectuer cette configuration, connectez-vous d'abord au test en Compte AWS tant qu'administrateur. Ensuite, procédez comme suit :

Amazon S3

Accédez à la console Amazon S3 et ajoutez des compartiments inoffensifs. Plus loin dans ce didacticiel, l'SSOutilisateur récupérera une liste de ces compartiments.

AWS IAM

Accédez à la IAMconsole et ajoutez quelques IAM utilisateurs. Si vous accordez des autorisations IAM aux utilisateurs, limitez-les à quelques autorisations inoffensives en lecture seule. Plus loin dans ce didacticiel, l'SSOutilisateur récupérera une liste de ces IAM utilisateurs.

AWS Organizations

Accédez à la AWS Organizations console et activez Organizations. Pour plus d'informations, consultez Création d'une organisation dans le AWS Organizations Guide de l'utilisateur.

Cette action ajoute le test Compte AWS à l'organisation en tant que compte de gestion. Si vous avez des comptes de test supplémentaires, vous pouvez les inviter à rejoindre l'organisation, mais cela n'est pas nécessaire pour ce didacticiel.

IAMCentre d'identité

Accédez à la console IAM Identity Center et activez-laSSO. Effectuez la vérification des e-mails si nécessaire. Pour plus d'informations, consultez la section Activer IAM Identity Center dans le guide de l'utilisateur d'IAMIdentity Center.

Effectuez ensuite la configuration suivante.

  1. Accédez à la page des paramètres. Recherchez le « portail d'accès URL » et enregistrez la valeur pour une utilisation ultérieure dans le sso_start_url paramètre.

  2. Dans la bannière du AWS Management Console, recherchez Région AWS celui qui a été défini lorsque vous l'avez activéSSO. Il s'agit du menu déroulant situé à gauche de l' Compte AWS identifiant. Enregistrez le code de région pour une utilisation ultérieure dans le sso_region réglage. Ce code sera similaire àus-east-1.

  3. Créez un SSO utilisateur comme suit :

    1. Accédez à la page Utilisateurs.

    2. Choisissez Ajouter un utilisateur et entrez le nom d'utilisateur, l'adresse e-mail, le prénom et le nom de famille de l'utilisateur. Ensuite, choisissez Suivant.

    3. Choisissez Suivant sur la page des groupes, puis passez en revue les informations et choisissez Ajouter un utilisateur.

  4. Créez un groupe comme suit :

    1. Accédez à la page Groupes.

    2. Choisissez Créer un groupe et entrez le nom et la description du groupe.

    3. Dans la section Ajouter des utilisateurs au groupe, sélectionnez l'SSOutilisateur de test que vous avez créé précédemment. Sélectionnez ensuite Créer un groupe.

  5. Créez un ensemble d'autorisations comme suit :

    1. Accédez à la page Ensembles d'autorisations et choisissez Créer un ensemble d'autorisations.

    2. Sous Type d'ensemble d'autorisations, sélectionnez Ensemble d'autorisations personnalisé, puis cliquez sur Suivant.

    3. Ouvrez Inline policy et entrez la politique suivante :

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "iam:ListUsers" ], "Resource": "*" } ] }
    4. Pour ce didacticiel, entrez le SSOReadOnlyRole nom du jeu d'autorisations. Ajoutez une description si vous le souhaitez, puis choisissez Next.

    5. Vérifiez les informations, puis choisissez Créer.

    6. Enregistrez le nom de l'ensemble d'autorisations pour une utilisation ultérieure dans le sso_role_name paramètre.

  6. Accédez à la page AWS des comptes et choisissez le AWS compte que vous avez ajouté à l'organisation précédemment.

  7. Dans la section Aperçu de cette page, recherchez l'identifiant du compte et enregistrez-le pour une utilisation ultérieure dans le sso_account_id paramètre.

  8. Choisissez l'onglet Utilisateurs et groupes, puis sélectionnez Attribuer des utilisateurs ou des groupes.

  9. Sur la page Attribuer des utilisateurs et des groupes, choisissez l'onglet Groupes, sélectionnez le groupe que vous avez créé précédemment, puis cliquez sur Suivant.

  10. Sélectionnez l'ensemble d'autorisations que vous avez créé précédemment et choisissez Suivant, puis Soumettre. La configuration prend quelques instants.

Création d'exemples d'applications

Créez les applications suivantes. Ils seront exécutés sur l'ordinateur de l'SSOutilisateur.

Incluez AWSSDK.SSO les NuGet packages et AWSSDK.SSOOIDC en plus de AWSSDK.S3 etAWSSDK.SecurityToken.

using System; using System.Threading.Tasks; // NuGet packages: AWSSDK.S3, AWSSDK.SecurityToken, AWSSDK.SSO, AWSSDK.SSOOIDC using Amazon.Runtime; using Amazon.Runtime.CredentialManagement; using Amazon.S3; using Amazon.S3.Model; using Amazon.SecurityToken; using Amazon.SecurityToken.Model; namespace SSOExample.S3.CLI_login { class Program { // Requirements: // - An SSO profile in the SSO user's shared config file. // - An active SSO Token. // If an active SSO token isn't available, the SSO user should do the following: // In a terminal, the SSO user must call "aws sso login --profile my-sso-profile". // Class members. private static string profile = "my-sso-profile"; static async Task Main(string[] args) { // Get SSO credentials from the information in the shared config file. var ssoCreds = LoadSsoCredentials(profile); // Display the caller's identity. var ssoProfileClient = new AmazonSecurityTokenServiceClient(ssoCreds); Console.WriteLine($"\nSSO Profile:\n {await ssoProfileClient.GetCallerIdentityArn()}"); // Display a list of the account's S3 buckets. // The S3 client is created using the SSO credentials obtained earlier. var s3Client = new AmazonS3Client(ssoCreds); Console.WriteLine("\nGetting a list of your buckets..."); var listResponse = await s3Client.ListBucketsAsync(); Console.WriteLine($"Number of buckets: {listResponse.Buckets.Count}"); foreach (S3Bucket b in listResponse.Buckets) { Console.WriteLine(b.BucketName); } Console.WriteLine(); } // Method to get SSO credentials from the information in the shared config file. static AWSCredentials LoadSsoCredentials(string profile) { var chain = new CredentialProfileStoreChain(); if (!chain.TryGetAWSCredentials(profile, out var credentials)) throw new Exception($"Failed to find the {profile} profile"); return credentials; } } // Class to read the caller's identity. public static class Extensions { public static async Task<string> GetCallerIdentityArn(this IAmazonSecurityTokenService stsClient) { var response = await stsClient.GetCallerIdentityAsync(new GetCallerIdentityRequest()); return response.Arn; } } }

Incluez AWSSDK.SSO les NuGet packages et AWSSDK.SSOOIDC en plus de AWSSDK.IdentityManagement etAWSSDK.SecurityToken.

using System; using System.Threading.Tasks; // NuGet packages: AWSSDK.IdentityManagement, AWSSDK.SecurityToken, AWSSDK.SSO, AWSSDK.SSOOIDC using Amazon.Runtime; using Amazon.Runtime.CredentialManagement; using Amazon.IdentityManagement; using Amazon.IdentityManagement.Model; using Amazon.SecurityToken; using Amazon.SecurityToken.Model; namespace SSOExample.IAM.CLI_login { class Program { // Requirements: // - An SSO profile in the SSO user's shared config file. // - An active SSO Token. // If an active SSO token isn't available, the SSO user should do the following: // In a terminal, the SSO user must call "aws sso login --profile my-sso-profile". // Class members. private static string profile = "my-sso-profile"; static async Task Main(string[] args) { // Get SSO credentials from the information in the shared config file. var ssoCreds = LoadSsoCredentials(profile); // Display the caller's identity. var ssoProfileClient = new AmazonSecurityTokenServiceClient(ssoCreds); Console.WriteLine($"\nSSO Profile:\n {await ssoProfileClient.GetCallerIdentityArn()}"); // Display a list of the account's IAM users. // The IAM client is created using the SSO credentials obtained earlier. var iamClient = new AmazonIdentityManagementServiceClient(ssoCreds); Console.WriteLine("\nGetting a list of IAM users..."); var listResponse = await iamClient.ListUsersAsync(); Console.WriteLine($"Number of IAM users: {listResponse.Users.Count}"); foreach (User u in listResponse.Users) { Console.WriteLine(u.UserName); } Console.WriteLine(); } // Method to get SSO credentials from the information in the shared config file. static AWSCredentials LoadSsoCredentials(string profile) { var chain = new CredentialProfileStoreChain(); if (!chain.TryGetAWSCredentials(profile, out var credentials)) throw new Exception($"Failed to find the {profile} profile"); return credentials; } } // Class to read the caller's identity. public static class Extensions { public static async Task<string> GetCallerIdentityArn(this IAmazonSecurityTokenService stsClient) { var response = await stsClient.GetCallerIdentityAsync(new GetCallerIdentityRequest()); return response.Arn; } } }

En plus d'afficher des listes de buckets et d'IAMutilisateurs Amazon S3, ces applications affichent l'identité de l'utilisateur ARN pour le profil SSO activé, décrit my-sso-profile dans ce didacticiel.

Instruire l'utilisateur SSO

Demandez à l'SSOutilisateur de vérifier ses e-mails et d'accepter l'SSOinvitation. Ils sont invités à définir un mot de passe. Le message peut prendre quelques minutes pour arriver dans la boîte de réception de SSO l'utilisateur.

Fournissez à l'SSOutilisateur les applications que vous avez créées précédemment.

Demandez ensuite à l'SSOutilisateur d'effectuer les opérations suivantes :

  1. Si le dossier contenant le AWS config fichier partagé n'existe pas, créez-le. Si le dossier existe et qu'un sous-dossier est appelé.sso, supprimez-le.

    L'emplacement de ce dossier est généralement %USERPROFILE%\.aws sous Windows, Linux et macOS. ~/.aws

  2. Créez un AWS config fichier partagé dans ce dossier, si nécessaire, et ajoutez-y un profil comme suit :

    [default] region = <default Region> [profile my-sso-profile] sso_start_url = <user portal URL recorded earlier> sso_region = <Region code recorded earlier> sso_account_id = <account ID recorded earlier> sso_role_name = SSOReadOnlyRole
  3. Exécutez l'application Amazon S3. Une exception d'exécution apparaît.

  4. Exécutez la AWS CLI commande suivante :

    aws sso login --profile my-sso-profile
  5. Sur la page de connexion Web qui s'affiche, connectez-vous. Utilisez le nom d'utilisateur indiqué dans le message d'invitation et le mot de passe créé en réponse au message.

  6. Exécutez à nouveau l'application Amazon S3. L'application affiche désormais la liste des compartiments S3.

  7. Lancez l'IAMapplication. L'application affiche la liste des IAM utilisateurs. Cela est vrai même si aucune deuxième connexion n'a été effectuée. L'IAMapplication utilise le jeton temporaire créé précédemment.

Nettoyage

Si vous ne souhaitez pas conserver les ressources que vous avez créées au cours de ce didacticiel, nettoyez-les. Il peut s'agir de AWS ressources ou de ressources de votre environnement de développement, telles que des fichiers et des dossiers.