¿Cómo resuelvo el encabezado de host faltante o no válido en Amazon OpenSearch Service?

Última actualización: 23/07/2021

Recibo un error “Not authorized” (No autorizado) debido a un encabezado de host faltante o no válido en Amazon OpenSearch Service (sucesor de Amazon Elasticsearch Service). ¿Cómo se soluciona esto?

Descripción corta

La métrica InvalidHostHeaderRequests de Amazon CloudWatch se registra cuando el valor del encabezado de host de una solicitud es distinto del nombre de dominio completo (FQDN).

En las siguientes condiciones, Amazon OpenSearch Service rechaza las solicitudes a las que les faltan encabezados válidos:

  • El dominio solicitado es de acceso público.
  • El dominio solicitado utiliza una política de acceso abierta de AWS Identity and Access Management (IAM), en lugar de una política basada en recursos (como una política basada en IP).

Para evitar que se active el contador de la métrica InvalidHostHeaderRequests, tenga en cuenta los siguientes métodos:

De lo contrario, recibirá el siguiente error:

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

Resolución

Ejemplo

A continuación se muestra un ejemplo de política de acceso abierto:

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

El siguiente comando utiliza domain.com como el valor del encabezado de host, que no es un encabezado válido para el dominio os-domain-name. Cuando esta solicitud se envía a un dominio de acceso público con una política de acceso abierto, se registra la métrica InvalidHostHeaderRequests y se rechaza la solicitud.

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

Para resolver el error “User is not authorized to perform this action” (El usuario no está autorizado para realizar esta acción), tenga en cuenta los siguientes métodos:

  • Defina el valor adecuado para el encabezado de host.
  • Lance su dominio de OpenSearch Service mediante una VPC.
  • Utilice una política de acceso basada en IP en lugar de una política de acceso abierto.
  • Utilice el control de acceso preciso (FGAC).

Sugerencia 1: establezca el valor adecuado para el encabezado de host

El siguiente comando de ejemplo especifica el nombre de dominio como el valor del encabezado de host:

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

A continuación se muestra un ejemplo en el que se utiliza una URL de punto de enlace de AWS:

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

Sugerencia 2: lance su dominio de OpenSearch Service mediante una VPC

El uso de una VPC para lanzar su dominio de OpenSearch Service proporciona una capa adicional de seguridad. Una VPC también permite administrar el acceso al dominio a través de grupos de seguridad. Por lo tanto, se recomienda evitar el uso de un punto de enlace público para lanzar el dominio. Aunque su solicitud llega al dominio de OpenSearch Service, es posible que reciba un error Not authorized (No autorizado) cuando acceda al punto de enlace público en un explorador web. Para obtener más información, consulte Acerca de las políticas de acceso en los dominios de VPC.

Cuando crea un dominio con acceso a la VPC, el punto de enlace tiene este aspecto (similar a un punto de enlace público):

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

Sugerencia 3: utilice una política basada en recursos

En lugar de una política de acceso abierto, utilice una política de acceso basada en recursos que especifique los roles de IAM o restrinja las solicitudes a una dirección IP o un rango CIDR.

Por ejemplo, la siguiente política basada en IP permite solicitudes en el rango CIDR 11.11.11.11/32. Se permiten solicitudes a dominios de este rango y la métrica InvalidHostHeaderRequests no se registra, independientemente del valor del encabezado de 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"
                    ]
                }
            }
        }
    ]
}

Sugerencia 4: utilice el control de acceso preciso (FGAC)

Junto con las políticas de acceso basadas en recursos, puede utilizar el FGAC para administrar el acceso de datos a su dominio de OpenSearch Service. El control de acceso preciso ofrece los siguientes beneficios:

  • Control de acceso basado en roles
  • Seguridad a nivel de índice, documento y campo
  • OpenSearch Dashboards de múltiples inquilinos
  • Autenticación básica HTTP para OpenSearch Service y OpenSearch Dashboards

Dado que el FGAC se basa en roles, las credenciales de usuario se evalúan al autenticar una solicitud. Si el control de acceso preciso autentica al usuario, la métrica InvalidHostHeaderRequests no se registra. Para obtener más información sobre el FGAC, consulte Panorama general: control de acceso preciso y seguridad de OpenSearch Service.