In AWS ist ein Client-VPN-Endpunkt ein verwalteter, serverloser Cloud-VPN-Dienst, der Benutzern den sicheren Zugriff auf Ressourcen innerhalb einer AWS-VPC (Virtual Private Cloud) ermöglicht. Beim Erstellen dieser Ressource müssen Sie bei AWS eine Authentifizierungsmethode auswählen. Es gibt zwei Optionen:
- Gegenseitige Authentifizierung: Diese Methode stützt sich bei der Authentifizierung vollständig auf Zertifikate von AWS Certificate Manager (ACM). Das bedeutet, dass für jede Person, die Zugriff auf die privaten Netzwerke benötigt, ein ACM-Zertifikat verwaltet werden muss.
- Föderierte Authentifizierung mit Security Assertion Markup Language 2.0 (SAML 2.0): Die Identitätsprüfung erfolgt durch einen zentralen Identitätsanbieter, und die Benutzer melden sich mit ihren zentralen Anmeldedaten an.
Mit dem Wachstum von Unternehmen steigt auch der Bedarf an einer zentralisierten Authentifizierung. Stellen Sie sich vor, Sie müssten ein Slack-Konto, eine AWS-Organisation, GitHub für den Quellcode, Google Workspace für E-Mails und viele kleinere regionale Plattformen verwalten. Wenn zahlreiche Systeme im Einsatz sind, möchten Unternehmen ihre Ressourcen schützen, aber gleichzeitig den Authentifizierungsprozess für ihre Mitarbeiter vereinfachen, indem sie einen zentralen Identitätsanbieter für alle Unternehmensanwendungen nutzen.
Dann stellt sich die Frage, welches System sich am besten als Identitätsanbieter (IdP) eignet. AWS verfügt über das Identity Center. Dort können Sie Anwendungen konfigurieren und anschließend mithilfe der bereitgestellten Metadatendatei einen Identitätsanbieter erstellen. Allerdings handelt es sich hierbei um eine Lösung, die grundlegend auf das AWS-Ökosystem ausgerichtet ist. Identitätsanbieter von Drittanbietern wie Okta bieten eine wesentlich robustere und universellere Lösung.
Okta ist eine Plattform für Identitäts- und Zugriffsmanagement (IAM), die entwickelt wurde, um die Benutzerauthentifizierung in allen Ihren Unternehmensanwendungen zu sichern und Entwicklern die Möglichkeit zu geben, Identitätskontrollen in Anwendungen, Websites, Webdienste und Geräte zu integrieren. Solange ein System offene Standards wie SAML 2.0 oder OIDC unterstützt, kann Okta als dessen Identitätsanbieter fungieren.
In diesem Blogbeitrag werden wir die einzelnen Schritte zur Integration von Okta mit dem AWS Client VPN Endpoint-Dienst durchgehen, um eine nahtlose und sichere Fernzugriffslösung zu schaffen.
Voraussetzung: Sie sind mit der Client-VPN-Endpunkt-Lösung vertraut.
Verwendung von Okta als IdP für das AWS Client VPN
Beginnen wir damit, ein Konto bei Okta anzulegen. Es erscheint ein Dashboard, das etwa so aussieht:

Klicken Sie oben links auf die Schaltfläche „Tweaks“, woraufhin die Administratorkonsole angezeigt wird.

Dort können Sie auf die Schaltfläche „App-Katalog durchsuchen“ klicken und in die Suchleiste „AWS ClientVPN“ eingeben. Wählen Sie die erste angezeigte Option aus. Sie gelangen dann auf die Anwendungsseite, auf der Sie einige Informationen dazu finden und auf „Integration hinzufügen“ klicken können.

Geben Sie in den allgemeinen Einstellungen der Anwendung einen Namen und aktivieren Sie das Kontrollkästchen „Anwendungssymbol für Benutzer nicht anzeigen“. Diese Einstellung stellt sicher, dass Benutzer in ihrem Dashboard keine „AWS ClientVPN“-Kachel sehen. Diese wird ihnen verborgen.

Nachdem Sie die Anwendung erstellt haben, wechseln Sie zur Registerkarte „Anmeldung“ und klicken Sie auf „Bearbeiten“. Dort können Sie die SAML-Konfigurationen einsehen und bearbeiten.

