

**の新しいコンソールエクスペリエンスの紹介 AWS WAF**

更新されたエクスペリエンスを使用して、コンソールの任意の場所で AWS WAF 機能にアクセスできるようになりました。詳細については、[「コンソールの使用](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ノンブロッキングアクションのためのカスタムリクエストヘッダーの挿入
<a name="customizing-the-incoming-request"></a>

このセクションでは、ルールアクションがリクエストをブロックしない場合に、 AWS WAF にカスタムヘッダーを元の HTTP リクエストに挿入するように指示する方法について説明します。このオプションでは、リクエストにのみ追加します。元のリクエストの一部を変更したり、置き換えたりすることはできません。カスタムヘッダー挿入のユースケースには、挿入されたヘッダーに基づいてリクエストを異なる方法で処理するようにダウンストリームアプリケーションに通知し、分析のためにリクエストのフラグを立てることが含まれます。

**重要**  
このオプションは、ルールアクション Allow、Count、CAPTCHA、Challenge に適用され、Allow に設定されている保護パック (ウェブ ACL) のデフォルトアクションにも適用されます。ルールアクションの詳細については、「[でのルールアクションの使用 AWS WAF](waf-rule-action.md)」を参照してください。デフォルトの保護パック (ウェブ ACL) アクションの詳細については、「[で保護パック (ウェブ ACL) のデフォルトアクションを設定する AWS WAF](web-acl-default-action.md)」を参照してください。

## カスタムリクエストヘッダー名を使用する場合の考慮事項
<a name="using-custom-request-header-names"></a>

**リクエストヘッダーに追加されたプレフィックス**  
AWS WAF は、リクエストにすでに存在するヘッダーとの混同を避けるために`x-amzn-waf-`、 で挿入するすべてのリクエストヘッダーにプレフィックスを付けます。たとえば、ヘッダー名 を指定すると`sample`、 はヘッダー AWS WAF を挿入します`x-amzn-waf-sample`。

**重要**  
セキュリティプラクティスとして、ヘッダーがすでに `x-amzn-waf-` で始まるリクエストをブロックする文字列一致ルールを追加できます。これにより、カスタムリクエストヘッダーを処理するときに によって AWS WAF 挿入される`x-amzn-waf-`プレフィックス文字列を模倣する非AWS WAF ソースからのリクエストがブロックされます。

次の例は、`x-amzn-waf-`プレフィックスが挿入されなかったトラフィックをブロックするように設定された文字列一致ルールを示しています AWS WAF。

```
    "Rules": [
        {
          "Name": "CustomHeader",
          "Priority": 0,
          "Statement": {
            "ByteMatchStatement": {
              "SearchString": " x-amzn-waf-",
              "FieldToMatch": {
                "Headers": {
                  "MatchPattern": {
                    "All": {}
                  },
                  "MatchScope": "KEY",
                  "OversizeHandling": "MATCH"
                }
              },
              "TextTransformations": [
                {
                  "Priority": 0,
                  "Type": "NONE"
                }
              ],
              "PositionalConstraint": "STARTS_WITH"
            }
          },
          "Action": {
            "Block": {}
          },
          "VisibilityConfig": {
            "SampledRequestsEnabled": true,
            "CloudWatchMetricsEnabled": true,
            "MetricName": "CustomHeader"
          }
        }
      ]
```

文字列一致ルールの使用については、「[文字列一致ルールステートメント](waf-rule-statement-type-string-match.md)」を参照してください。

**同じ名前のヘッダー**  
リクエストに既に挿入されているのと同じ名前のヘッダーがある場合、 AWS WAF はヘッダーを AWS WAF 上書きします。したがって、同じ名前の複数のルールでヘッダーを定義すると、リクエストを検査して一致を見つける最後のルールにはヘッダーが追加され、それよりも前のルールには追加されません。

## 終了しないルールアクションを含むカスタムヘッダーの使用
<a name="custom-request-header-non-terminating-rule-actions"></a>

Allow アクションとは異なり、Countアクションは保護パック (ウェブ ACL) の残りのルールを使用したウェブリクエストの処理 AWS WAF を停止しません。同様に、 CAPTCHAおよび がリクエストトークンが有効であるChallengeと判断した場合、これらのアクションはウェブリクエストの処理 AWS WAF を停止しません。したがって、これらのアクションを使用するルールでカスタムヘッダーを挿入する場合、後続のルールもカスタムヘッダーを挿入することがあります。ルールアクションの動作については、「[でのルールアクションの使用 AWS WAF](waf-rule-action.md)」を参照してください。

例えば、表示された順序で優先順位付けされた次のルールがあるとします。

1. Count アクションと `RuleAHeader` という名前のカスタマイズされたヘッダーを持つ RuleA。

1. Allow アクションと `RuleBHeader` という名前のカスタマイズされたヘッダーを持つ RuleB。

リクエストが RuleA と RuleB の両方に一致する場合、 はヘッダーと `x-amzn-waf-RuleAHeader` AWS WAF を挿入し`x-amzn-waf-RuleBHeader`、保護されたリソースにリクエストを転送します。

AWS WAF は、リクエストの検査が完了すると、カスタムヘッダーをウェブリクエストに挿入します。したがって、アクションが Count に設定されているルールでカスタムリクエスト処理を使用する場合、追加するカスタムヘッダーは後続のルールによって検査されません。

## カスタムリクエスト処理の例
<a name="example-custom-request-handling"></a>

ルールのアクションまたは保護パック (ウェブ ACL) のデフォルトアクション用に、カスタムリクエスト処理を定義します。次のリストは、保護パック (ウェブ ACL) のデフォルトアクションに追加されたカスタム処理用の JSON を示しています。

```
{
 "Name": "SampleWebACL",
 "Scope": "REGIONAL",
 "DefaultAction": {
  "Allow": {
   "CustomRequestHandling": {
    "InsertHeaders": [
     {
      "Name": "fruit",
      "Value": "watermelon"
     },
     {
      "Name": "pie",
      "Value": "apple"
     }
    ]
   }
  }
 },
 "Description": "Sample protection pack (web ACL) with custom request handling configured for default action.",
 "Rules": [],
 "VisibilityConfig": {
  "SampledRequestsEnabled": true,
  "CloudWatchMetricsEnabled": true,
  "MetricName": "SampleWebACL"
 }
}
```