Comment puis-je résoudre le problème d'en-tête d'hôte manquant ou non valide dans Amazon OpenSearch Service ?
Date de la dernière mise à jour : 23/07/2021
Je reçois un message d'erreur Non autorisée en raison d'un en-tête d'hôte non valide ou manquant dans Amazon OpenSearch Service (successeur d'Amazon Elasticsearch Service). Comment puis-je résoudre ce problème ?
Brève description
La métrique InvalidHostHeaderRequests dans Amazon CloudWatch est enregistrée lorsque la valeur d'en-tête d'hôte d'une demande est différente du nom de domaine entièrement qualifié (FQDN).
Pour les conditions suivantes, Amazon OpenSearch Service rejette les demandes dont les en-têtes valides sont manquants :
- Le domaine demandé est à accès public.
- Le domaine demandé utilise une stratégie d'accès AWS Identity and Access Management (IAM) ouverte, plutôt qu'une stratégie basée sur les ressources (par exemple, une stratégie basée sur l'IP).
Pour éviter que le compteur de métriques InvalidHostHeaderRequests ne soit déclenché, envisagez les approches suivantes :
- Utilisez un en-tête hôte valide (l'en-tête d'hôte doit correspondre au nom de domaine complet (FQDN) de votre domaine OpenSearch Service).
- Lancez votre domaine OpenSearch Service à l'aide d'un Virtual Private Cloud (VPC).
- Utilisez une politique basée sur les ressources (qui restreint les adresses IP ou spécifie des rôles IAM).
- Activez le contrôle précis des accès (FGAC).
Sinon, vous recevez l'erreur suivante :
$ curl -H 'Host: domain.com' domain-endpoint-name
User is not authorized to perform this action
Résolution
Exemple
Voici un exemple de stratégie d'accès ouvert :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "es:*",
"Resource": "arn:aws:es:Region:account-id:domain/os-domain-name/*"
}
]
}
La commande suivante utilise domaine.com comme valeur d'en-tête d'hôte, qui n'est pas un en-tête valide pour le domaine OS-Domain-name. Lorsque cette demande est envoyée à un domaine accessible publiquement avec une stratégie d'accès ouvert, la métrique InvalidHostHeaderRequests est enregistrée et la demande est rejetée.
$ curl -H 'Host: domain.com' os-domain-name
User is not authorized to perform this action
Pour résoudre l'erreur « L'utilisateur n'est pas autorisé à effectuer cette action », envisagez les approches suivantes :
- Définissez la valeur appropriée pour l'en-tête d'hôte.
- Lancez votre domaine OpenSearch Service à l'aide d'un VPC.
- Utilisez une stratégie d'accès basée sur l'adresse IP au lieu d'une stratégie d'accès ouverte.
- Utilisez le contrôle d'accès sélectif (FGAC).
Conseil 1 : Définissez la valeur appropriée pour l'en-tête d'hôte
L'exemple de commande suivant spécifie le nom de domaine comme valeur d'en-tête d'hôte :
$ curl -H 'Host: os-endpoint' os-endpoint
Voici un exemple qui utilise une URL de point de terminaison AWS :
curl -H 'Host: xxxxxx..os.amazonaws.com' https://xxxxxx..os.amazonaws.com
Conseil 2 : lancez votre domaine OpenSearch Service à l'aide d'un VPC
L'utilisation d'un VPC pour lancer votre domaine OpenSearch Service offre une couche de sécurité supplémentaire. Un VPC vous permet également de gérer l'accès au domaine via des groupes de sécurité. Par conséquent, une bonne pratique consiste à éviter d'utiliser un point de terminaison public pour lancer votre domaine. Bien que votre demande atteigne le domaine OpenSearch Service, vous pouvez recevoir un message d'erreur Non autorisée lorsque vous accédez au point de terminaison public dans un navigateur web. Pour plus d'informations, veuillez consulter la rubrique À propos des politiques d'accès sur les domaines VPC.
Lorsque vous créez un domaine avec accès au VPC, le point de terminaison ressemble à ceci (similaire à un point de terminaison public) :
https://vpc-domain-name-identifier.region.os.amazonaws.com
Conseil 3 : Utilisez une stratégie basée sur les ressources
Au lieu d'une stratégie d'accès ouvert, utilisez une stratégie d'accès basée sur les ressources qui spécifie les rôles IAM ou restreint les demandes à une adresse IP ou à une plage d’adresses CIDR.
Par exemple, la stratégie basée sur l'adresse IP suivante autorise les demandes dans la plage d'adresses CIDR 11.11.11.11/32. Les demandes aux domaines de cette plage sont autorisées et la métrique InvalidHostHeaderRequests n'est pas enregistrée, quelle que soit la valeur de l'en-tête de l'hôte.
{
"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"
]
}
}
}
]
}
Conseil 4 : utilisez le contrôle d'accès sélectif (FGAC)
Outre les stratégies d'accès basées sur les ressources, vous pouvez utiliser FGAC pour gérer l'accès aux données de votre domaine OpenSearch Service. Le contrôle sélectif des accès offre les avantages suivants :
- Contrôle d'accès basé sur les rôles
- Sécurité au niveau de l'index, du document et du champ
- Tableaux de bord OpenSearch mutualisé
- Authentification HTTP de base pour OpenSearch Service et les tableaux de bord OpenSearch
Étant donné que FGAC est basé sur des rôles, les informations d'identification des utilisateurs sont évaluées lors de l'authentification d'une demande. Si un contrôle précis des accès authentifie l'utilisateur, la métrique InvalidHostHeaderRequests n'est pas enregistrée. Pour plus d'informations sur FGAC, consultez Le tableau d'ensemble : contrôle d'accès affiné et sécurité OpenSearch Service.
Informations connexes
Cet article vous a-t-il été utile ?
Besoin d'aide pour une question technique ou de facturation ?