

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

# AWS WAF ウェブ ACL をユーザープールに関連付ける
<a name="user-pool-waf"></a>

AWS WAF はウェブアプリケーションファイアウォールです。 AWS WAF ウェブアクセスコントロールリスト (ウェブ ACL) を使用すると、クラシックホスト UI、マネージドログイン、Amazon Cognito API サービスエンドポイントへの不要なリクエストからユーザープールを保護できます。ウェブ ACL を使用すると、ユーザープールが応答するすべての HTTPS ウェブリクエストをきめ細かく制御できます。 AWS WAF ウェブ ACL の詳細については、「*AWS WAF デベロッパーガイド*」の「[ウェブアクセスコントロールリスト (ウェブ ACL) の管理と使用](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html)」を参照してください。

ユーザープールに関連付けられた AWS WAF ウェブ ACL がある場合、Amazon Cognito は選択した非機密ヘッダーとユーザーからのリクエストの内容を に転送します AWS WAF。 AWS WAF はリクエストの内容を検査し、ウェブ ACL で指定したルールと比較し、Amazon Cognito にレスポンスを返します。

## AWS WAF ウェブ ACLs と Amazon Cognito について知っておくべきこと
<a name="user-pool-waf-things-to-know"></a>
+ ウェブ ACL ルールは、ユーザー名、パスワード、電話番号、E メールアドレスなど、ユーザープールリクエスト内の個人を特定できる情報 (PII) と一致するように設定することはできません。このデータは利用できません AWS WAF。代わりに、IP アドレス、ブラウザエージェント、リクエストされた API オペレーションなど、ヘッダー、パス、本文のセッションデータと一致するようにウェブ ACL ルールを設定します。
+ ウェブ ACL ルールの条件は、ユーザーインタラクティブなマネージドログインページへのユーザーからの**最初**のリクエストに対してのみ、カスタムブロックレスポンスを返すことができます。後続の接続がカスタムブロックレスポンスの条件に一致すると、カスタムステータスコード、ヘッダー、リダイレクトレスポンスを返しますが、デフォルトのブロックメッセージは返しません。
+ によってブロックされたリクエスト AWS WAF は、どのリクエストタイプのリクエストレートクォータにもカウントされません。 AWS WAF ハンドラーは、API レベルのスロットリングハンドラーの前に呼び出されます。
+ ウェブ ACL を作成すると、ウェブ ACL が完全に伝達されて Amazon Cognito で使用できるようになるまでに少し時間がかかります。伝播時間は、数秒から数分までです。 は、完全に伝播される前にウェブ ACL を関連付けようと[https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#API_AssociateWebACL_Errors](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#API_AssociateWebACL_Errors)すると、 AWS WAF を返します。
+ ユーザープールごとに 1 つのウェブ ACL を関連付けることができます。
+ リクエストは、 AWS WAF が検査できる範囲を超えたペイロードになる可能性があります が Amazon Cognito [からのオーバーサイズリクエストを処理する方法を設定する方法については、「 デベロッパーガイド」の「オーバーサイズリクエストコンポーネントの処理](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-oversize-handling.html)」を参照してください。 *AWS WAF * AWS WAF 
+  AWS WAF [Fraud Control アカウント乗っ取り防止 (ATP)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-atp.html) を使用するウェブ ACL を Amazon Cognito ユーザープールに関連付けることはできません。ATP 機能は、`AWS-AWSManagedRulesATPRuleSet` マネージドルールグループに含まれています。ウェブ ACL をユーザープールに関連付ける前に、ウェブ ACL がこのマネージドルールグループを使用していないことを確認してください。
+ ユーザープールに関連付けられた AWS WAF ウェブ ACL があり、ウェブ ACL のルールが CAPTCHA を提示すると、マネージドログイン TOTP 登録で回復不可能なエラーが発生する可能性があります。CAPTCHA アクションを含み、マネージドログインの TOTP には影響しないルールを作成するには、「[マネージドログイン TOTP MFA 用の AWS WAF ウェブ ACL の設定](user-pool-settings-mfa-totp.md#totp-waf)」を参照してください。

AWS WAF は、次のエンドポイントへのリクエストを検査します。

**マネージドログインとクラシックのホストされた UI**  
[ユーザープールのエンドポイントとマネージドログインのリファレンス](cognito-userpools-server-contract-reference.md) 内のすべてのエンドポイントへのリクエスト。

**公開 API オペレーション**  
アプリケーションから Amazon Cognito API へのリクエストのうち、認可に AWS 認証情報を使用しないリクエスト。これには、[InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)、[RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)、[GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) などの API オペレーションが含まれます。の範囲内にある API オペレーションでは、 AWS 認証情報による認証 AWS WAF は必要ありません。これらは、認証されていないか、セッション文字列またはアクセストークンで承認されています。詳細については、「[認可モデル別にグループ化された API オペレーションのリスト](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth)」を参照してください。

ウェブ ACL のルールを設定するには、ルールと一致するリクエストに応じて、**カウント**、**許可**、**ブロック**、または **CAPTCHA** 提示を行うルールアクションを使用できます。詳細については、「*AWS WAF デベロッパーガイド*」の「[AWS WAF のルール](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html)」を参照してください。ルールアクションに応じて、Amazon Cognito からユーザーに返す応答をカスタマイズできます。

**重要**  
エラー応答をカスタマイズするオプションは、API リクエストを行う方法によって異なります。  
マネージドログインリクエストのエラーコードとレスポンス本文をカスタマイズできます。マネージドログインでは、ユーザーに解決してもらうためだけに CAPTCHA を提示できます。
Amazon Cognito [ユーザープール API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) を使用して行うリクエストの場合は、**ブロック**応答を受信するリクエストの応答本文をカスタマイズできます。カスタムエラーコードを 400～499 の範囲で指定することもできます。
 AWS Command Line Interface (AWS CLI) と AWS SDKs は、**ブロック**または **CAPTCHA** レスポンスを生成するリクエストに`ForbiddenException`エラーを返します。

## ウェブ ACL をユーザープールに関連付ける
<a name="user-pool-waf-setting-up"></a>

ユーザープールでウェブ ACL を使用するには、 AWS Identity and Access Management (IAM) プリンシパルに次の Amazon Cognito および アクセス AWS WAF 許可が必要です。アクセス AWS WAF 許可の詳細については、「 *AWS WAF デベロッパーガイド*」の[AWS WAF 「API アクセス許可](https://docs.aws.amazon.com/waf/latest/developerguide/waf-api-permissions-ref.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "AllowWebACLUserPool",
			"Effect": "Allow",
			"Action": [
				"cognito-idp:ListResourcesForWebACL",
				"cognito-idp:GetWebACLForResource",
				"cognito-idp:AssociateWebACL"
			],
			"Resource": [
				"arn:aws:cognito-idp:*:123456789012:userpool/*"
			]
		},
		{
			"Sid": "AllowWebACLUserPoolWAFv2",
			"Effect": "Allow",
			"Action": [
				"wafv2:ListResourcesForWebACL",
				"wafv2:AssociateWebACL",
				"wafv2:DisassociateWebACL",
				"wafv2:GetWebACLForResource"
			],
			"Resource": "arn:aws:wafv2:*:123456789012:*/webacl/*/*"
		},
		{
			"Sid": "DisassociateWebACL1",
			"Effect": "Allow",
			"Action": "wafv2:DisassociateWebACL",
			"Resource": "*"
		},
		{
			"Sid": "DisassociateWebACL2",
			"Effect": "Allow",
			"Action": [
				"cognito-idp:DisassociateWebACL"
			],
			"Resource": [
				"arn:aws:cognito-idp:*:123456789012:userpool/*"
			]
		}
	]
}
```

------

IAM アクセス許可を付与する必要がありますが、リストされているのは、対応する [API オペレーション](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html)のない許可のみのアクションです。

**ユーザープール AWS WAF の をアクティブ化し、ウェブ ACL を関連付けるには**

1. [Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)にサインインします。

1. ナビゲーションペインで **[User Pools]** (ユーザープール) を選択してから、編集するユーザープールを選択します。

1. **[セキュリティ]** セクションの **[AWS WAF]** タブを選択します。

1. **[編集]** を選択します。

1. **ユーザープール AWS WAF で を使用する** を選択します。  
![\[ユーザープールを選択した AWS WAF 状態で を使用する AWS WAF ダイアログボックスのスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/images/cup-WAF-console.png)

1. すでに作成した**AWS WAF ウェブ ACL** を選択するか、**「 でウェブ ACL AWS WAF** を作成する」を選択して、 の新しい AWS WAF セッションで作成します AWS マネジメントコンソール。

1. **[Save changes]** (変更の保存) をクリックします。

ウェブ ACL を AWS Command Line Interface または SDK のユーザープールにプログラムで関連付けるには、 AWS WAF API の [AssociateWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html) を使用します。Amazon Cognito には、ウェブ ACL を関連付ける個別の API オペレーションはありません。

## AWS WAF ウェブ ACLsテストとログ記録
<a name="user-pool-waf-evaluating-and-logging"></a>

ウェブ ACL でルールアクションを**カウント**に設定すると、 はルールに一致するリクエストの数にリクエスト AWS WAF を追加します。ユーザープールでウェブ ACL をテストするには、ルールアクションを**カウント**に設定し、各ルールに一致するリクエストの量を考慮します。例えば、ルールを**ブロック**アクションに設定した場合に、通常のユーザートラフィックと判断される多数のリクエストと一致するときは、ルールの再設定が必要になる場合があります。詳細については、「*AWS WAF デベロッパーガイド*」の「[AWS WAF 保護のテストとチューニング](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-testing.html)」を参照してください。

リクエストヘッダーを Amazon CloudWatch Logs ロググループ、Amazon Simple Storage Service (Amazon S3) バケット、または Amazon Data Firehose に記録する AWS WAF ように を設定することもできます。ユーザープール API で行った Amazon Cognito リクエストは、`x-amzn-cognito-client-id` と `x-amzn-cognito-operation-name` で特定できます マネージドログインのリクエストには、`x-amzn-cognito-client-id` ヘッダーのみが含まれます。詳細については、「*AWS WAF デベロッパーガイド*」の「[ウェブ ACL トラフィックのログ記録](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html)」を参照してください。

AWS WAF ウェブ ACLsは、すべてのユーザープール[機能プラン](cognito-sign-in-feature-plans.md)で使用できます。 AWS WAF のセキュリティ機能は、Amazon Cognito の脅威保護を補完します。ユーザープールで両方の機能を有効にすることができます。 AWS WAF は、ユーザープールリクエストの検査に対して別途に請求を行います。詳細については、「[AWS WAF 料金](https://aws.amazon.com/waf/pricing)」を参照してください。

ログ記録 AWS WAF リクエストデータには、ログをターゲットとするサービスによる追加料金が適用されます。詳細については、「*AWS WAF デベロッパーガイド*」の「[ウェブ ACL トラフィック情報のログ記録の料金](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html#logging-pricing)」を参照してください。