Come posso risolvere un'intestazione host mancante o non valida in Amazon OpenSearch Service?
Ricevo un messaggio di errore Non autorizzato dovuto a un'intestazione host non valida o mancante nel servizio OpenSearch di Amazon.
Breve descrizione
Il parametro InvalidHostHeaderRequests in Amazon CloudWatch viene registrato quando il valore dell'intestazione host di una richiesta è diverso dal nome di dominio completo.
Per le seguenti condizioni, il servizio OpenSearch di Amazon rifiuta le richieste prive di intestazioni valide:
- Il dominio richiesto è accessibile pubblicamente.
- Il dominio richiesto utilizza una policy di accesso AWS Identity and Access Management (IAM) aperto, anziché una policy basata sulle risorse (come una policy basata su IP).
Per evitare l’attivazione del contatore del parametro InvalidHostHeaderRequests, valuta i seguenti approcci:
- Usa un'intestazione host valida (l'intestazione host deve corrispondere al nome di dominio completo del dominio del servizio OpenSearch).
- Avvia il dominio del servizio OpenSearch utilizzando un cloud privato virtuale (VPC).
- Utilizza una policy basata sulle risorse (che limita gli indirizzi IP o specifica i ruoli IAM).
- Attiva il controllo granulare degli accessi.
In caso contrario, viene visualizzato il seguente errore:
$ curl -H 'Host: domain.com' domain-endpoint-name User is not authorized to perform this action
Soluzione
Esempio
Di seguito è riportato 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 policy di accesso aperto, il parametro InvalidHostHeaderRequests viene registrato e la richiesta viene respinta.
$ 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", valuta i seguenti approcci:
- Imposta il valore appropriato per l'intestazione host.
- Avvia il dominio del servizio OpenSearch utilizzando un VPC.
- Utilizza una policy di accesso basato su IP anziché una policy di accesso aperto.
- Usa il controllo granulare degli accessi.
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
Di seguito è riportato 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 del servizio OpenSearch utilizzando un VPC
L'utilizzo di un VPC per avviare il dominio del servizio OpenSearch fornisce un livello aggiuntivo di sicurezza. Il 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 richiesta raggiunga il dominio del servizio OpenSearch, potresti ricevere il messaggio di errore Non autorizzato quando accedi all'endpoint pubblico in un browser. Per ulteriori informazioni, consulta Informazioni sulle policy di accesso sui domini VPC.
In 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 specifichi i ruoli IAM o limiti le richieste a un indirizzo IP o a un intervallo CIDR.
Ad esempio, la seguente policy basata su IP consente richieste nell'intervallo CIDR 11.11.11.11/32. Sono consentite richieste ai domini in questo intervallo 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: Usa il controllo granulare degli accessi
Oltre alle policy di accesso basate sulle risorse, puoi utilizzare il controllo granulare degli accessi per gestire l'accesso ai dati per il dominio del servizio OpenSearch. Il controllo granulare degli accessi offre i seguenti vantaggi:
- Controllo degli accessi basato sui ruoli
- Sicurezza a livello di indice, documento e campo
- Multi-tenancy di OpenSearch Dashboards
- Autenticazione HTTP di base per il servizio OpenSearch e OpenSearch Dashboards
Poiché il controllo granulare degli accessi si basa 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 The bigger picture: fine-grained access control and OpenSearch Service security.
Informazioni correlate
Video correlati
Contenuto pertinente
- AWS UFFICIALEAggiornata 4 anni fa
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 3 anni fa