Ändern Sie die Einstellung „MemberOf“. Wählen Sie im Dropdown-Menü die Option „Entspricht regulärem Ausdruck“ aus und geben Sie „.*“ ein.
Speichern Sie diese Konfiguration und kopieren Sie die generierte Metadaten-URL. Fügen Sie sie in den Chrome-Browser ein und speichern Sie sie lokal als Datei. Sie benötigen diese Metadatendatei, um in Ihrem AWS-Konto in der IAM-Konsole einen Identitätsanbieter anzulegen (in demselben Konto, in dem Sie Ihren Client-VPN-Endpunkt erstellt haben).

Zur Konfiguration von AWS Client VPN ist die ARN des Identitätsanbieters erforderlich.
Als Nächstes können Sie in Okta Benutzer und Gruppen anlegen. Sie können beispielsweise drei Gruppen erstellen – „dev“, „stage“ und „prod“ – und dort die Benutzer hinzufügen, die Zugriff auf die jeweilige Umgebung benötigen.

Kehren Sie zu Ihrer bereits erstellten AWS ClientVPN-Anwendung zurück und wechseln Sie zur Registerkarte „Zuweisungen“. Weisen Sie alle Okta-Gruppen zu, die Sie für den Zugriff auf das Client-VPN erstellt haben.
Wenn Sie den Client-VPN-Endpunkt erstellen und die Subnetze zugeordnet haben, mit denen Sie eine Verbindung herstellen möchten, haben Sie die Möglichkeit, Autorisierungsregeln zu konfigurieren. Hier können Sie festlegen, welche Gruppe Zugriff auf welches Netzwerk hat. Wenn Sie AWS Identity Center für die Authentifizierung verwenden, sollte die Einstellung „Gruppen-ID“ im Client-VPN die ID der Gruppe sein. Bei Verwendung von Okta hingegen sollte die Gruppen-ID der Name der jeweiligen Gruppe sein. In unserem Fall: „dev“, „stage“ und „prod“. Sie können einen Benutzer nur zu den Okta-Gruppen „dev“ und „stage“ hinzufügen, und dieser hat dann ausschließlich Zugriff auf die Netzwerke „dev“ und „stage“.

Wenn nun ein OpenVPN-Client versucht, eine Verbindung zum AWS Client-VPN-Endpunkt herzustellen, wird die Anfrage an den konfigurierten Identitätsanbieter gesendet. Wenn der Benutzer die Authentifizierung erfolgreich durchläuft, akzeptiert der Client-VPN-Endpunkt die vom Identitätsanbieter zurückgegebene kryptografische Signatur und gewährt dem Benutzer Zugriff.

Ein Self-Service-Portal in Okta erstellen
Die Authentifizierung bei Ihrem Client-VPN wird bereits von Okta abgewickelt. Wenn Sie jedoch neue Benutzer hinzufügen, müssen diese die OVPN-Client-Konfiguration erhalten, die Sie über die AWS-Konsole herunterladen können, indem Sie die Konfiguration für Ihren Client-VPN-Endpunkt aufrufen.
Sie können Ihren Benutzern das Klicken in AWS ersparen und ein Self-Service-Portal in Okta einrichten, sodass sie auf die Kachel in ihrem Dashboard klicken können und direkt zu der Seite weitergeleitet werden, auf der sie die Client-VPN-Software für ihr Betriebssystem sowie die Client-Konfigurationsdatei herunterladen können.
Gehen Sie in der Okta-Konsole zu „Anwendungen“ > „Anwendungen“ und klicken Sie auf „App-Integration erstellen“. Wählen Sie „SAML 2.0“ aus und klicken Sie auf „Weiter“.

Geben Sie der Self-Service-Anwendung einen Namen und aktivieren Sie erneut das Kontrollkästchen „Anwendungssymbol für Benutzer nicht anzeigen“. Später werden wir eine Kachel erstellen, die für die Benutzer sichtbar ist. Wenn sie darauf klicken, werden sie zum Client-VPN-Portal weitergeleitet, wo sie die VPN-Konfiguration herunterladen können.

