Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Tutorial per SSO l'uso della AWS CLI sabbia. NETapplicazioni
Questo tutorial mostra come abilitarlo SSO per una base. NETapplicazione e un SSO utente di prova. Utilizza il AWS CLI per generare un SSO token temporaneo invece di generarlo a livello di codice.
Questo tutorial mostra una piccola parte delle SSO funzionalità di. AWS SDK for .NET Per informazioni complete sull'utilizzo di IAM Identity Center con AWS SDK for .NET, consulta l'argomento con informazioni di base. In tale argomento, si veda in particolare la descrizione di alto livello di questo scenario nella sottosezione denominata. AWS CLIe applicazione.NET
Nota
Diversi passaggi di questo tutorial consentono di configurare servizi come IAM Identity AWS Organizations Center. Se hai già eseguito queste configurazioni o sei interessato solo al codice, puoi passare alla sezione con il codice di esempio.
Prerequisiti
-
Configura il tuo ambiente di sviluppo se non l'hai già fatto. Questo è descritto in sezioni come Installa e configura la tua toolchain eInizia a usare.
-
Identificane o creane almeno uno Account AWS che puoi usare per il testSSO. Ai fini di questo tutorial, questo è chiamato test Account AWS o semplicemente account di test.
-
Identifica un SSOutente che può eseguire il test SSO per te. Questa è una persona che SSO utilizzerà le applicazioni di base che creerai. Per questo tutorial, quella persona potresti essere tu (lo sviluppatore) o qualcun altro. Consigliamo inoltre una configurazione in cui l'SSOutente lavori su un computer che non si trova nel tuo ambiente di sviluppo. Tuttavia, ciò non è strettamente necessario.
-
Il computer dell'SSOutente deve avere un. NETè installato un framework compatibile con quello utilizzato per configurare l'ambiente di sviluppo.
-
Assicurati che la AWS CLI versione 2 sia installata sul computer SSO dell'utente. Puoi verificarlo
aws --version
eseguendo un prompt dei comandi o un terminale.
Configurare AWS
Questa sezione mostra come configurare vari AWS servizi per questo tutorial.
Per eseguire questa configurazione, accedi prima al test Account AWS come amministratore. Successivamente, esegui queste operazioni:
Amazon S3
Vai alla console Amazon S3
AWS IAM
Vai alla IAMconsole
AWS Organizations
Vai alla AWS Organizations console
Questa azione aggiunge il test Account AWS all'organizzazione come account di gestione. Se disponi di account di prova aggiuntivi, puoi invitarli a far parte dell'organizzazione, ma non è necessario farlo per questo tutorial.
IAMIdentity Center
Vai alla console di IAM Identity Center
Quindi, esegui la seguente configurazione.
-
Vai alla pagina Impostazioni. Cerca il «portale di accessoURL" e registra il valore per un uso successivo nell'
sso_start_url
impostazione. -
Nel banner di AWS Management Console, cerca Regione AWS quello che è stato impostato quando l'hai abilitatoSSO. Questo è il menu a discesa a sinistra dell' Account AWS ID. Registra il codice regionale per utilizzarlo successivamente nell'
sso_region
impostazione. Questo codice sarà simile aus-east-1
. -
Crea un SSO utente come segue:
-
Vai alla pagina Utenti.
-
Scegli Aggiungi utente e inserisci il nome utente, l'indirizzo e-mail, il nome e il cognome dell'utente. Quindi, seleziona Next (Successivo).
-
Scegli Avanti nella pagina per i gruppi, quindi rivedi le informazioni e scegli Aggiungi utente.
-
-
Crea un gruppo come segue:
-
Vai alla pagina Gruppi.
-
Scegli Crea gruppo e inserisci il nome e la descrizione del gruppo.
-
Nella sezione Aggiungi utenti al gruppo, seleziona l'SSOutente di prova che hai creato in precedenza. Quindi, seleziona Crea gruppo.
-
-
Crea un set di autorizzazioni come segue:
-
Vai alla pagina Set di autorizzazioni e scegli Crea set di autorizzazioni.
-
In Tipo di set di autorizzazioni, seleziona Set di autorizzazioni personalizzato e scegli Avanti.
-
Apri Inline policy e inserisci la seguente policy:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "iam:ListUsers" ], "Resource": "*" } ] }
-
Per questo tutorial, inserisci
SSOReadOnlyRole
come nome del set di autorizzazioni. Aggiungi una descrizione se lo desideri, quindi scegli Avanti. -
Controlla le informazioni, quindi scegli Crea.
-
Registra il nome del set di autorizzazioni per utilizzarlo successivamente nell'
sso_role_name
impostazione.
-
-
Vai alla pagina degli AWS account e scegli l' AWS account che hai aggiunto all'organizzazione in precedenza.
-
Nella sezione Panoramica di quella pagina, trova l'ID dell'account e registralo per un uso successivo nell'
sso_account_id
impostazione. -
Scegli la scheda Utenti e gruppi, quindi scegli Assegna utenti o gruppi.
-
Nella pagina Assegna utenti e gruppi, scegli la scheda Gruppi, seleziona il gruppo creato in precedenza e scegli Avanti.
-
Seleziona il set di autorizzazioni creato in precedenza e scegli Avanti, quindi scegli Invia. La configurazione richiede alcuni istanti.
Crea applicazioni di esempio
Create le seguenti applicazioni. Verranno eseguiti sul computer SSO dell'utente.
Include NuGet pacchetti AWSSDK.SSO
e AWSSDK.SSOOIDC
in aggiunta a AWSSDK.S3
e. AWSSDK.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; } } }
Includi NuGet pacchetti AWSSDK.SSO
e AWSSDK.SSOOIDC
in aggiunta a AWSSDK.IdentityManagement
eAWSSDK.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; } } }
Oltre a visualizzare gli elenchi di bucket e IAM utenti di Amazon S3, queste applicazioni mostrano l'identità utente ARN per il profilo SSO -enabled, illustrato in questo my-sso-profile
tutorial.
Istruisci l'utente SSO
Chiedi all'SSOutente di controllare la posta elettronica e accettare l'SSOinvito. Viene richiesto loro di impostare una password. Il messaggio potrebbe impiegare alcuni minuti per arrivare nella casella di posta dell'SSOutente.
Fornisci all'SSOutente le applicazioni che hai creato in precedenza.
Quindi, chiedi all'SSOutente di fare quanto segue:
-
Se la cartella che contiene il AWS
config
file condiviso non esiste, creala. Se la cartella esiste e contiene una sottocartella chiamata.sso
, elimina quella sottocartella.La posizione di questa cartella è
%USERPROFILE%\.aws
in genere in Windows, Linux e macOS.~/.aws
-
Crea un AWS
config
file condiviso in quella cartella, se necessario, e aggiungi un profilo come segue:[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 -
Esegui l'applicazione Amazon S3. Viene visualizzata un'eccezione di runtime.
-
Esegui il AWS CLI comando seguente:
aws sso login --profile
my-sso-profile
-
Nella pagina di accesso Web risultante, accedi. Utilizza il nome utente contenuto nel messaggio di invito e la password creata in risposta al messaggio.
-
Esegui nuovamente l'applicazione Amazon S3. L'applicazione ora visualizza l'elenco dei bucket S3.
-
Esegui l'applicazione. IAM L'applicazione visualizza l'elenco degli IAM utenti. Questo è vero anche se non è stato eseguito un secondo accesso. L'IAMapplicazione utilizza il token temporaneo creato in precedenza.
Rimozione
Se non vuoi conservare le risorse che hai creato durante questo tutorial, puliscile. Queste potrebbero essere AWS risorse o risorse presenti nel tuo ambiente di sviluppo, ad esempio file e cartelle.