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

Lesedauer: 6 Minute
0

Mein Amazon-OpenSearch-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 greifen von einer anderen VPC aus auf eine Amazon-OpenSearch-Service-Domäne zu, indem Sie einen von OpenSearch Service verwalteten VPC-Endpunkt (unterstützt von AWS PrivateLink) einrichten. Sie können auch von außerhalb der VPC über einen SSH-Tunnel auf OpenSearch Dashboards zugreifen.

Wichtig: Stellen Sie sicher, dass der Zugriff auf OpenSearch Dashboards von außerhalb der VPC den Sicherheitsanforderungen Ihres Unternehmens entspricht.

Greifen Sie folgendermaßen über einen SSH-Tunnel von außerhalb der VPC auf Dashboards zu:

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

2.    Erstellen Sie eine Instance von Amazon Elastic Compute Cloud (Amazon EC2) in einem offentlichen Subnetz. Dieses Subnetz muss sich in derselben VPC wie Ihre OpenSearch-Service-Domäne befinden.

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) Eine Amazon-Cognito-Rolle hinzufügen, wenn die detaillierte Zugriffssteuerung (Fine-Grained Access Control, FGAC) aktiviert ist

Lö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. Wählen Sie dann Pool erstellen aus.

9.    Wenn Sie zum Zugriff auf Ihre AWS-Ressourcen aufgefordert werden, wählen Sie Zulassen. Dadurch werden die beiden Standardrollen erstellt, die Ihrem Identitätspool zugeordnet sind – 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-east-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 Computers erlauben, auf den Sie vom OpenSearch-Service-Dashboard zugreifen.

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 als Mustername einen Namen wie „VPC-Endpunkt“ ein.
Geben Sie als URL-Muster den VPC-Endpunkt für Dashboards ein. Stellen Sie sicher, dass der Zugriff auf die URL zulässig ist. Stellen Sie sicher, dass Wildcards ausgewählt ist.

9.     Wählen Sie Speichern aus.

Erstellen des SSH-Tunnels

1.    Führen Sie diesen Befehl auf dem lokalen Computer aus, mit dem Sie auf das Dashboards-Dashboard zugreifen. Ersetzen Sie diese Elemente:
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 FGAC aktiviert ist, fügen Sie eine authentifizierte Amazon-Cognito-Rolle hinzu.

Wenn die detaillierte Zugriffssteuerung (Fine-Grained Access Control, FGAC) auf Ihrem OpenSearch-Service-Cluster aktiviert ist, kann der Fehler „missing role“ auftreten. Führen Sie die folgenden Schritte aus, um den Fehler „missing role“ zu beheben:

1.    Melden Sie sich bei der OpenSearch-Service-Konsole an.

2.    Wählen Sie im Navigationsbereich unter Verwaltete Cluster die Option Domänen aus.

3.    Wählen Sie Actions (Aktionen) aus.

4.    Wählen Sie Modify master user (Hauptbenutzer ändern) aus.

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

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

7.    Wähle Sie Submit (Absenden) aus.

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


Relevante Informationen

Amazon-Cognito-Authentifizierung für OpenSearch Dashboards konfigurieren

Starten Ihrer Amazon-OpenSearch-Service-Domäne mit einer VPC

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr