Amazon OpenSearch Service에서 누락되었거나 유효하지 않은 호스트 헤더를 확인하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 7월 23일

Amazon OpenSearch Service(Amazon Elasticsearch Service 후속)에서 유효하지 않거나 누락된 호스트 헤더로 인해 승인되지 않음 오류가 발생합니다. 이 문제를 해결하려면 어떻게 해야 합니까?

간략한 설명

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

다음 조건의 경우 Amazon OpenSearch Service는 유효한 헤더가 누락된 요청을 거부합니다.

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

InvalidHostHeaderRequests 지표 카운터가 트리거되지 않도록 하려면 다음 방법을 고려하세요.

그렇지 않으면 다음과 같은 오류가 발생합니다.

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

해결 방법

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

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

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

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

‘User is not authorized to perform this action’ 오류를 해결하려면 다음 방법을 고려하세요.

  • 호스트 헤더에 적절한 값을 설정합니다.
  • VPC를 사용하여 OpenSearch Service 도메인을 시작합니다.
  • 오픈 액세스 정책 대신 IP 기반 액세스 정책을 사용합니다.
  • 세분화된 액세스 제어(FGAC)를 사용합니다.

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

다음 예제 명령은 도메인 이름을 호스트 헤더 값으로 지정합니다.

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

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

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

팁 2: VPC를 사용하여 OpenSearch Service 도메인을 시작합니다.

VPC를 사용하여 OpenSearch Service 도메인을 시작하면 보안 계층이 강화됩니다. VPC를 사용하면 보안 그룹을 통해 도메인에 대한 액세스를 관리할 수도 있습니다. 따라서 퍼블릭 엔드포인트를 사용하여 도메인을 시작하지 않는 것이 좋습니다. 요청이 OpenSearch Service 도메인에 도달하더라도 웹 브라우저에서 퍼블릭 엔드포인트에 액세스할 때 승인되지 않음 오류가 표시될 수 있습니다. 자세한 내용은 VPC 도메인 액세스 정책 정보를 참조하세요.

VPC 액세스가 있는 도메인을 생성할 때 엔드포인트는 다음과 같습니다(퍼블릭 엔드포인트와 유사함).

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

팁 3: 리소스 기반 정책 사용

오픈 액세스 정책 대신 IAM 역할을 지정하거나 요청을 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/os-domain-name/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "11.11.11.11/32"
                    ]
                }
            }
        }
    ]
}

팁 4: 세분화된 액세스 제어(FGAC) 사용

리소스 기반 액세스 정책과 함께 FGAC를 사용하여 OpenSearch Service 도메인에 대한 데이터 액세스를 관리할 수 있습니다. 세분화된 액세스 제어는 다음과 같은 이점이 있습니다.

  • 역할 기반 액세스 제어
  • 인덱스, 문서 및 필드 수준의 보안
  • OpenSearch 대시보드 멀티 테넌시
  • OpenSearch Service 및 OpenSearch 대시보드를 위한 HTTP 기본 인증

FGAC는 역할을 기반으로 하므로 요청을 인증할 때 사용자 자격 증명이 평가됩니다. 세분화된 액세스 제어가 사용자를 인증하는 경우 InvalidHostHeaderRequests의 지표가 기록되지 않습니다. FGAC에 대한 자세한 내용은 큰 그림: 세부적인 액세스 제어 및 OpenSearch Service 보안을 참조하세요.