Verbindungsautorisierung - AWS Client VPN

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verbindungsautorisierung

Sie können einen Client-Connect-Handler für Ihren Client-VPN-Endpunkt konfigurieren. Mit dem Handler können Sie eine benutzerdefinierte Logik ausführen, die eine neue Verbindung basierend auf Geräte-, Benutzer- und Verbindungsattributen autorisiert. Der Client-Connect-Handler wird ausgeführt, nachdem der Client-VPN-Service das Gerät und den Benutzer authentifiziert hat.

Um einen Client Connect-Handler für Ihren Client-VPN-Endpunkt zu konfigurieren, erstellen Sie eine AWS Lambda -Funktion, die Geräte-, Benutzer- und Verbindungsattribute als Eingaben verwendet und die Entscheidung an den Client-VPN-Service zurückgibt, eine neue Verbindung zuzulassen oder zu verweigern. Sie geben die Lambda-Funktion in Ihrem Client-VPN-Endpunkt an. Wenn sich Geräte mit Ihrem Client-VPN-Endpunkt verbinden, ruft der Client-VPN-Service für Sie die Lambda-Funktion auf. Nur Verbindungen, die von der Lambda-Funktion autorisiert wurden, dürfen sich mit dem Client-VPN-Endpunkt verbinden.

Anmerkung

Derzeit ist der einzige unterstützte Client-Connect-Handler-Typ eine Lambda-Funktion.

Anforderungen und Überlegungen

Nachfolgend werden Anforderungen und Überlegungen für den Client-Connect-Handler aufgeführt:

  • Der Name der Lambda-Funktion muss mit dem AWSClientVPN--Präfix beginnen.

  • Qualifizierte Lambda-Funktionen werden unterstützt.

  • Die Lambda-Funktion muss sich in derselben AWS Region und demselben AWS Konto wie der Client-VPN-Endpunkt befinden.

  • Die Lambda-Funktion läuft nach 30 Sekunden ab. Dieser Wert kann nicht geändert werden.

  • Die Lambda-Funktion wird synchron aufgerufen. Er wird nach der Geräte- und Benutzerauthentifizierung und vor der Auswertung der Autorisierungsregeln aufgerufen.

  • Wenn die Lambda-Funktion für eine neue Verbindung aufgerufen wird und der Client-VPN-Service keine erwartete Antwort von der Funktion erhält, lehnt der Client-VPN-Service die Verbindungsanfrage ab. Dies kann beispielsweise auftreten, wenn die Lambda-Funktion gedrosselt wird, ein Timeout auftritt oder auf andere unerwartete Fehler trifft oder wenn die Antwort der Funktion nicht in einem gültigen Format vorliegt.

  • Wir empfehlen, dass Sie die bereitgestellte Parallelität für die Lambda-Funktion konfigurieren, damit sie ohne Latenzschwankungen skaliert werden kann.

  • Wenn Sie Ihre Lambda-Funktion aktualisieren, sind bestehende Verbindungen zum Client-VPN-Endpunkt nicht betroffen. Sie können die bestehenden Verbindungen beenden und Ihre Clients dann anweisen, neue Verbindungen herzustellen. Weitere Informationen finden Sie unter Beenden einer Client-Verbindung.

  • Wenn Clients den AWS bereitgestellten Client verwenden, um eine Verbindung zum Client-VPN-Endpunkt herzustellen, müssen sie Version 1.2.6 oder höher für Windows und Version 1.2.4 oder höher für macOS verwenden. Weitere Informationen finden Sie unter Verbinden mit dem von AWS bereitgestellten Client.

Lambda-Schnittstelle

Die Lambda-Funktion verwendet Geräteattribute, Benutzerattribute und Verbindungsattribute als Eingaben vom Client-VPN-Service. Sie muss dann die Entscheidung an den Client-VPN-Service zurückgeben, ob die Verbindung zugelassen oder verweigert werden soll.

Anfrageschema

