InvalidHostHeaderRequests 지표는 언제 기록되며, 이 조건이 Amazon Elasticsearch Service 도메인에 어떤 영향을 줍니까?

최종 업데이트 날짜: 2020년 5월 28일

InvalidHostHeaderRequests 지표는 언제 기록됩니까? 또한 이 조건은 Amazon Elasticsearch Service(Amazon ES) 도메인에 어떤 영향을 미칩니까?

해결 방법

InvalidHostHeaderRequests Amazon CloudWatch 지표는 요청의 호스트 헤더 값이 도메인의 정규화된 도메인 이름(FQDN)과 다를 때 기록됩니다.

Amazon ES는 다음 중 한 가지가 true일 경우 유효한 헤더가 없는 요청을 거부합니다.

  • 요청된 도메인에 공개적으로 액세스할 수 있습니다.
  • 요청된 도메인은 리소스 기반 정책(예: IP 기반 정책)이 아닌 열린 AWS Identity and Access Management(IAM) 액세스 정책을 사용합니다.

즉, 다음 조건 중 하나에 해당하면 요청이 허용되고 InvalidHostHeaderRequests가 기록되지 않습니다.

  • 요청에 유효한 호스트 헤더가 있습니다(호스트 헤더가 도메인의 FQDN과 일치).
  • 요청된 도메인이 Virtual Private Cloud(VPC)에 있습니다. 자세한 내용은 Amazon Elasticsearch Service Domains에 대한 VPC 지원을 참조하십시오.
  • 요청된 도메인은 리소스 기반 정책을 사용합니다.

예제

다음은 오픈 액세스 정책의 예입니다.

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

다음 명령은 domain.com을 호스트 헤더 값으로 사용합니다. 호스트 헤더 값은 es-domain-name 도메인에 유효한 헤더가 아닙니다. 이 요청이 공개 액세스 정책을 통해 공개적으로 액세스 가능한 도메인에 제출되면 InvalidHostHeaderRequests 지표가 기록되고 요청이 거부됩니다.

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

이 문제를 해결하려면 다음 해결 방법 중 하나 또는 둘 다를 사용하십시오.

  • 호스트 헤더에 적절한 값을 설정합니다.
  • 오픈 액세스 정책 대신 IP 기반 액세스 정책을 사용합니다.

호스트 헤더에 적절한 값 설정

다음 예제 명령은 도메인 이름을 호스트 헤더 값으로 지정합니다. 유효한 요청입니다. 이 요청이 Amazon ES 도메인에 제출되면 요청이 수락되고 InvalidHostHeaderRequests 지표가 기록되지 않습니다.

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

AWS 엔드포인트 URL을 사용하는 예는 다음과 같습니다.

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

IP 기반 액세스 정책 사용

오픈 액세스 정책 대신 요청을 IP 주소 또는 CIDR 범위로 제한하는 액세스 정책을 사용합니다. 예를 들어 다음의 IP 기반 정책11.11.11.11/32 CIDR 범위의 요청을 허용합니다. 이 범위의 도메인에 대한 요청은 허용되며, 호스트 헤드 값과 상관없이 InvalidHostHeaderRequests 지표가 기록되지 않습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "es:*",
            "Resource": "arn:aws:es:region:account-id:domain/es-domain-name/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "11.11.11.11/32"
                    ]
                }
            }
        }
    ]
}

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?