Wie behebe ich einen Hostheader, der im Amazon OpenSearch Service fehlt oder nicht gültig ist?

Letzte Aktualisierung: 23.07.2021

Ich erhalte einen Nicht autorisierten Fehler aufgrund eines Hostheaders, der ungültig ist oder im Amazon OpenSearch Service fehlt (Nachfolger von Amazon Elasticsearch Service). Wie kann ich dies beheben?

Kurzbeschreibung

Die InvalidHostHeaderRequests-Metrik in Amazon CloudWatch wird aufgezeichnet, wenn sich der Hostheader-Wert einer Anforderung vom vollständig qualifizierten Domänennamen (FQDN) unterscheidet.

Unter den folgenden Bedingungen lehnt Amazon OpenSearch Service die Anfragen ab, bei denen gültige Header fehlen:

  • Die angeforderte Domäne ist öffentlich zugänglich.
  • Die angeforderte Domäne verwendet eine offene Zugriffsrichtlinie für AWS Identity and Access Management (IAM) und nicht eine ressourcenbasierte Richtlinie (z. B. eine IP-basierte Richtlinie).

Um zu verhindern, dass der Metrikzähler InvalidHostHeaderRequests ausgelöst wird, sollten Sie die folgenden Ansätze berücksichtigen:

Andernfalls wird die folgende Fehlermeldung angezeigt:

$ curl -H 'Host: domain.com' domain-endpoint-name
User is not authorized to perform this action

Auflösung

Beispiel

Hier ist ein Beispiel für eine offene Zugriffsrichtlinie:

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

Der folgende Befehl verwendet domain.com als Hostheader-Wert, der kein gültiger Header für dieos-domain-name-Domäne ist. Wenn diese Anfrage an eine öffentlich zugängliche Domäne mit einer offenen Zugriffsrichtlinie gesendet wird, dann wird die Metrik InvalidHostHeaderRequests aufgezeichnet und die Anforderung wird abgelehnt.

$ curl -H 'Host: domain.com' os-domain-name
User is not authorized to perform this action

Beachten Sie die folgenden Ansätze, um den Fehler „Benutzer ist nicht berechtigt, diese Aktion auszuführen“ zu beheben:

  • Stellen Sie den entsprechenden Wert für den Hostheader ein.
  • Starten Sie Ihre OpenSearch-Service-Domäne mithilfe einer VPC.
  • Verwenden Sie eine IP-basierte Zugriffsrichtlinie anstelle einer offenen Zugriffsrichtlinie.
  • Verwenden Sie Differenzierte Zugriffskontrolle (FGAC).

Tipp 1: Legen Sie den entsprechenden Wert für den Hostheader fest.

Der folgende Beispielbefehl gibt den Domänennamen als Hostheader-Wert an:

$ curl -H 'Host: os-endpoint' os-endpoint

Hier ist ein Beispiel, das eine AWS-Endpunkt-URL verwendet:

curl -H 'Host: xxxxxx..os.amazonaws.com' https://xxxxxx..os.amazonaws.com

Tipp 2: Starten Sie Ihre OpenSearch-Service-Domäne mithilfe einer VPC.

Die Verwendung einer VPC zum Starten Ihrer OpenSearch-Service-Domäne bietet eine zusätzliche Sicherheitsebene. Mit einer VPC können Sie auch den Zugriff auf die Domäne über Sicherheitsgruppen verwalten. Daher ist es eine bewährte Methode, die Verwendung eines öffentlichen Endpunkts zum Starten Ihrer Domäne zu vermeiden. Obwohl Ihre Anfrage die OpenSearch-Service-Domäne erreicht, erhalten Sie möglicherweise einen Nicht-autorisiert-Fehler, wenn Sie in einem Web-Browser auf den öffentlichen Endpunkt zugreifen. Weitere Informationen finden Sie unter Informationen zu Zugriffsrichtlinien für VPC-Domänen.

Wenn Sie eine Domäne mit VPC-Zugriff erstellen, sieht der Endpunkt so aus (ähnlich einem öffentlichen Endpunkt):

https://vpc-domain-name-identifier.region.os.amazonaws.com

Tipp 3: Verwenden Sie eine ressourcenbasierte Richtlinie

Verwenden Sie anstelle einer offenen Zugriffsrichtlinie eine ressourcenbasierte Zugriffsrichtlinie, die IAM-Rollen angibt oder Anfragen auf eine IP-Adresse oder einen CIDR-Bereich beschränkt.

Beispielsweise erlaubt die folgende IP-basierte Richtlinie Anforderungen im CIDR-Bereich 11.11.11.11/32. Anfragen an Domänen in diesem Bereich werden erlaubt, und die Metrik InvalidHostHeaderRequests wird unabhängig vom Hostheader-Wert nicht aufgezeichnet.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "es:*",
            "Resource": "arn:aws:es:region:account-id:domain/os-domain-name/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "11.11.11.11/32"
                    ]
                }
            }
        }
    ]
}

Tipp 4: Verwenden Sie eine differenzierte Zugriffskontrolle (FGAC)

Zusammen mit ressourcenbasierten Zugriffsrichtlinien können Sie FGAC verwenden, um den Datenzugriff auf Ihre OpenSearch-Service-Domäne zu verwalten. Differenzierte Zutrittskontrolle bietet folgende Vorteile:

  • Rollenbasierte Zugriffskontrolle
  • Sicherheit auf Index-, Dokument- und Feldebene
  • OpenSearch-Dashboards-Multi-Tenancy
  • HTTP-Basic-Authentifizierung für OpenSearch Service und OpenSearch Dashboards

Da FGAC auf Rollen basiert, werden Benutzer-Anmeldeinformationen bei der Authentifizierung einer Anforderung geprüft. Wenn eine differenzierte Zugriffskontrolle den Benutzer authentifiziert, wird die Metrik InvalidHostHeaderRequests nicht aufgezeichnet. Weitere Informationen zu FGAC finden Sie unter Das Gesamtbild: Differenzierte Zugriffskontrolle und OpenSearch-Service-Sicherheit.