AWS WAF または Shield Advanced に対する HTTPS リクエストの実行 - AWS WAF、AWS Firewall Manager、AWS Shield Advanced、および AWS Shield ネットワークセキュリティディレクター

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

更新されたエクスペリエンスを使用して、コンソールの任意の場所で AWS WAF 機能にアクセスできるようになりました。詳細については、「更新されたコンソールエクスペリエンスを使用する」を参照してください。

AWS WAF または Shield Advanced に対する HTTPS リクエストの実行

AWS WAF と Shield Advanced に対するリクエストは、RFC 2616 で定義されている HTTPS リクエストです。すべての HTTP リクエストと同様に、AWS WAF または Shield Advanced に対するリクエストには、リクエストメソッド、URI、リクエストヘッダー、リクエストボディが含まれます。レスポンスには HTTP ステータスコードとレスポンスヘッダーが含まれており、レスポンス本文が含まれている場合もあります。

リクエストの URI

リクエスト URI は常に 1 つのスラッシュ / です。

HTTP ヘッダー

AWS WAF および Shield Advanced では、HTTP リクエストのヘッダーに次の情報を入力する必要があります。

Host (必須)

リソースが作成される場所を指定するエンドポイント。エンドポイントの詳細については、「AWS サービスエンドポイント」を参照してください。例えば、CloudFront ディストリビューションの AWS WAF の Host ヘッダーの値は waf.amazonaws.com:443 です。

x-amz-date または Date (必須)

Authorization ヘッダーに含める署名を作成するときに使用できる日付。ISO 8601 の標準形式に基づいて UTC 時間で日付を指定します (次の例を参照)。

x-amz-date: 20151007T174952Z

x-amz-date または Date のどちらかを含める必要があります。(一部の HTTP クライアントライブラリでは、Date ヘッダーを設定することができません)。x-amz-date ヘッダーがあると、AWS WAF はリクエストの認証時に Date ヘッダーを無視します。

タイムスタンプは、リクエストが受け取られた時点の AWS システム時刻の 15 分以内に入っている必要があります。このようにしないと、リクエストは RequestExpired エラーコードで失敗し、任意のユーザーがリクエストを再現できなくなります。

Authorization (必須)

リクエスト認証に必要な情報。このヘッダーの作成方法の詳細については、「リクエストの認証」を参照してください。

X-Amz-Target (必須)

AWSWAF_ または AWSShield_、API バージョン (ピリオドなし)、ピリオド (.)、オペレーション名を連結したもの。例えば、以下のようになります。

AWSWAF_20150824.CreateWebACL

Content-Type (条件付き)

コンテンツタイプとして JSON をそのバージョンと共に指定します。例えば、次のようになります。

Content-Type: application/x-amz-json-1.1

条件: POST リクエストに必要です。

Content-Length (条件付き)

RFC 2616 に基づくメッセージの長さ (ヘッダーなし)。

条件: リクエストボディ自体に情報が含まれる場合、必須です (このヘッダーは、ほとんどのツールキットで自動的に追加されます)。

次に示しているのは、AWS WAF で保護パック (ウェブ ACL) を作成するための HTTP リクエストのヘッダーの例です。

POST / HTTP/1.1 Host: waf.amazonaws.com:443 X-Amz-Date: 20151007T174952Z Authorization: AWS4-HMAC-SHA256 Credential=AccessKeyID/20151007/us-east-2/waf/aws4_request, SignedHeaders=host;x-amz-date;x-amz-target, Signature=145b1567ab3c50d929412f28f52c45dbf1e63ec5c66023d232a539a4afd11fd9 X-Amz-Target: AWSWAF_20150824.CreateWebACL Accept: */* Content-Type: application/x-amz-json-1.1; charset=UTF-8 Content-Length: 231 Connection: Keep-Alive

HTTP リクエストボディ

多くの AWS WAF および Shield Advanced API アクションでは、リクエストの本文に JSON 形式のデータを含める必要があります。

次に示しているリクエストの例では、シンプルな JSON ステートメントを使用して、IP アドレス 192.0.2.44 (CIDR 表記では 192.0.2.44/32) を含めるように、IPSet を更新しています。

POST / HTTP/1.1 Host: waf.amazonaws.com:443 X-Amz-Date: 20151007T174952Z Authorization: AWS4-HMAC-SHA256 Credential=AccessKeyID/20151007/us-east-2/waf/aws4_request, SignedHeaders=host;x-amz-date;x-amz-target, Signature=145b1567ab3c50d929412f28f52c45dbf1e63ec5c66023d232a539a4afd11fd9 X-Amz-Target: AWSWAF_20150824.UpdateIPSet Accept: */* Content-Type: application/x-amz-json-1.1; charset=UTF-8 Content-Length: 283 Connection: Keep-Alive { "ChangeToken": "d4c4f53b-9c7e-47ce-9140-0ee5ffffffff", "IPSetId": "69d4d072-170c-463d-ab82-0643ffffffff", "Updates": [ { "Action": "INSERT", "IPSetDescriptor": { "Type": "IPV4", "Value": "192.0.2.44/32" } } ] }