Share Your AWS re:Post Experience - Quick 3 Question Survey
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey.
Come posso concedere agli utenti Active Directory l'accesso all'API o all'interfaccia della linea di comando AWS (AWS CLI) con AD FS?
Ho configurato l'accesso alla Console di gestione AWS per gli utenti Active Directory tramite federazione. Desidero offrire agli utenti lo stesso accesso all’interfaccia della linea di comando (AWS CLI) utilizzando Active Directory Federation Services (AD FS).
Breve descrizione
Se consenti agli utenti federati SAML 2.0 di accedere alla Console di gestione AWS, gli utenti che necessitano di un accesso programmatico devono comunque disporre di una chiave di accesso e di una chiave segreta.
Per ottenere l'ID della chiave di accesso e la chiave di accesso segreta per un utente AWS Identity and Access Management (IAM), procedi in uno di questi modi:
- Configura l'interfaccia della linea di comando AWS (AWS CLI).
- Ottieni credenziali temporanee per consentire agli utenti federati di accedere all'interfaccia della linea di comando AWS (AWS CLI).
Prima di poter concedere l'accesso a un utente federato, procedi come segue:
- Attiva la federazione in AWS utilizzando Windows Active Directory, AD FS e SAML 2.0.
- Utilizza la versione 3.1.31.0 o superiore degli Strumenti AWS per PowerShell. È anche possibile installare la versione 2.36 o successiva (versione stabile) di AWS SDK per Python sulla workstation.
- Utilizzare un file di credenziali minime .aws/credentials.
Nota: questa soluzione non è compatibile se l'autenticazione a più fattori (MFA) è attivata per gli utenti della directory.
Soluzione
Se il gestore dell’identità digitale (IdP) è configurato per l’uso di Integrated Windows Authentication (IWA), NTLM o Kerberos (impostazione predefinita per AD FS 2.0), consulta la Soluzione 1. Se l’IdP è configurato per l’uso con l'autenticazione basata su moduli (impostazione predefinita per AD FS 3.0 e 4.0), consulta la Soluzione 2.
Nota: se ricevi errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.
PowerShell per AD FS con IWA (PowerShell 2.0)
1. Importa il modulo Windows PowerShell eseguendo il comando seguente:
> Import-Module "C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell\AWSPowerShell.psd1"
2. Imposta una variabile per l’endpoint AD FS eseguendo un comando simile al seguente:
> $Endpoint = 'https://adfs.example.com/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices'
Nota: il comando include l'URL completo della pagina di accesso a AD FS e il nome di risorsa uniforme di accesso (URN) per AWS.
3. Imposta l'endpoint SAML eseguendo un comando simile al seguente:
> $EndpointName = Set-AWSSamlEndpoint -Endpoint "$Endpoint" -StoreAs 'ADFS-Login' -AuthenticationType NTLM
Nota: per impostazione predefinita, AD FS 2.0 AuthenticationType è impostato su NTLM. Se non specifichi alcun valore per AuthenticationType nell'esempio precedente, Strumenti AWS utilizzerà Kerberos per impostazione predefinita.
4. Utilizza le impostazioni dell'endpoint archiviate per eseguire l'autenticazione con l'IdP AD FS e ottenere un elenco di ruoli che l'utente potrà assumere utilizzando uno dei seguenti metodi:
Utilizza le credenziali dell'utente attualmente connesso alla workstation.
> Set-AWSSamlRoleProfile -StoreAs 'SAMLUser' -EndpointName $EndpointName
-oppure-
Specifica le credenziali di un utente Active Directory.
> $Credential = Get-Credential -Message "Enter the domain credentials for the endpoint" > Set-AWSSamlRoleProfile -EndpointName $EndpointName -NetworkCredential $credential -StoreAs 'SAMLUser'
5. Se sono disponibili più ruoli, verrà chiesto di selezionare il ruolo che desideri assumere. Inserisci il carattere alfabetico nella sessione del terminale in modo simile al seguente:
SAMLUser[A] A - 123456789012:role/ADFS-DevAdmin [B] B - 123456789012:role/ADFS-DevReadOnly [?] Help (default is "A"): A
6. Esegui un comando simile al seguente per verificare che gli utenti possano accedere all'interfaccia della linea di comando AWS (AWS CLI) utilizzando le credenziali federate e il profilo specificato:
Get-IAMSAMLProviderList -ProfileName SAMLUser
Python per AD FS con autenticazione basata su moduli (impostazione predefinita per AD FS 3.0 e 4.0)
1. Installa i seguenti moduli in Python:
pip install --upgrade boto beautifulsoup4 requests
2. Implementa una soluzione generale per l'accesso federato alle API/CLI utilizzando SAML 2.0, quindi scarica lo script dal passaggio 4 di questo post di blog collegato.
3. Apri lo script e imposta la Regione preferita e il formato di output. Sostituisci adfs.example.com con l’URL, quindi inserisci il nome di dominio completo (FQDN) del server AD FS.
region = 'eu-west-1' outputformat = 'json' awsconfigfile = '/.aws/credentials' idpentryurl = 'https://adfs.example.com/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices'
Nota: se il percorso del file di credenziali AWS è diverso, specifica il percorso del file.
4. Salva le modifiche, esegui il file e compila i seguenti campi man mano che appaiono:
bob@Ubuntu64:~$ ./working_samlapi.py Username: bob@example.com Password: *********** Please choose the role you would like to assume: [ 0 ]: arn:aws:iam::123456789012:role/ADFS-DevAdmin [ 1 ]: arn:aws:iam::123456789012:role/ADFS-DevReadOnly Selection: 0 ---------------------------------------------------------------- Your new access key pair has been stored in the AWS configuration file /home/ec2-user/.aws/credentials under the saml profile. Note that it will expire at 2018-03-14T14:57:45Z. After this time, you may safely rerun this script to refresh your access key pair. To use this credential, call the AWS CLI with the --profile option (e.g. aws --profile saml ec2 describe-instances). ----------------------------------------------------------------
5. Una volta completata correttamente la federazione, esegui i comandi con il profilo SAML appena configurato utilizzando il parametro --profile nei comandi.
bob@Ubuntu64:~$ aws iam list-saml-providers --profile saml { "SAMLProviderList": [ { "CreateDate": "2018-03-14T13:28:24Z", "ValidUntil": "2118-03-14T13:28:23Z", "Arn": "arn:aws:iam::123456789012:saml-provider/adfs" } ] }
Informazioni correlate
Configure federated identity with the AWS Tools for PowerShell
Video correlati


Contenuto pertinente
- Come faccio a configurare AD FS come provider di identità SAML con un pool di utenti Amazon Cognito?AWS UFFICIALEAggiornata 4 anni fa
- AWS UFFICIALEAggiornata 2 anni fa