type
status
date
slug
summary
tags
category
icon
password
书籍
理論
APIセキュリティにおける本質的知識
- アクセス制御 (Access Control)
- IP制限: 信頼できるクライアント(パートナー)のみを許可することで、不正アクセスを防ぐ基本的な方法。AWS WAFを使い、許可リスト(ホワイトリスト)を設定するのが一般的。
- APIキー: ユーザーごとに固有のキーを発行して認証を強化。特にREST APIでは簡単かつ効果的な認証手段。
- リクエスト制限 (Rate Limiting)
- 使用プラン (Usage Plan): API Gatewayでクライアントごとに1秒あたりのリクエスト数や1日あたりの上限を設定可能。リソースの保護やサービスの公平性確保に役立つ。
- WAFルールでの制限: ボット攻撃など大量リクエストを送るクライアントを早期に遮断。
- トラフィック管理
- CloudFrontとの連携: 高速キャッシュや地理的制限を適用可能。ただし、APIの直接的な保護には向かない。
- オリジンアクセスアイデンティティ (OAI): 主にS3アクセス用の仕組み。API Gatewayには適用しづらい。
- コスト最適化
- APIの呼び出し頻度を適切に制御することで、無駄なリクエスト処理を削減し、運用コストを抑える。
- WAFや使用プランを活用することで、追加のインフラコストを抑えながら効果的なセキュリティを実現。
重要なポイント
- IP制限 + 使用プラン + APIキー は、低コストかつセキュアな構成の基本。
- ボット攻撃を防ぎつつ、正当なユーザーには確実にアクセスを提供するバランスが重要。
- APIセキュリティの基本は、最小限の権限で必要なアクセスのみ許可すること。
実践
略
一問道場
質問 #251
トピック 1
ある企業が、米国に拠点を置く6つのパートナーと情報を共有するためにREST APIを作成しています。
この企業はAmazon API Gatewayのリージョナルエンドポイントを作成しました。6つのパートナーは、それぞれ1日1回、このAPIにアクセスして日々の売上データを投稿します。
初回のデプロイ後、企業は世界中の500の異なるIPアドレスから1秒間に1,000件のリクエストが発生していることを観測しました。
企業は、このトラフィックがボットネットから発生していると考えており、コストを最小限に抑えながらAPIを保護したいと考えています。
APIを保護するために企業が取るべきアプローチはどれですか?
A.
Amazon API GatewayをオリジンとするAmazon CloudFrontディストリビューションを作成します。
AWS WAFのWeb ACLを作成し、1日に5件以上のリクエストを送信するクライアントをブロックするルールを設定します。
このWeb ACLをCloudFrontディストリビューションに関連付けます。
CloudFrontにオリジンアクセスアイデンティティ(OAI)を設定し、それをディストリビューションに関連付けます。
API Gatewayを設定し、OAIのみがPOSTメソッドを実行できるようにします。
B.
Amazon API GatewayをオリジンとするAmazon CloudFrontディストリビューションを作成します。
AWS WAFのWeb ACLを作成し、1日に5件以上のリクエストを送信するクライアントをブロックするルールを設定します。
このWeb ACLをCloudFrontディストリビューションに関連付けます。
CloudFrontディストリビューションにカスタムヘッダーを追加し、このヘッダーにAPIキーを設定します。
API Gatewayを設定し、POSTメソッドでAPIキーを要求するようにします。
C.
AWS WAFのWeb ACLを作成し、6つのパートナーが使用するIPアドレスへのアクセスを許可するルールを設定します。
このWeb ACLをAPIに関連付けます。
リクエストの制限を設定したリソースポリシーを作成し、APIに関連付けます。
APIを設定し、POSTメソッドでAPIキーを要求するようにします。
D.
AWS WAFのWeb ACLを作成し、6つのパートナーが使用するIPアドレスへのアクセスを許可するルールを設定します。
このWeb ACLをAPIに関連付けます。
リクエストの制限を設定した使用プランを作成し、APIに関連付けます。
APIキーを作成し、使用プランに追加します。
解説
この問題では、ボットネットによる不正アクセスを防ぎつつ、6つのパートナーがAPIにアクセスできるようにする必要があります。そのため、以下の点が重要です。
- 正当なアクセスのみを許可する方法
6つのパートナーが使用するIPアドレスを特定し、それ以外のアクセスをブロックすることが効果的です。これにより、不要なトラフィックを排除できます。
- リクエストの制御
パートナーのアクセス頻度は1日1回です。これに基づき、APIの使用量を制限するための使用プラン(Usage Plan)を設定し、リクエスト数を制限する必要があります。
- APIキーの利用
パートナーに固有のAPIキーを割り当てることで、認証を追加し、不正なアクセスをさらに防止できます。
各選択肢を検討します:
A. CloudFront + WAF + OAI の設定
- CloudFrontとWAFを利用してトラフィックを制御し、OAIでAPIへのアクセスを限定する方法です。
- 問題点: OAIを使う方法はS3オリジンには適していますが、API Gatewayでは通常不要です。また、この方法では正当なIPアドレスのみにアクセスを限定する仕組みがありません。
- 結論: 不適切。
B. CloudFront + WAF + カスタムヘッダーにAPIキーを追加
- WAFでリクエスト数を制限し、CloudFrontのカスタムヘッダーでAPIキーを活用する方法です。
- 問題点: WAFのルールで「1日5件以上をブロック」としていますが、CloudFrontがあるため、実際のクライアントのIPを完全に制御できるわけではありません。また、APIキーのみに頼る認証はIP制限ほど強固ではありません。
- 結論: 不適切。
C. WAFでIP制限 + リソースポリシーでリクエスト制限
- WAFでパートナーのIPアドレスを許可し、リソースポリシーでリクエスト制限を追加する方法です。
- 問題点: リソースポリシーは主にIAM認証と組み合わせて使われるため、APIキーを使った認証との併用が難しいです。また、使用プランを活用した方がリクエスト制限に適しています。
- 結論: 不適切。
D. WAFでIP制限 + 使用プランでリクエスト制限(正解)
- WAFを利用してパートナーのIPアドレスを許可するルールを設定し、不正アクセスを遮断します。
- 使用プランでリクエスト制限を設定し、パートナーごとにAPIキーを発行します。これにより、1日1回のリクエストに制限可能です。
- 理由: コストを抑えつつ、IP制限、使用プラン、APIキーの認証を組み合わせた実用的な方法です。
- 結論: 適切。
正解: D
WAFでIPアドレスを制限し、使用プランとAPIキーを利用してリクエスト数を制御する方法が、コストとセキュリティの両方を満たします。
- 作者:みなみ
- 链接:https://www.minami.ac.cn//%E8%B3%87%E6%A0%BC%E5%8B%89%E5%BC%B7/174d7ae8-88e2-80e8-ab71-e0fa68a28992
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章