Come posso risolvere un'intestazione host mancante o non valida in Amazon OpenSearch Service?

4 minuti di lettura
0

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:

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

Creating and managing Amazon OpenSearch Service domains

In che modo posso risolvere i problemi relativi all'autenticazione Amazon Cognito con OpenSearch Dashboards?

Identity and Access Management in Amazon OpenSearch Service

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa