

# 許可および拒否された AWS WAF IP セットの IP 保持を設定する
<a name="configure-ip-retention-on-allowed-and-denied-aws-waf-ip-sets"></a>

このソリューションが作成する許可および拒否された AWS WAF IP セットの IP 保持を設定できます。次のセクションでは、その仕組みを説明し、設定する手順を説明します。

## 仕組み
<a name="how-it-works"></a>

 **AWS WAF の許可リストと拒否リスト、およびその他の AWS リソースを示すアーキテクチャ図** 

![\[IP 保持\]](http://docs.aws.amazon.com/ja_jp/solutions/latest/security-automations-for-aws-waf/images/ip-retention.png)


1. ユーザーが、許可または拒否された AWS WAF の IP セットを更新 (IP アドレスを追加または削除) すると、このアクションは、 AWS WAF の `UpdateIPSet` API コールを呼び出して、イベントを作成します。

1. [Amazon EventBridge](https://aws.amazon.com/eventbridge/) イベントルールは、事前定義されたイベントパターンに基づいてイベントを検出し、Lambda 関数を呼び出して、更新後に IP セットに存在するすべての IP アドレスの保持期間を設定します。

1. Lambda 関数はイベントを処理し、IP 保持に関連するデータを (IP セット名、ID、スコープ、IP アドレスなど) を抽出し、DynamoDB テーブルに挿入します。また、各 DynamoDB の項目に対して `ExpirationTime` 属性も挿入されます。このソリューションは、ユーザー定義の保存期間をイベント時間に加算して有効期限を計算します。テーブルには [DynamoDB Streams](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html) があり、[Time to Live (TTL)](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/TTL.html) が有効になっています。TTL 属性は `ExpirationTime` です。

1. 項目が有効期限に達すると、TTL が呼び出され、Amazon DynamoDB は有効期限が切れた後にその項目をテーブルから削除します。項目を削除すると、削除された項目が DynamoDB ストリームに追加され、ダウンストリーム処理のために Lambda 関数が呼び出されます。

1. Lambda 関数は、DynamoDB ストリームから削除された項目に関する情報を取得し、AWS WAF の API コールを行って、項目に含まれる期限切れの IP アドレスをターゲットの AWS WAF の IP セットから削除します。

## IP 保持を有効にする
<a name="turn-on-ip-retention"></a>

IP 保持を有効にするには、次の手順に従います。

1. [デプロイ](deploy-the-solution.md)または[更新](update-the-solution.md)する Cloudformation スタックで、**IP Retention Period (Minutes) for Allowed IP Set** と**IP Retention Period (Minutes) for Denied IP Set** を入力します。最小保持期間は 15 分です。このソリューションは、`0` と `15` の間の任意の数を `15` として扱います。デプロイ設定の詳細については、「[ステップ 1. スタックを起動する」で生成したリソースを使用して AWS WAF とロギングをアクティブにします](step-1.-launch-the-stack.md)。

1. 期限切れの IP アドレスが AWS WAF の IP セットから削除された場合に E メール通知を受け取りたい場合は、E メールアドレスを入力します。E メール通知の受信を選択した場合は、このソリューションが正常にデプロイされた後に受信する E メール内のリンクを使用して、サブスクリプションを確認する必要があります。デプロイ設定の詳細については、「[ステップ 1. スタックを起動する」で生成したリソースを使用して AWS WAF とロギングをアクティブにします](step-1.-launch-the-stack.md)。

1. IP アドレスを追加または削除して AWS WAF IP セットを更新します。これにより、IP 保持プロセスが開始され、IP 有効期限リストを含む DynamoDB 項目が作成されます。この有効期限リストは、更新後に AWS WAF IP セットに存在する IP アドレスで構成されます。

1. DynamoDB 項目が有効期限に達し、テーブルから削除されると、ソリューションは項目の IP 有効期限リストに含まれている IP アドレスを WAF IP セットから削除します。

**注記**  
DynamoDB が TTL によって期限切れの項目を削除する時間に応じて、AWS WAF IP セットから期限切れ IP アドレスの実際の削除操作が変わる場合があります。DynamoDB の TTL による削除は、主にテーブルのサイズとアクティビティレベルに依存します。DynamoDB の削除操作では遅延が発生する可能性があるため、AWS WAF の削除操作に遅延が発生することが予想されます。一般的に、このソリューションは DynamoDB TTL を削除した直後に AWS WAF IP セットから期限切れの IP アドレスを削除します。詳細については、「*Amazon DynamoDB 開発者ガイド*」の「[DynamoDB での Time to Llive (TTL) の使用](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/howitworks-ttl.html)」を参照してください。