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 von Federation konfiguriert. Wie gewähre ich Benutzern den gleichen Zugriff auf das AWS Command Line Interface (AWS CLI) mithilfe von Active Directory Federation Services (AD FS)?

Kurzbeschreibung

Wenn Sie SAML 2.0-Verbundbenutzern den Zugriff auf die AWS-Managementkonsole gestatten, müssen Benutzer, die 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) -Benutzer abzurufen, gehen Sie wie folgt vor:

Konfigurieren Sie die AWS-CLI.

-oder-

Holen Sie sich temporäre Anmeldeinformationen für Verbundbenutzer, um auf die AWS-CLI zuzugreifen.

Bevor Sie einem Verbundbenutzer Zugriff gewähren können, gehen Sie wie folgt vor:

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

Behebung

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

**Hinweis:**Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.

Lösung 1: PowerShell für AD FS mit IWA (PowerShell 2.0)

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

Hinweis: Dazu gehören die vollständige URL Ihrer AD FS-Anmeldeseite und der Uniform Resource Name (URN) für die Anmeldung für AWS. 3. Legen Sie den SAML-Endpunkt fest, indem Sie einen Befehl ausführen, 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 Sie im vorherigen Cmdlet-Beispiel für AWS Tools keinen Wert für AuthenticationType angeben, verwendet AWS Tools standardmäßig Kerberos.

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

Verwenden Sie die Anmeldeinformationen des Benutzers, der derzeit an der Arbeitsstation angemeldet ist.

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

-oder-

Geben Sie 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, werden Sie aufgefordert, die Rolle auszuwählen, die Sie übernehmen möchten. Geben Sie das alphabetische Zeichen in Ihre Terminalsitzung ein, das dem folgenden ähnelt:
SAMLUser[A] A - 123456789012:role/ADFS-DevAdmin [B] B - 123456789012:role/ADFS-DevReadOnly [?] Help (default is "A"): A
  1. Bestätigen Sie, dass Benutzer mit den Verbundanmeldeinformationen und dem angegebenen Profil auf die AWS-CLI zugreifen können, indem Sie einen Befehl ausführen, der dem folgenden ähnelt:
Get-IAMSAMLProviderList -ProfileName SAMLUser

Lösung 2: Python für AD FS mit formularbasierter Authentifizierung (Standard für AD FS 3.0 und 4.0)

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

  2. Öffnen Sie das Skript und stellen Sie Ihre bevorzugte Region und Ihr bevorzugtes Ausgabeformat ein. Ersetzen Sie adfs.example.com durch Ihre URL und geben Sie dann den vollqualifizierten Domainnamen (FQDN) Ihres 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 Sie einen anderen Dateipfad für Ihre AWS-Anmeldeinformationsdatei haben, geben Sie den Dateipfad an.

  1. Speichern Sie Ihre Änderungen, führen Sie die Datei aus und füllen Sie 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).
   ----------------------------------------------------------------
  1. Nachdem Sie die Verbindung erfolgreich hergestellt haben, führen Sie Befehle mit dem neu konfigurierten SAML-Profil aus, indem Sie das Parameter --profile in Ihren Befehlen verwenden.
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"
    }
  ]
}

Weitere Informationen

Konfiguration der föderierten Identität mit den AWS-Tools für PowerShell

Single Sign-On