AWS エッジサービスを始める

基本概念を網羅したハンズオンチュートリアルとコンテンツ。

AWS エッジサービス

AWS リージョンは、AWS がデータセンターをクラスター化し、EC2 や S3 などのリージョナルサービスを運用する物理的な場所です。オンラインアプリケーションの特定のケースでは、ユーザートラフィックは複数のパブリックネットワークを経由して地域のインフラストラクチャに到達することがあります。パフォーマンス、信頼性、セキュリティという点で、制御されていないネットワークを通過することの欠点に対処したい場合は、アーキテクチャに AWS エッジサービスを追加することを検討してください。Amazon CloudFront や AWS グローバルアクセラレータなどの AWS エッジサービスは、AWS リージョンの外にある世界中に分散している何百ものポイントオブプレゼンス (POP) で運用されています。ユーザーは平均して 20 ~ 30 ミリ秒以内にこれらの POP からサービスを受けられ、必要に応じて、トラフィックはパブリックインターネットを経由せずに AWS グローバルネットワーク経由で地域のインフラストラクチャに持ち帰られます。AWS グローバルインフラストラクチャは、世界中の地上ケーブルと大洋横断ケーブルで結ばれた、完全冗長化されたグローバルなメトロファイバーネットワーク上に構築された、可用性が高く、レイテンシーの低い専用インフラストラクチャです。

低レイテンシーかつ高速転送でコンテンツを安全に配信します。

一般的な攻撃からウェブアプリケーションを保護

マネージド DDoS 保護でアプリケーションの可用性と応答性を最大化する

アカウント全体のファイアウォールルールを一元的に構成および管理する

AWS グローバルネットワークを使用して、アプリケーションの可用性、パフォーマンス、およびセキュリティを向上させる

アマゾンクラウドフロント、AWS の CDN

Amazon CloudFront はコンテンツ配信ネットワーク(CDN)です。CloudFront は、HTTP (S) ベースのウェブアプリケーションを高速化し、その可用性とセキュリティを強化するために使用されます。CloudFront は、ウェブサイト全体の配信、API の保護と高速化、アダプティブビデオストリーミング、ソフトウェアダウンロードなどのユースケースで使用できます。このサービスを使用するには、CloudFront ディストリビューションを作成し、オリジン (パブリックにアクセス可能なドメイン名を持つ任意のオリジン) を設定し、Amazon Certificate Manager を使用して有効な TLS 証明書を発行して添付します。次に、ウェブアプリケーションのドメイン名がディストリビューションで生成されたドメイン名 (xyz.cloudfront.net) を指すように権限のある DNS サーバーを設定します。DNS 解決フェーズでは、ユーザーがウェブアプリケーションに移動すると、HTTP (S) リクエストはレイテンシーと可用性の観点から最適な CloudFront PoP に動的にルーティングされます。PoP が選択されると、ユーザーは PoP のサーバーの 1 つで TLS ハンドシェイクを含む TCP 接続を終了し、HTTP リクエストを送信します。コンテンツが CloudFront のキャッシュレイヤーの 1 つにキャッシュされている場合、リクエストは CloudFront によってローカルに処理されます。それ以外の場合、リクエストはオリジンに転送されます。CloudFront のインフラストラクチャには 2 つのレイヤーがあります。最初のレイヤーはエッジロケーションに基づいており、ユーザーの接続が切断され、レイヤー3/4のDDoS攻撃が軽減されます。これらはキャッシュ機能を提供し、設定されている場合は CloudFront Functions を実行し、WAF ルールを適用します。2 番目のレイヤーは、AWS リージョンでホストされているリージョナルエッジキャッシュに基づいています。キャッシュ保持時間が長くなり、キャッシュヒット率が向上し、設定時に Lambda @Edge 関数が実行されます。CloudFront は、その性質に応じて、各 HTTP でこれらのレイヤーの使用を動的に最適化します。たとえば、動的とタグ付けされた HTTP リクエスト (キャッシュが無効になっている、POST/PUT/DELETE リクエスト、Cache-Control レスポンスヘッダーを使用してキャッシュ不可とタグ付けされたオブジェクトのリクエストなど) は、キャッシュレイヤーをスキップし、その結果、エッジロケーションからオリジンに直接送信されます。
最後に、CloudFront は特定の順序でロジックを実行します。最初に CloudFront はネイティブセキュリティコントロール (TLS ポリシー、HTTP から HTTPS へのリダイレクト、ジオブロッキング、署名付き URL など) を実行し、次に AWS WAF WebACL が設定されている場合はルールを実行し、次にビューワーリクエストイベントで設定されている場合はエッジ関数のコードを実行し、次にリクエストがキャッシュ可能かどうかをチェックし、次にオリジンリクエストイベントで設定されている場合は Lambda @Edge のコードを実行し、最後に必要に応じてリクエストをオリジンに転送します。CloudFront のレイヤー内の HTTP リクエストのライフサイクルについて詳しく知りたい場合は、次の re: Invent トークをご覧ください。この講演を再コーディングした時点では、CloudFront Functions 機能は起動されていないことに注意してください。

