Amazon API Gateway
開発者ガイド

AWS WAF を使用して一般的なウェブの脆弱性から Amazon API Gateway API を保護する

AWS WAF は、お客様が定義するカスタマイズ可能なウェブセキュリティルールと条件に基づいて、ウェブリクエストを許可、ブロック、またはカウントする一連のルール (ウェブアクセスコントロールリストまたはウェブ ACL と呼ばれます) を設定できるようにすることで、ウェブアプリケーションや API を攻撃から保護するうえで役立つウェブアプリケーションファイアウォールです。詳細については、「AWS WAF の仕組み」を参照してください。

AWS WAF を使用すると、SQL インジェクションやクロスサイトスクリプト (XSS) 攻撃など、API の可用性、パフォーマンス、セキュリティに影響を与えたり、過度のリソースを使用したりする可能性がある一般的なウェブの脆弱性から API Gateway API を保護できます。たとえば、指定された IP アドレスの範囲や CIDR ブロック、または特定の国またはリージョンからの、悪意のある SQL コードや悪意のあるスクリプトを含むリクエストを許可あるいはブロックするルールを作成できます。また、HTTP ヘッダー、メソッド、クエリ文字列、URI、およびリクエストボディの指定された文字列または定型表現パターン (最初の 8 KB に制限されます) に一致するルールを作成することもできます。さらに、特定のユーザーエージェント、悪質なボット、またはコンテンツスクレーパーからの攻撃をブロックするルールを作成できます。たとえば、レートベースのルールを使用して、継続的に更新される後続の 5 分間で、各クライアント IP によって許可されるウェブリクエストの数を指定できます。

重要

AWS WAF は、ウェブの脆弱性に対する防御の最前線です。AWS WAF が API で有効になっている場合、AWS WAF ルールは、リソースポリシーIAM ポリシーLambda オーソライザー、および Amazon Cognito オーソライザーなどの他のアクセスコントロール機能の前に評価されます。たとえば、AWS WAF がリソースポリシーで許可されている CIDR ブロックからのアクセスをブロックした場合、AWS WAF が優先され、リソースポリシーは評価されません。

API に対して AWS WAF を有効にするには、以下の操作が必要です。

  1. AWS WAF コンソール、AWS SDK、または CLI を使用して、AWS WAF マネージドルールと独自のカスタムルールの自由な組み合わせを含むリージョン別ウェブ ACL を作成します。詳細については、「AWS WAF の開始方法」および「ウェブアクセスコントロールリスト (ウェブ ACL) の作成と設定」を参照してください。

    重要

    API Gateway には、リージョンウェブ ACL が必要になります。

  2. AWS WAF リージョンウェブ ACL を API ステージに関連付けます。これを行うには、AWS WAF コンソール、AWS SDK、または CLI を使用するか、API Gateway コンソール、AWS SDK、または CLI を使用します。

API Gateway コンソールを使用して AWS WAF リージョンウェブ ACL を API Gateway API ステージに関連付けるには

API Gateway コンソールを使用して AWS WAF リージョンウェブ ACL を既存の API Gateway API ステージに関連付けるには、次のステップを実行します。

  1. https://console.aws.amazon.com/apigateway で API Gateway コンソールにサインインします。

  2. [API] ナビゲーションペインで API を選択し、[ステージ] を選択します。

  3. [ステージ] ペインで、ステージの名前を選択します。

  4. [ステージエディター] ペインで、[設定] タブを選択します。

  5. リージョンウェブ ACL を API ステージに関連付けるには

    1. AWS WAF ウェブ ACL ドロップダウンリストで、このステージに関連付けるリージョンウェブ ACL を選択します。

      注記

      必要なウェブ ACL がまだ存在しない場合は、[Create WebACL (WebACL の作成)]、[Go to AWS WAF (AWS WAF に移動] の順に選択して新しいブラウザタブで WAF コンソールを開き、リージョンウェブ ACL を作成します。次に、API Gateway コンソールに戻り、ウェブ ACL をステージに関連付けます。

  6. [Save Changes (変更の保存)] を選択します。

AWS CLI を使用して AWS WAF リージョンウェブ ACL を API Gateway API ステージに関連付ける

AWS CLI を使用して AWS WAF リージョンウェブ ACL を既存の API Gateway API ステージに関連付けるには、次の例のように associate-web-acl コマンドを呼び出します。

aws waf-regional associate-web-acl \ --web-acl-id 'aabc123a-fb4f-4fc6-becb-2b00831cadcf' \ --resource-arn 'arn:aws:apigateway:{region}::/restapis/4wk1k4onj3/stages/prod'

AWS WAF REST API を使用して AWS WAF リージョンウェブ ACL を API ステージに関連付ける

AWS WAF REST API を使用して AWS WAF リージョンウェブ ACL を既存の API Gateway API ステージに関連付けるには、次の例のように AssociateWebACL コマンドを呼び出します。

import boto3 waf = boto3.client('wafregional') waf.associate_web_acl( WebACLId='aabc123a-fb4f-4fc6-becb-2b00831cadcf', ResourceArn='arn:aws:apigateway:{region}::/restapis/4wk1k4onj3/stages/prod' )