Je reçois le message d'erreur « Non autorisé » en raison d'un en-tête d'hôte non valide ou manquant dans Amazon OpenSearch Service.
Brève description
La métrique InvalidHostHeaderRequests dans Amazon CloudWatch est enregistrée lorsque la valeur de l'en-tête d'hôte d'une demande est différente du nom de domaine complet (FQDN,fully qualified domain name).
Dans les conditions suivantes, Amazon OpenSearch Service rejette les demandes sans en-têtes valides :
- Le domaine demandé est accessible publiquement.
- 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 (telle qu'une politique basée sur l'adresse IP).
Voici les méthodes à envisager pour empêcher le déclenchement du compteur de métriques InvalidHostHeaderRequests :
Sinon, vous recevrez le message d'erreur suivant :
$ 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 libre :
{
"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 domain.com comme valeur d'en-tête d'hôte, ce qui n'est pas un en-tête valide pour le domaine os-domain-name. Lorsque cette demande est soumise à un domaine accessible publiquement doté d'une stratégie d'accès libre, 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
Voici les méthodes à envisager pour résoudre l'erreur « L'utilisateur n'est pas autorisé à effectuer cette action » :
- Définissez la valeur appropriée pour l'en-tête de l'hôte.
- Lancez votre domaine OpenSearch Service à l'aide d'un VPC.
- Utilisez une stratégie d'accès basée sur l'IP plutôt qu'une stratégie d'accès libre.
- Utilisez un contrôle d'accès affiné (FGAC).
Conseil 1 : Définissez la valeur appropriée pour l'en-tête de l'hôte
L'exemple de commande suivant indique le nom de domaine comme valeur d'en-tête de l'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 apporte 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é. Il est donc recommandé d'éviter l'utilisation d'un point de terminaison public pour lancer votre domaine. Bien que votre demande atteigne le domaine OpenSearch Service, vous pouvez recevoir le message d'erreur Non autorisé lorsque vous accédez au point de terminaison public dans un navigateur Web. Pour plus d'informations, consultez la section À propos des stratégies d'accès pour les domaines de VPC.
Lorsque vous créez un domaine avec accès à un 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 libre, utilisez une stratégie d'accès basée sur les ressources qui précise les rôles IAM ou limite 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 CIDR ** 11.11.11.11/32**. Les demandes adressées 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 : Utiliser un contrôle d'accès affiné (FGAC)
En plus des stratégies d'accès basées sur les ressources, vous pouvez utiliser un FGAC pour gérer l'accès aux données de votre domaine OpenSearch Service. Un contrôle d'accès précis 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
- Mutualisation des tableaux de bord OpenSearch
- Authentification HTTP de base pour OpenSearch Service et OpenSearch Dashboards
Comme le FGAC es basé sur les rôles, les informations d'identification des utilisateurs sont évaluées lors de l'authentification d'une demande. Si un contrôle d'accès affiné authentifie l'utilisateur, la métrique InvalidHostHeaderRequests n'est pas enregistrée. Pour plus d'informations sur le FGAC, consultez Vue d'ensemble : contrôle d'accès affiné et sécurité d'OpenSearch Service.
Informations complémentaires
Création et gestion de domaines Amazon OpenSearch Service
Comment résoudre les problèmes d'authentification Amazon Cognito avec les tableaux de bord OpenSearch ?
Gestion des identités et des accès dans Amazon OpenSearch Service