Verwenden Sie im Abschnitt „SAML konfigurieren“ die folgenden spezifischen Einstellungen:
- Single-Sign-On-URL (ACS-URL): https://self-service.clientvpn.amazonaws.com/api/auth/sso/saml
- Ziel-URI (SP-Entitäts-ID): urn:amazon:webservices:clientvpn
- Format der Namens-ID: Persistent oder E-Mail-Adresse

Nachdem Sie diese Felder ausgefüllt haben, klicken Sie auf „Weiter“. Nehmen Sie auf der nächsten Seite keine Änderungen vor und klicken Sie anschließend auf „Fertigstellen“.
Weisen Sie diese Anwendung – ähnlich wie die AWS ClientVPN-Anwendung – Ihren bereits erstellten Gruppen „dev“, „stage“ und „prod“ zu.
Kopieren Sie anschließend die Metadaten-URL und speichern Sie die Metadatendatei lokal. Erstellen Sie einen weiteren IAM-Identitätsanbieter in Ihrem AWS-Konto (in dem Sie Ihren Client-VPN-Endpunkt erstellt haben). Verwenden Sie dabei die neuen Metadaten, die Sie soeben gespeichert haben.
Die ARN dieses Identitätsanbieters wird für die Konfiguration des Client-VPN benötigt. Wenn Sie beispielsweise Terraform verwenden, sollten Sie den folgenden Block in Ihrer Ressource „aws_ec2_client_vpn_endpoint“ angeben:
authentication_options {
type = "federated-authentication"
saml_provider_arn = var.identity_provider_arn
self_service_saml_provider_arn = var.self_service_identity_provider_arn
}
Nachdem Sie Ihr AWS Client VPN mit den beiden Identitätsanbietern eingerichtet haben, können Sie mit dem letzten Schritt dieser Konfiguration fortfahren.
Gehen Sie in Okta – ähnlich wie beim Erstellen der Anwendung „AWS Client VPN“ – zu „Anwendungen“ > „App-Katalog durchsuchen“. Suchen Sie nach „Bookmark App“ und klicken Sie auf die Schaltfläche „Integration hinzufügen“.

Geben Sie in den allgemeinen Einstellungen einen Namen ein, der den Benutzern in ihrem Dashboard angezeigt wird, beispielsweise „AWS Client VPN Portal“.
Fügen Sie in das URL-Feld die genaue URL Ihres AWS-Self-Service-Portals ein: https://self-service.clientvpn.amazonaws.com/endpoints/cvpn-endpoint-xxxxxx (Diese finden Sie in der Client-VPN-Konfiguration in der AWS-Konsole.)

Aktivieren Sie das Kontrollkästchen „Anwendersymbol nicht anzeigen“ nicht.
Weisen Sie diese „Bookmark-App“ genau wie die beiden vorherigen Anwendungen Ihren bereits erstellten Gruppen – „dev“, „stage“ und „prod“ – zu.
Nun sehen Ihre Nutzer in ihrem Dashboard eine Kachel mit dem Namen, den Sie der Lesezeichen-App gegeben haben.

Wenn sie darauf klicken, werden sie auf die Seite weitergeleitet, auf der sie die OpenVPN-Client-Konfiguration sowie die AWS Client VPN-Software für ihr jeweiliges Betriebssystem herunterladen können.

Schlussfolgerung
Beachten Sie bei der Auswahl eines Identitätsanbieters Folgendes:
- Mit Okta können Sie kontextbasierte Richtlinien speziell für das VPN durchsetzen. Sie können beispielsweise eine Regel festlegen, die Benutzer blockiert, die versuchen, sich aus einem nicht autorisierten Land anzumelden.
- Okta liefert detaillierte Protokolldaten darüber, wann und wer sich von wo aus und auf welchem Gerät angemeldet hat. Für Unternehmen, die beispielsweise die Anforderungen von SOC 2 oder ISO 27001 erfüllen möchten, erleichtert die zentrale Speicherung aller Authentifizierungsprotokolle (einschließlich des AWS-VPN-Zugriffs) in Okta die Prüfung erheblich, da so keine separaten Protokolle aus AWS CloudTrail abgerufen werden müssen.
- Eine zentrale Datenquelle für die Anmeldung bei allen Unternehmensanwendungen erleichtert die Deaktivierung aller Konten eines Mitarbeiters, der das Unternehmen verlässt.

