Amazon OpenSearch Service 内でホストヘッダーが無効、または欠落しているため、未承認エラーが発生します。
簡単な説明
Amazon CloudWatch の **InvalidHostHeaderRequests ** メトリクスは、リクエストのホストヘッダー値が完全修飾ドメイン名 (FQDN) と異なる場合に記録されます。
以下の条件の場合、Amazon OpenSearch Service は、有効なヘッダーが存在しないリクエストを拒否します:
- リクエストされたドメインはパブリックアクセス可能です。(なお、”https://repost.aws/ja/knowledge-center/rds-connectivity-instance-subnet-vpc””を参照してください。)
- リクエストされたドメインは、リソースベースのポリシー (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
「ユーザーにはこの操作を実行する権限がありません」というエラーを解決するには、次の方法を検討してください:
ヒント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 サービスドメインを起動します
VPC を使用し、OpenSearch Service ドメインを起動すると、セキュリティのレイヤーが追加されます。VPC では、セキュリティグループを通じてドメインへのアクセスを管理することもできます。したがって、ベストプラクティスは、ドメインの起動にパブリックエンドポイントを使用することは避けることです。リクエストは OpenSearch サービスドメインに到達しますが、Web ブラウザーでパブリックエンドポイントにアクセスすると、「未承認」エラーが表示される場合があります。詳細については、「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 の詳細については、「全体像: きめ細かなアクセスコントロールと OpenSearch Service のセキュリティ」を参照してください。
関連情報
Amazon OpenSearch Service ドメインの作成と管理
OpenSearch ダッシュボードに関する Amazon Cognito 認証の問題をトラブルシューティングするにはどうすれば良いですか?
Amazon OpenSearch Service における ID およびアクセス管理