Wie kann ich mithilfe eines SSH-Tunnels und der Amazon-Cognito-Authentifizierung von außerhalb einer VPC auf OpenSearch Dashboards zugreifen?

Letzte Aktualisierung am 05.08.2021

Mein Amazon OpenSearch Service (Nachfolger von Amazon Elasticsearch Service)-Cluster befindet sich in einer Virtual Private Cloud (VPC). Ich möchte mithilfe eines SSH-Tunnels und der Amazon-Cognito-Authentifizierung von außerhalb einer VPC auf OpenSearch Dashboards zugreifen.

Kurzbeschreibung

Standardmäßig beschränkt Amazon Cognito den Zugriff auf OpenSearch Dashboards auf Benutzer von AWS Identity and Access Management (IAM) in der VPC. Sie können jedoch auch von außerhalb der VPC über einen SSH-Tunnel auf OpenSearch Dashboards zugreifen.

Wichtig: Stellen Sie sicher, dass der Zugriff auf OpenSearch Dashboards (Nachfolger von Kibana, einem Drittanbieter-Tool) von außerhalb der VPC den Sicherheitsanforderungen Ihres Unternehmens entspricht.

Führen Sie die folgenden Schritte aus, um von außerhalb der VPC mithilfe eines SSH-Tunnels auf Dashboards zuzugreifen:

1.    Erstellen Sie einen Amazon-Cognito-Benutzerpool und einen Identitätspool.

2.    Erstellen Sie eine Amazon Elastic Compute Cloud (EC2)-Instance in einem öffentlichen Subnetz in derselben VPC, in der sich Ihre OpenSearch-Service-Domäne befindet.

3.    Verwenden Sie ein Browser-Add-on, wie FoxyProxy, um einen SOCKS-Proxy zu konfigurieren.

4.    Erstellen Sie einen SSH-Tunnel von Ihrem lokalen Computer zur EC2-Instance.

Hinweis: Sie können auch einen NGINX-Proxy oder Client VPN verwenden, um von außerhalb einer VPC mit Amazon-Cognito-Authentifizierung auf Dashboards zuzugreifen. Weitere Informationen finden Sie unter, Wie kann ich mithilfe der Amazon-Cognito-Authentifizierung von außerhalb einer VPC auf OpenSearch Dashboards zugreifen?

5.    (Optional) Wenn eine feinkörnige Zugriffssteuerung (FGAC) aktiviert ist, fügen Sie eine von Amazon Cognito authentifizierte Rolle hinzu.

Auflösung

Erstellen eines Amazon-Cognito-Benutzerpools und Identitätspools

1.    Erstellen Sie einen Amazon-Cognito-Benutzerpool.

2.    Konfigurieren Sie eine gehostete Benutzerpool-Domäne.

3.    Wählen Sie im Navigationsbereich der Amazon-Cognito-Konsole Benutzer und Gruppen aus.

4.    Wählen Sie Benutzer erstellen und füllen Sie dann die Felder aus. Geben Sie unbedingt eine E-Mail-Adresse ein. Aktivieren Sie dann das Kontrollkästchen E-Mail als bestätigt markieren.

5.    Wählen Sie die Registerkarte Gruppen und dann Gruppe erstellen aus. Geben Sie für Priorität 0 ein. Weitere Informationen finden Sie unter Erstellen einer neuen Gruppe in der AWS-Managementkonsole.

6.    Öffnen Sie die Amazon-Cognito-Konsole erneut.

7.    Wählen Sie Identitätspools verwalten und dann Neuen Identitätspool erstellen.

8.    Geben Sie einen Namen für Ihren Identitätspool ein, aktivieren Sie das Kontrollkästchen Zugriff auf nicht authentifizierte Identitäten aktivieren und wählen Sie dann Pool erstellen.

9.    Wenn Sie aufgefordert werden, auf Ihre AWS-Ressourcen zuzugreifen, wählen Sie Erlauben, um die beiden Ihrem Identitätspool zugeordneten Standardrollen zu erstellen, – eine für nicht authentifizierte Benutzer und eine für authentifizierte Benutzer.

10.    Konfigurieren Sie Ihre OpenSearch-Service-Domäne zur Verwendung der Amazon-Cognito-Authentifizierung für OpenSearch Dashboards.
Wählen Sie für Cognito-Benutzerpool den Benutzerpool aus, den Sie in Schritt 1 erstellt haben.
Wählen Sie für Cognito-Identätspool den Identitätspool aus, den Sie in Schritt 8 erstellt haben.

11.    Konfigurieren Sie Ihre OpenSearch-Service-Domäne für die Verwendung einer Zugriffsrichtlinie ähnlich der folgenden. Ersetzen Sie diese Werte:
Konto-ID mit Ihrer AWS-Kontonummer
Identitätsname mit dem Namen Ihres Amazon-Cognito-Identitätspools
Domänenname mit dem Namen Ihrer Domäne
Region mit der Region, in der sich Ihre Domäne befindet, wie US-Ost-1

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::account-id:assumed-role/Cognito_identity-nameAuth_Role/CognitoIdentityCredentials"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:Region:account-id:domain/domain-name/*"
    }
  ]
}