AWS WAF はレイヤー 7 でウェブアプリケーションを保護します

AWS WAF は、アプリケーションレベルの脅威からウェブアプリケーションを保護するために使用できるウェブアプリケーションファイアウォールです。アプリケーションレベルの脅威には以下が含まれます。

  • アプリケーションリソースを消費して正当なユーザーが利用できないようにすることを目的としたDDoS攻撃(HTTPフラッドなど)。 
  • アプリケーションレベルの脆弱性を悪用し、データを盗んだり、ビットコインマイニングなどの不正な方法でリソースを使用したりするなどの悪意のある行為を行う攻撃。 
  • 自動ボットによる攻撃は、アカウントの乗っ取りやコンテンツのスクレイピングなど、さまざまな方法でビジネスに害を及ぼす可能性があります。 

AWS WAF を使用するには、WebACL でルールを作成し、それを保護が必要なリソースにアタッチします。グローバル WebACL は CloudFront ディストリビューションにアタッチでき、リージョンのウェブ ACL は ALB や API ゲートウェイなどの同じリージョン内のリソースにアタッチできます。WAF WebACL がリソースにアタッチされると、リソースの基盤となるサービス (CloudFront や ALB など) は HTTP リクエストのコピーを AWS WAF サービスに渡し、設定されたルールを 1 桁ミリ秒以内に評価します。ルール評価に基づいて、AWS WAF サービスは基盤となるサービスにリクエストの処理方法 (ブロック、転送、チャレンジなど) を指示します。AWS WAF ロジックは、(レスポンス属性ではなく) HTTP リクエスト属性のみに基づいていることに注意してください。

新しく作成された WAF WebACL には、すべてのリクエストを許可するデフォルトのルールしか含まれていません。このルールには、異なるタイプの複数のルールを追加できます。まず、検査対象の HTTP リクエストの属性 (IP、ヘッダー、Cookie、URL など) に基づいてカスタムルールを作成できます。ルールをルールグループにグループ化して管理しやすくすることもできます。次に、AWS または AWS Marketplace のベンダーからマネージドルールを追加できます。マネージドルールは、設定可能なルールグループとして WebACL に追加されます。たとえば、コアルールセットや匿名IPリストなどのAWS管理グループを追加できます。ボット制御やアカウント乗っ取り防止などのより高度なマネージドルールには、クライアント側の SDK 統合が必要です。ルールは、マッチング時に次のアクションで構成できます。許可とカウント(ヘッダーをアップストリームに送信可能)、ブロック(カスタム応答で応答可能)、レート制限、最終チャレンジ(CAPTCHAまたはサイレントチャレンジを使用)。AWS Managed Rulesなどのルールは、WAF評価で到達した場合に後続のルールのロジックで使用できるラベルを発行します。WAF ログレコードで利用できるラベルを発行するように独自のルールを設定できます。

AWS グローバルアクセラレータ、ネットワークレベルでのアクセラレーション

AWS Global Accelerator は、AWS グローバルインフラストラクチャを使用してオンラインアプリケーションのパフォーマンス、信頼性、セキュリティを向上させるネットワーキングサービスです。AWS グローバルアクセラレータは OSI モデルのレイヤー 4 で動作するため、どの TCP/UDP アプリケーションでも使用できます。 ユースケースの例としては、UDP/TCPベースのマルチプレイヤーゲーム、Voice and Video over IP、IoT、ビデオインジェストと FTP アップロード、および VPN、Git、AdTech 入札などの他のユースケースがあります。 

AWS Global Accelerator は、ネットワークロードバランサー、アプリケーションロードバランサー、AWS EC2 インスタンス、および Elastic IP の前にデプロイでき、いずれもアプリケーションのリージョナルエンドポイントとして機能する可能性があります。このサービスを使用するには、アクセラレータを作成します。アクセラレータは、アプリケーションへの固定エントリポイントとして動作する 2 つのグローバル静的エニーキャスト IPv4 アドレスを提供します。Global Accelerator を使用すると、1 つまたは複数の AWS リージョンに複数のアプリケーションエンドポイントを配置できますが、それらにはすべて同じエニーキャスト IP アドレスでアクセスできます。次に、ウェブアプリケーションのドメイン名がアクセラレータの専用静的IPを指すように、権限のあるDNSサーバーを構成します。これらのエニーキャスト IP はすべてのグローバルアクセラレータ POP でアナウンスされ、ユーザートラフィックを最も近い PoP にルーティングし、AWS グローバルネットワーク経由で地域エンドポイントに転送します。

開発者向け学習リソース

  • 優先度
1

このページはお役に立ちましたか?