ソリューションアーキテクトに求められる視点(11/14) アプリケーション開発に注力するためにマネージドサービスで効率的に保護する　AWS WAF ＋API Gateway API ＋Inspector ＋Amazon GuardDuty

## はじめに
ソリューションアーキテクトに求められる視点を整理してみました。

今回は、**API のセキュリティを強化して、サービス拒否 (DoS) 攻撃をより効果的に防止し、脆弱性をチェックし、一般的なエクスプロイトから保護する方法**です。実務や試験で、ご参考にして頂けましたら、幸いです。

## ポイント

１. **DDoS 対策**
   - **AWS WAF レートベースのルール** 
包括的または URI 固有のレートベースのルールを作成して、DDoS 攻撃からウェブアプリケーションを保護できます。

https://repost.aws/ja/knowledge-center/waf-mitigate-ddos-attacks

   - **AWS Shield** 
ネットワーク層、トランスポート層 (レイヤー 3 と 4)、アプリケーションレイヤー (レイヤー 7) AWS のリソースに対する分散型サービス拒否 (DDoS) AWS Shield Advanced 攻撃からの保護も提供します。

https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/ddos-overview.html

   - **CloudFront** 
Shield DDoS対策では、ウェブアプリケーションに有効なトラフィックのみがサービスに送信されます。これにより、UDP リフレクション攻撃など、多くの一般的な DDoS ベクトルに対して自動的に保護されます。

CloudFront アプリケーションオリジンへの持続的な接続を維持し、Shield TCP SYN プロキシ機能との統合により TCP SYN フラッドが自動的に軽減され、トランスポート層セキュリティ (TLS) はエッジで終了します。これらの機能を組み合わせることで、アプリケーションオリジンは整形式のウェブリクエストのみを受信し、下位層の DDoS 攻撃、接続フラッド、および TLS 不正使用から保護されます。

CloudFront DNS トラフィック方向とエニーキャストルーティングを組み合わせて使用します。これらの手法は、ソースに近い攻撃を緩和し、障害を分離し、容量へのアクセスを確保して既知の最大の攻撃を軽減することで、アプリケーションの復元力を向上させます。

https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/ddos-event-mitigation-logic-continuous-inspection.html

２. **認証と認可の強化**
   - API Gateway を使用して、認証とアクセス制御を実装します。API Gateway では、AWS IAM、Lambda カスタム認証、Cognito ユーザープールなどの認証メカニズムを利用できます。
   - API Gateway でのリクエストの署名検証やトークンの検証を実施し、不正アクセスを防ぎます。
:::note info
**認証と認可に次のメカニズムを使用することができます。**

   - **リソースポリシーを使用**して、特定のソース IP アドレスまたは VPC エンドポイントから、API およびメソッドへのアクセスを許可、または拒否するリソースベースの**ポリシーを作成**できます。

   - 標準 AWS IAM ロールとポリシーは、API 全体または個々のメソッドに適用できる柔軟で堅牢なアクセスコントロールを提供します。**IAM ロールとポリシーを使用して、API を作成および管理できるユーザーと、API を呼び出すことができるユーザーを制御できます。**

   - **IAM タグは、アクセスをコントロール**するために、IAM ポリシーと共に使用できます。

   - インターフェイス VPC エンドポイント用のエンドポイントポリシー では、 IAM リソースポリシーをインターフェイス VPC エンドポイントにアタッチして、**プライベート API のセキュリティを向上**させることができます。

   - **Lambda オーソライザー**は、ヘッダー、パス、クエリ文字列、ステージ変数、コンテキスト変数のリクエストパラメータで記述される情報と同様に、べアラートークン認証を使用して **REST API メソッドへのアクセスを制御**する Lambda 関数です。Lambda 認証は、REST API メソッドを呼び出すことができるユーザーを制御するために使用されます。

   - Amazon Cognito ユーザープールを使用して、REST API に関するカスタマイズ可能な認証と認可のソリューションを作成できます。Amazon Cognito ユーザープールは、**REST API メソッドを呼び出すことができるユーザーを制御**するために使用されます。
:::

https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-control-access-to-api.html



３. **セキュリティグループとネットワーク ACL**
   - EC2 インスタンスや他のリソースに対して適切なセキュリティグループとネットワーク ACL を設定し、不必要なトラフィックをブロックします。

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Security.html


４. **リクエストのフィルタリングと検証**
API Gateway や自前の API サーバーで、リクエストの内容やヘッダーを厳密に検証し、不正なリクエストをフィルタリングします。例えば、過剰なリクエストレートを検知して一時的に IP アドレスをブロックする、正当なユーザーからのリクエストかを判断するなどの対策が考えられます。

https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/api-gateway-method-request-validation.html

５. **セキュリティパッチの適用**
使用しているすべてのソフトウェアやフレームワークに対して、最新のセキュリティパッチを定期的に適用します。特に、オペレーティングシステム、Web サーバー、アプリケーションフレームワークなどに対しては注意が必要です。

https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-predefined-and-custom-patch-baselines.html

６. **監視とログ管理**
APIアクティビティをログ記録して、疑わしいアクティビティを監視します。異常なアクティビティを発見したら、調査します。CloudWatch Logs や CloudTrail を活用して、セキュリティインシデントの追跡と分析を行います。


## **アーキテクトに求められる視点**
Amazon API Gateway API と、API メソッドのロジックを含む AWS Lambda 関数を使用して、AWS 上で主要な API をホストしています。

複数の顧客が、単一のスタンドアロン Amazon EC2 インスタンスで実行されているレガシー API にアクセスしています。

API のセキュリティを強化して、サービス拒否 (DoS) 攻撃をより効果的に防止し、脆弱性をチェックし、一般的なエクスプロイトから保護したいと考えています。

## **ソリューション**
AWS WAF を使用して API Gateway API を保護します。Amazon Inspector を設定してレガシー API を分析します。Amazon GuardDuty を設定して API への悪意のあるアクセス試行を監視します。 

**解説**
AWS GuardDuty は監視および脅威検出サービスであり、悪意のあるアクティビティを直接ブロックするものではありません。GuardDuty は、機械学習、異常検出、統合脅威インテリジェンスを使用して、AWS アカウントとワークロードを継続的に監視および分析し、潜在的な脅威を検出するように設計されています。


AWS WAF、API Gateway、Amazon Inspector、Amazon GuardDutyは、AWS環境のセキュリティを強化するための強力なツールです。これらのサービスを組み合わせることで、包括的なセキュリティ対策を実現できます。


| サービス名            | 特徴                                                                                       | 利点                                                                                       |
|-----------------------|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
| AWS WAF               | Webアプリケーションファイアウォール。悪意のあるトラフィックをフィルタリングし、攻撃から保護。 | SQLインジェクションやクロスサイトスクリプティング（XSS）などの一般的な攻撃からアプリケーションを保護。 |
| API Gateway           | APIの作成、公開、保守、監視、保護を行うフルマネージドサービス。                             | APIのスケーラビリティ、可用性、セキュリティを向上。                                         |
| Amazon Inspector      | AWSリソースのセキュリティ評価を自動化するサービス。                                         | セキュリティの脆弱性を検出し、修正のための推奨事項を提供。                                 |
| Amazon GuardDuty      | AWSアカウントとワークロードの脅威検出サービス。                                             | 継続的な脅威検出と監視を行い、異常なアクティビティを即座に通知。                             |

### アプリケーション開発に注力するためにマネージドサービスで効率的に保護する

#### 1. **Webアプリケーションの保護**
AWS WAFを使用して、API Gatewayを介して提供されるWebアプリケーションを保護します。WAFルールを設定して、SQLインジェクションやXSSなどの攻撃を防ぎます。

#### 2. **APIのセキュリティ強化**
API Gatewayを使用して、APIの認証と認可を行い、セキュリティを強化します。AWS WAFと組み合わせることで、APIへの悪意のあるリクエストをフィルタリングします。

#### 3. **脆弱性の検出と修正**
Amazon Inspectorを使用して、AWSリソースのセキュリティ評価を自動化し、脆弱性を検出します。検出された脆弱性に対する修正の推奨事項を提供し、セキュリティを強化します。

#### 4. **脅威の検出と対応**
Amazon GuardDutyを使用して、AWSアカウントとワークロードの脅威を継続的に監視します。異常なアクティビティが検出された場合、即座に通知を受け取り、迅速に対応します。

:::note info
**GuardDutyとInspectorのユースケース**
GuardDutyは、特にセキュリティインシデントのリアルタイムな検知と対応が必要な場合に有効です。不正なアクセスやマルウェアの検知、DDoS攻撃の監視など、**セキュリティインシデントの早期検知**に焦点を当てています。GuardDutyは、自動的に検出されたセキュリティイベントに基づいてアラートや通知を送信し、迅速な対応を可能にします。

一方、Inspectorは、リソースに対して定期的なスキャンを実施し、**セキュリティガイドラインの違反とセキュリティ上の脆弱性を特定**します。さらに、ネットワークセキュリティの評価により、不正なアクセスポイントやセキュリティリスクを検出することも可能です。

GuardDutyとInspectorを組み合わせて使用する場合もあります。**GuardDutyは、リアルタイムな動作監視と検知に優れており、Inspectorは定期的な脆弱性スキャンとセキュリティ評価に特化しています。** 両サービスを組み合わせることで、セキュリティインシデントの早期検知とリソースのセキュリティ評価を網羅的に実施することができます。
:::


### まとめ
AWS WAF、API Gateway、Amazon Inspector、Amazon GuardDutyを組み合わせることで、AWS環境のセキュリティを包括的に強化できます。これにより、WebアプリケーションやAPIの保護、脆弱性の検出と修正、脅威の検出と対応が可能となり、セキュリティリスクを最小限に抑えることができます。このようにすることで、マネージドサービスでセキュリティを万全にし、アプリケーション開発に注力する事が可能となります。


アプリケーション開発に集中するための方法を模索した
本記事はQmonus Value Streamの投稿キャンペーン記事です。