Come faccio a risolvere l'intestazione host mancante o non valida in Amazon OpenSearch Service?

Ultimo aggiornamento: 23-07-2021

Ricevo un errore Non autorizzato a causa di un'intestazione host non valida o mancante in Amazon OpenSearch Service (successore di Amazon Elasticsearch Service). Come posso risolvere questo problema?

Breve descrizione

Il parametro InvalidHostHeaderRequests in Amazon CloudWatch viene registrata quando il valore dell'intestazione host di una richiesta è diverso dal nome di dominio completo (FQDN).

Per le seguenti condizioni, Amazon OpenSearch Service rifiuta le richieste per le quali mancano intestazioni valide:

  • Il dominio richiesto è accessibile pubblicamente.
  • Il dominio richiesto utilizza una policy di accesso AWS Identity and Access Management (IAM) aperta, anziché una policy basata sulle risorse (ad esempio una policy basata su IP).

Per evitare che venga attivato il contatore di parametri InvalidHostHeaderRequests, considera i seguenti approcci:

In caso contrario, viene visualizzato il seguente errore:

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

Risoluzione

Esempio

Ecco un esempio di policy di accesso aperto:

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

Il comando seguente utilizza domain.com come valore dell'intestazione host, che non è un'intestazione valida per il dominio os-domain-name. Quando questa richiesta viene inviata a un dominio accessibile pubblicamente con una policy di accesso aperto, il parametro InvalidHostHeaderRequests viene registrato e la richiesta viene rifiutata.

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

Per risolvere l'errore "L'utente non è autorizzato a eseguire questa azione", considera i seguenti approcci:

  • Imposta il valore appropriato per l'intestazione host.
  • Avvia il tuo dominio OpenSearch Service utilizzando un VPC.
  • Utilizza una policy di accesso basato su IP anziché una policy di accesso aperto.
  • Utilizza il controllo granulare degli accessi (FGAC).

Suggerimento 1: imposta il valore appropriato per l'intestazione host

Il seguente comando di esempio specifica il nome di dominio come valore dell'intestazione host:

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

Ecco un esempio che utilizza l'URL di un endpoint AWS:

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

Suggerimento 2: avvia il dominio OpenSearch Service utilizzando un VPC

L'utilizzo di un VPC per avviare il dominio OpenSearch Service fornisce un ulteriore livello di sicurezza. Un VPC consente inoltre di gestire l'accesso al dominio tramite gruppi di sicurezza. Pertanto, è consigliabile evitare di utilizzare un endpoint pubblico per avviare il dominio. Sebbene la tua richiesta raggiunga il dominio del servizio OpenSearch, potresti ricevere un errore Non autorizzato quando accedi all'endpoint pubblico in un browser Web. Per ulteriori informazioni, consulta Informazioni sulle policy di accesso sui domini VPC.

Quando crei un dominio con accesso VPC, l'endpoint ha il seguente aspetto (simile a un endpoint pubblico):

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

Suggerimento 3: utilizza una policy basata sulle risorse

Invece di una policy di accesso aperto, utilizza una policy di accesso basato sulle risorse che specifica i ruoli IAM o limita le richieste a un indirizzo IP o un intervallo CIDR.

Ad esempio, la seguente policy basata su IP consente le richieste nell'intervallo CIDR 11.11.11.11/32. Le richieste ai domini di questo intervallo sono consentite e il parametro InvalidHostHeaderRequests non viene registrato, indipendentemente dal valore dell'intestazione host.

{
    "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"
                    ]
                }
            }
        }
    ]
}

Suggerimento 4: utilizza il controllo granulare degli accessi (FGAC)

Insieme alle policy di accesso basate sulle risorse, puoi utilizzare FGAC per gestire l'accesso ai dati al tuo dominio OpenSearch Service. Il controllo granulare degli accessi offre i seguenti vantaggi:

  • Controllo degli accessi in base al ruolo
  • Sicurezza a livello di indice, documento e campo
  • Multi-tenancy di OpenSearch Dashboards
  • Autenticazione di base HTTP per OpenSearch Service e OpenSearch Dashboards

Poiché il controllo granulare degli accessi è basato sui ruoli, le credenziali utente vengono valutate durante l'autenticazione di una richiesta. Se il controllo granulare degli accessi autentica l'utente, il parametro InvalidHostHeaderRequests non viene registrato. Per ulteriori informazioni sul controllo granulare degli accessi, consulta Il quadro generale: controllo granulare degli accessi e sicurezza di OpenSearch Service.