Amazon OpenSearch Service의 누락되었거나 유효하지 않은 호스트 헤더를 해결하려면 어떻게 해야 하나요?

3분 분량
0

Amazon OpenSearch Service에서 유효하지 않거나 누락된 호스트 헤더로 인해 승인되지 않음 오류가 발생합니다.

간단한 설명

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

다음과 같은 경우, Amazon OpenSearch Service는 유효한 헤더가 누락된 요청을 거부합니다.

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

InvalidHosHeaderRequests 지표 카운터가 트리거되지 않도록 하려면, 다음 접근 방식을 고려하세요.

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

$ 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 Dashboards 멀티 테넌시
  • OpenSearch Service와 OpenSearch Dashboards용 HTTP 기본 인증

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

관련 정보

Amazon OpenSearch Service 도메인 생성 및 관리

OpenSearch Dashboards로 Amazon Cognito 인증 문제를 해결하려면 어떻게 해야 합니까?

Amazon OpenSearch Service의 Identity and Access Management

AWS 공식
AWS 공식업데이트됨 3년 전