Beispielsweise verwendet die folgende Zugriffsrichtlinie diese Werte:

AWS-Konto-ID:111122223333
Name des Amazon-Cognito-Identitätspools: MyIdentityPool
Domänename: MyDomain
Region: US-Ost-1

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::111122223333:assumed-role/Cognito_MyIdentityPoolAuth_Role/CognitoIdentityCredentials"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/MyDomain/*"
    }
  ]
}

Erstellen einer EC2-Instance und Konfigurieren von Sicherheitsgruppenregeln

1.    Starten Sie eine EC2-Instance in einem öffentlichen Subnetz der VPC, in dem sich Ihre OpenSearch-Service-Domäne befindet. Stellen Sie auf der Seite Instance-Details konfigurieren sicher, dass Public IP automatisch zuweisen auf Aktivieren eingestellt ist.
Hinweis: In den folgenden Schritten wird die EC2-Instance als tunnel_ec2 bezeichnet.

2.    Fügen Sie der Sicherheitsgruppe eingehende Regeln hinzu, die mit der tunnel_ec2-Instance verknüpft ist. Diese Regeln müssen Datenverkehr zu den Ports 8157 und 22 von der IP-Adresse des lokalen Computers erlauben, den Sie für den Zugriff auf das OpenSearch-Service-Dashboard verwenden.

3.    Fügen Sie der Sicherheitsgruppe eine eingehende Regel hinzu, die der OpenSearch-Service-Domäne zugeordnet ist. Diese Regel muss Datenverkehr von der privaten IP-Adresse der tunnel_ec2-Instance erlauben.

Konfigurieren Sie den SOCKS-Proxy

1.     Fügen Sie FoxyProxy-Standard zu Google Chrome hinzu.

2.    Öffnen Sie FoxyProxy und wählen Sie dann Optionen aus.

3.    Wählen Sie in der Dropdown-Liste Proxy-Modus die Option Proxys basierend auf ihren vordefinierten Mustern und Prioritäten verwenden.

4.    Wählen Sie Neuen Proxy hinzufügen.

5.    Wählen Sie die Registerkarte Allgemein und geben Sie einen Proxy-Namen ein, z. B. „Dashboards-Proxy“.

6.    Stellen Sie sicher, dass auf der Registerkarte Proxy-Details die Option Manuelle Proxy-Konfiguration ausgewählt ist, und füllen Sie dann die folgenden Felder aus:
Geben Sie für Host oder IP-Adresse localhost ein.
Geben Sie für Port 8157 ein.
Wählen Sie SOCKS-Proxy aus.
Wählen Sie SOCKS v5 aus.

7.    Wählen Sie die Registerkarte URL-Muster aus.

8.    Wählen Sie Neues Muster hinzufügen und füllen Sie dann die folgenden Felder aus:
Geben Sie für Mustername einen Namen ein, der für Sie sinnvoll ist, z. B. „VPC-Endpunkt“.
Geben Sie als URL-Muster den VPC-Endpunkt für Dashboards ein. Stellen Sie sicher, dass Whitelist-URLs ausgewählt ist. Stellen Sie sicher, dass Wildcards ausgewählt ist.

9.     Wählen Sie Speichern aus.

Erstellen des SSH-Tunnels

1.    Führen Sie den folgenden Befehl auf dem lokalen Computer aus, mit dem Sie auf das Dashboards-Dashboard zugreifen. Ersetzen Sie Folgendes:
mykeypair.pem: Der Name der PEM-Datei für das Schlüsselpaar, das Sie beim Start der tunnel_ec2-EC2-Instance angegeben haben.
public_dns_name: Das öffentliche DNS Ihrer tunnel_ec2-EC2-Instance. Weitere Informationen finden Sie unter Anzeigen von DNS-Hostnamen für Ihre EC2-Instance.

ssh -i "mykeypair.pem"  ec2-user@public_dns_name -ND 8157

2.    Geben Sie den Dashboards-Endpunkt in Ihrem Browser ein. Die Amazon-Cognito-Anmeldeseite für Dashboards wird angezeigt.

(Optional) Wenn feinkörnige Zugriffssteuerung (FGAC) aktiviert ist, fügen Sie eine von Amazon Cognito authentifizierte Rolle hinzu

Wenn die feinkörnige Zugriffssteuerung (FGAC) in Ihrem OpenSearch-Service-Cluster aktiviert ist, kann ein Fehler „fehlende Rolle“ auftreten. Führen Sie die folgenden Schritte aus, um den Fehler „fehlende Rolle“ zu beheben:

1.    Melden Sie sich bei Ihrer AWS-Managementkonsole an.

2.    Wählen Sie unter Analytik Amazon OpenSearch Service aus.

3.    Wählen Sie Aktionen aus.

4.    Wählen Sie Hauptbenutzer ändern aus.

5.    Wählen Sie IAM ARN festlegen als Hauptbenutzer aus.

6.    Fügen Sie im Feld IAM ARN die von Amazon Cognito authentifizierte ARN-Rolle hinzu.

7.    Wähle Sie Absenden aus.

Weitere Informationen zur feinkörnigen Zugriffssteuerung finden Sie unter Tutorial: IAM-Hauptbenutzer und Amazon Cognito.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?