Die Lambda-Funktion verwendet einen JSON-Blob mit den folgenden Feldern als Eingabe.

{ "connection-id": <connection ID>, "endpoint-id": <client VPN endpoint ID>, "common-name": <cert-common-name>, "username": <user identifier>, "platform": <OS platform>, "platform-version": <OS version>, "public-ip": <public IP address>, "client-openvpn-version": <client OpenVPN version>, "aws-client-version": <AWS client version>, "groups": <group identifier>, "schema-version": "v3" }
  • connection-id – Die ID der Client-Verbindung mit dem Client-VPN-Endpunkt.

  • endpoint-id – Die ID des Client-VPN-Endpunkts.

  • common-name – Die Geräte-ID. In dem Client-Zertifikat, das Sie für das Gerät erstellen, identifiziert der allgemeine Name das Gerät eindeutig.

  • username – Die Benutzer-ID, falls zutreffend. Bei der Active Directory-Authentifizierung ist dies der Benutzername. Bei der SAML-basierten föderierten Authentifizierung ist dies NameID. Bei gegenseitiger Authentifizierung ist dieses Feld leer.

  • platform – Die Client-Betriebssystemplattform.

  • platform-version – Die Version des Betriebssystems. Der Client-VPN-Service stellt einen Wert bereit, wenn die --push-peer-info-Richtlinie in der OpenVPN-Client-Konfiguration vorhanden ist, wenn Clients eine Verbindung zu einem Client-VPN-Endpunkt herstellen und wenn der Client die Windows-Plattform ausführt.

  • public-ip – Die öffentliche IP-Adresse des sich verbindenden Geräts.

  • client-openvpn-version – Die OpenVPN-Version, die der Client verwendet.

  • aws-client-version— Die AWS Client-Version.

  • groups – Die Gruppen-ID, falls zutreffend. Bei der Active-Directory-Authentifizierung ist dies eine Liste mit Active-Directory-Gruppen. Bei der SAML-basierten Verbundauthentifizierung ist dies eine Liste von Identitätsanbietergruppen (IdP-Gruppen). Bei gegenseitiger Authentifizierung ist dieses Feld leer.

  • schema-version – Die Schema-Version Der Standardwert ist v3.

Antwortschema

Die Lambda-Funktion muss die folgenden Felder zurückgeben.

{ "allow": boolean, "error-msg-on-denied-connection": "", "posture-compliance-statuses": [], "schema-version": "v3" }
  • allow – Erforderlich. Ein boolescher Wert (true | false), der angibt, ob die neue Verbindung zugelassen oder verweigert werden soll.

  • error-msg-on-denied-connection – Erforderlich. Eine Zeichenfolge von bis zu 255 Zeichen, die verwendet werden kann, um den Clients Schritte und Anleitungen zu übermitteln, wenn die Verbindung von der Lambda-Funktion verweigert wird. Bei Ausfällen während der Ausführung der Lambda-Funktion (z. B. aufgrund einer Drosselung) wird die folgende Standardnachricht an Clients zurückgegeben.

    Error establishing connection. Please contact your administrator.
  • posture-compliance-statuses – Erforderlich. Wenn Sie die Lambda-Funktion für das Posture Assessment verwenden, ist dies eine Liste der Status für das sich verbindende Gerät. Sie definieren die Statusnamen entsprechend Ihren Posture Assessment-Kategorien für Geräte, z. B. compliant, quarantined, unknown usw. Jeder Name kann bis zu 255 Zeichen lang sein. Sie können bis zu 10 Status angeben.

  • schema-version – Erforderlich. Die Schemaversion. Der Standardwert ist v3.

Sie können dieselbe Lambda-Funktion für mehrere Client VPN-Endpunkte in derselben Region verwenden.

Weitere Informationen zum Erstellen einer Lambda-Funktion finden Sie unter Erste Schritte mit AWS Lambda im AWS Lambda -Entwicklerhandbuch.

Verwenden des Client-Connect-Handlers für das Posture Assessment

