Wie gewähre ich meinen Active Directory-Benutzern Zugriff auf die API oder AWS CLI mit AD FS?

Lesedauer: 5 Minute
0

Ich habe den Zugriff auf die AWS-Managementkonsole für meine Active Directory-Benutzer mithilfe eines Verbunds konfiguriert. Ich möchte Benutzern den gleichen Zugriff auf das AWS Command Line Interface (AWS CLI) mithilfe von Active Directory-Verbundsdiensten (Active Directory Federation Services, AD FS) gewähren.

Kurzbeschreibung

Wenn du SAML 2.0-Verbundbenutzern den Zugriff auf die AWS-Managementkonsole gewährst, müssen Benutzer, die den programmatischen Zugriff benötigen, dennoch über einen Zugriffsschlüssel und einen geheimen Schlüssel verfügen.

Um die Zugangsschlüssel-ID und den geheimen Zugriffsschlüssel für einen AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement)-Benutzer abzurufen, gehe wie folgt vor:

  • Konfiguriere die AWS CLI.
  • Rufe temporäre Anmeldeinformationen für Verbundbenutzer ab, um auf die AWS CLI zuzugreifen.

Bevor du einem Verbundbenutzer Zugriff gewähren kannst, gehe wie folgt vor:

**Hinweis:**Diese Lösung ist nicht kompatibel, wenn du die Multi-Faktor-Authentifizierung (MFA) für deine Verzeichnisbenutzer aktiviert hast.

Behebung

Wenn dein Identitätsanbieter (IDP) so konfiguriert ist, dass er mit Integrated Windows Authentication (IWA), NTLM oder Kerberos (Standard für AD FS 2.0) funktioniert, findest du weitere Informationen unter Lösung 1. Wenn dein IDP für die Verwendung mit formularbasierter Authentifizierung (Standard für AD FS 3.0 und 4.0) konfiguriert ist, findest du weitere Informationen unter Lösung 2.

Hinweis: Wenn du beim Ausführen von AWS-CLI-Befehlen Fehlermeldungen erhältst, stelle sicher, dass du die neueste Version der AWS-CLI verwendest.

PowerShell für AD FS mit IWA (PowerShell 2.0)

  1. Importiere das Windows PowerShell-Modul, indem du den folgenden Befehl ausführst:
> Import-Module "C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell\AWSPowerShell.psd1"
  1. Lege eine Variable für deinen AD FS-Endpunkt fest, indem du einen Befehl ähnlich dem folgenden ausführst:
> $Endpoint = 'https://adfs.example.com/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices'

Hinweis: Dazu gehören die vollständige URL deiner AD FS-Anmeldeseite und der Uniform Resource Name (URN) für die Anmeldung für AWS.

  1. Lege den SAML-Endpunkt fest, indem du einen Befehl ausführst, der dem folgenden ähnelt:
> $EndpointName = Set-AWSSamlEndpoint -Endpoint "$Endpoint" -StoreAs 'ADFS-Login' -AuthenticationType NTLM

Hinweis: Standardmäßig ist der AD FS 2.0-AuthenticationType auf NTLM festgelegt. Wenn du im vorherigen Cmdlet-Beispiel für AWS Tools keinen Wert für AuthenticationType angibst, verwendet AWS Tools standardmäßig Kerberos.

  1. Verwende die gespeicherten Endpunkteinstellungen, um dich beim AD FS-IDP zu authentifizieren und eine Liste von Rollen abzurufen, die der Benutzer dann mithilfe einer der folgenden Methoden annehmen kann:

Verwende die Anmeldeinformationen des Benutzers, der derzeit an der Workstation angemeldet ist.

> Set-AWSSamlRoleProfile -StoreAs 'SAMLUser' -EndpointName $EndpointName

-oder-

Gib die Anmeldeinformationen eines Active Directory-Benutzers an.

> $Credential = Get-Credential -Message "Enter the domain credentials for the endpoint"
> Set-AWSSamlRoleProfile -EndpointName $EndpointName -NetworkCredential $credential -StoreAs 'SAMLUser'
  1. Wenn mehrere Rollen verfügbar sind, wirst du aufgefordert, die Rolle auszuwählen, die du übernehmen möchtest. Gib das alphabetische Zeichen in deine Terminalsitzung ein, das dem folgenden ähnelt:
SAMLUser[A] A - 123456789012:role/ADFS-DevAdmin [B] B - 123456789012:role/ADFS-DevReadOnly [?] Help (default is "A"): A

6.    Bestätige, dass Benutzer mit den Verbundanmeldeinformationen und dem angegebenen Profil auf die AWS CLI zugreifen können, indem du einen Befehl ausführst, der dem folgenden ähnelt:

Get-IAMSAMLProviderList -ProfileName SAMLUser

Python für AD FS mit formularbasierter Authentifizierung (Standard für AD FS 3.0 und 4.0)

  1. Installiere die folgenden Module in Python:
pip install --upgrade boto beautifulsoup4 requests
  1. Implementiere eine allgemeine Lösung für den föderierten API/CLI-Zugriff mithilfe von SAML 2.0 und lade dann das Skript aus Schritt 4 dieses verlinkten Blogposts herunter.

  2. Öffne das Skript und stelle deine bevorzugte Region und dein bevorzugtes Ausgabeformat ein. Ersetze adfs.example.com durch deine URL und gib dann den vollqualifizierten Domainnamen (FQDN) deines AD FS-Servers ein.

region = 'eu-west-1'
    outputformat = 'json'
    awsconfigfile = '/.aws/credentials'
    idpentryurl = 'https://adfs.example.com/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices'

Hinweis: Wenn du einen anderen Dateipfad für deine AWS-Anmeldeinformationsdatei hast, gib den Dateipfad an.

  1. Speichere deine Änderungen, führe die Datei aus und fülle dann die folgenden Felder aus, sobald sie angezeigt werden:
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.    Nachdem du die Verbindung erfolgreich hergestellt hast, führe Befehle mit dem neu konfigurierten SAML-Profil aus, indem du den Parameter --profile in den Befehlen verwendest.

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"
    }
  ]
}

Ähnliche Informationen

Konfiguration des Identitätsverbunds mit den AWS Tools für PowerShell

Single Sign-On für AWS Managed Microsoft AD aktivieren