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

「ユーザーはこのアクションを実行する権限がありません」というエラーを解決するには、次のアプローチを検討してください:

  • ホストヘッダーに適切な値を設定する。
  • 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 はロールに基づいているため、リクエストの認証時にユーザーの認証情報が評価されます。きめ細かなアクセスコントロールがユーザーを認証する場合、InvalidHostHeaderRequests メトリクスは記録されません。FGAC の詳細については、The bigger picture: fine-grained access control and OpenSearch Service security を参照してください。