Sie können den Client Connect-Handler verwenden, um Ihren Client-VPN-Endpunkt in Ihre vorhandene Geräteverwaltungslösung zu integrieren, um die Einhaltung der Posture-Anforderungen der sich verbindenden Geräte zu evaluieren. Damit die Lambda-Funktion als Geräteautorisierungs-Handler funktioniert, verwenden Sie die gegenseitige Authentifizierung für Ihren Client-VPN-Endpunkt. Erstellen Sie ein eindeutiges Client-Zertifikat und einen Schlüssel für jeden Client (jedes Gerät), der sich mit dem Client-VPN-Endpunkt verbindet. Die Lambda-Funktion kann den eindeutigen allgemeinen Namen für das Client-Zertifikat (das vom Client-VPN-Service weitergegeben wird) verwenden, um das Gerät zu identifizieren und seinen Posture-Compliance-Status von Ihrer Geräteverwaltungslösung abzurufen. Sie können die gegenseitige Authentifizierung in Kombination mit einer benutzerbasierten Authentifizierung verwenden.

Alternativ können Sie ein grundlegendes Posture Assessment in der Lambda-Funktion selbst vornehmen. Sie können beispielsweise die Felder platform und platform-version bewerten, die vom Client-VPN-Service an die Lambda-Funktion übergeben werden.

Anmerkung

Der Verbindungshandler kann zwar verwendet werden, um eine Mindestversion der AWS Client VPN Anwendung zu erzwingen, aber das Feld aws-client-version im Verbindungshandler gilt nur für die AWS Client VPN Anwendung und wird anhand von Umgebungsvariablen auf dem Benutzergerät aufgefüllt.

Aktivieren des Client-Connect-Handlers

Um den Client Connect-Handler zu aktivieren, erstellen oder ändern Sie einen Client-VPN-Endpunkt und geben Sie den Amazon-Ressourcennamen (ARN) der Lambda-Funktion an. Weitere Informationen erhalten Sie unter Erstellen eines Client VPN-Endpunkts und Ändern eines Client-VPN-Endpunkts.

Serviceverknüpfte Rolle

AWS Client VPN erstellt in Ihrem Konto automatisch eine mit dem Dienst verknüpfte Rolle namens AWSServiceRoleForClientVPNConnections. Die Rolle verfügt über Berechtigungen zum Aufrufen der Lambda-Funktion, wenn eine Verbindung zum Client-VPN-Endpunkt hergestellt wird. Weitere Informationen finden Sie unter Verwenden von serviceverknüpften Rollen für Client VPN.

Überwachen von Fehlern bei der Verbindungsautorisierung

Sie können den Status der Verbindungsautorisierung von Verbindungen zum Client-VPN-Endpunkt anzeigen. Weitere Informationen finden Sie unter Anzeigen von Client-Verbindungen.

Wenn der Client Connect-Handler für das Posture Assessment verwendet wird, können Sie auch die Compliance-Status von Geräten, die sich mit Ihrem Client-VPN-Endpunkt verbinden, in den Verbindungsprotokollen anzeigen. Weitere Informationen finden Sie unter Verbindungsprotokollierung.

Wenn ein Gerät die Verbindungsautorisierung nicht besteht, gibt das connection-attempt-failure-reason-Feld in den Verbindungsprotokollen einen der folgenden Fehlergründe zurück:

  • client-connect-failed – Die Lambda-Funktion verhinderte, dass die Verbindung hergestellt wurde.

  • client-connect-handler-timed-out – Die Lambda-Funktion hat das Zeitlimit überschritten.

  • client-connect-handler-other-execution-error – Die Lambda-Funktion ist auf einen unerwarteten Fehler gestoßen.

  • client-connect-handler-throttled – Die Lambda-Funktion wurde gedrosselt.

  • client-connect-handler-invalid-response – Die Lambda-Funktion gab eine ungültige Antwort zurück.

  • client-connect-handler-service-error – Während des Verbindungsversuchs ist ein serviceseitiger Fehler aufgetreten.