AWS Shield と AWS Lambda@Edge で構築するセキュアで柔軟性の高いアプリケーション Kalyanaraman Prasad VP AWS Edge Services 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
アジェンダ 一般的なWebアプリケーションの構造 どのような課題があるか? どのように構成上の課題をAWSでより簡単にできるか? 堅牢なアプリケーションの構成
一般的な Web アプリケーション API パーソナライズされたコンテンツ エンドユーザ 企業のデータセンター 動的アプリケーション 静的コンテンツ
デザイン上の考慮点 ü セキュリティ 認証 API 暗号化 (TLS) 防御の階層化 ü 可用性 復旧能力 / 障害耐性 パーソナライズされたコンテンツ リクエスト処理のキャパシティ ü パフォーマンス ü ルーティング ü スロットリング エンドユーザ 企業のデータセンター 動的アプリケーション ü 通知とモニタリング 静的コンテンツ
デザインと実装における課題 DDoS スクラビングセンター API DDoS 攻撃 アプリケーションサーバ トラフィック管理 DB サーバ パーソナライズされたコンテンツ エンドユーザ 企業のデータセンター Web サーバ ロードバランサー 動的アプリケーション ストレージサーバ 静的コンテンツ ファイアーウォール モニタリング
AWS は このような時にどう役立つか 柔軟性を失わずに複雑性を取り除き 高いセキュリティと高い可用性をもった拡張性の高いアプリケーションの構築
静的コンテンツの配信 遅延の影響は重要 拡張性も重要 急なアクセス増を処理する能力 API? パーソナライズされたコンテンツ エンドユーザ 企業のデータセンター 動的アプリケーション 静的コンテンツ
CloudFront で配信する静的コンテンツ キャッシュ不可な API 企業のデータセンター パーソナライズされた Web アプリケーション Amazon Route 53 Amazon CloudFront AWS クラウド 動的アプリケーション 静的コンテンツ
CloudFront を使ったエッジ デリバリー エンタープライズ級の CDN 高い可用性 アプリケーションの高速化 AWS 連携 費用効果
Amazonが信頼するCloudFront
エッジからの配信 費用対効果 AWSは AWS 上のオリジン (Amazon Simple Storage Service (S3), Amazon Elastic Compute Cloud (EC2))) とCloudFront 間のデータ転送料金を取らないため オリジンからのデータ取得は 高い費用対効果があります
動的コンテンツのための復旧能力 ビジネス ロジック 0 秒 または低い TTL セキュアなコネクション キャッシュ不可な API? パーソナライズされた Web アプリケーション Amazon Route 53 Amazon CloudFront 動的アプリケーション 静的コンテンツ
動的コンテンツのための復旧能力 キャッシュ不可な API パーソナライズされた Web アプリケーション Amazon Route 53 Amazon CloudFront Amazon Elastic Load Balancer 動的アプリケーション 静的コンテンツ
CloudFront を静的 動的コンテンツの両方の配信で使う理由 1) エンドユーザの近くで TLS の終端 2) セキュアな全二重通信のコネクション 3) Edge と ELB 間のコネクションの最適化 4) 短い期間のキャッシュでも ( 低 TTL) リクエスト急増時の耐性を大幅に上げます
動的コンテンツのエッジからの配信 アプリケーション高速化 ELB の前に CloudFront を配置
パーソナライズされたコンテンツ 全てのエンドユーザにカスタマイズされたコンテンツ 拡張性が重要 遅延の低さが重要? キャッシュ不可な API パーソナライズされた Web アプリケーション Amazon Route 53 Amazon CloudFront Amazon Elastic Load Balancer 動的アプリケーション 静的コンテンツ
AWS Lambda: サーバレス コンピューティング サーバなしでコードを実行 課金は実際に使用したコンピューティング時間に対してのみ発生 イベントのトリガーか API の呼び出しで実行 : Amazon S3 バケットへの PUT Amazon DynamoDB テーブルの更新 Amazon API Gateway Endpoint への呼び出し モバイルアプリのバックエンドの呼び出し l CloudFront へのリクエスト その他 より簡単に : リアルタイムにデータを処理 拡張性の高いバックエンドサービスの構築 システムを繋いで連携
AWS Lambda の利点 サーバ管理が不要 継続的スケーリング 使わないリソースの支払いがない コールドサーバを無くす
AWS のリージョン上のトリガーが 前提ですが
もしエッジでもコードを実行できれば エッジロケーション 都市ヶ国つの大陸 北米南米ヨーロッパアジア太平洋
Lambda @ Edge のご紹介 パーソナライズされたアプリケーションの配信を可能にする Lambda
Lambda@Edge のご紹介 Lambda@Edge は AWS Lambda の拡張で AWS のエッジロケーションで Node.js のコードの実行を可能にします お客様のコードをエッジロケーションに持ってくることでエンドユーザの近くでコンテンツをカスタマイズし ユーザ体験を改善できます サーバ管理が不要 継続的スケーリング 使わないリソースの支払いがない コールドサーバを無くす グローバルに分散
一度コードを書けば どこでも実行可能
Lambda@Edge アプリケーション セキュリティ ビジターの検証 Bot の処理 検索エンジンボットを検知して Captcha を表示することでオリジンサーバへのトラフィックから除外 有効なセッションを確認 user-agent の値でリクエストの正当性を確認し access-control allow ヘッダーを追加 アクセストークンで認証ステータスを確認
Lambda@Edge アプリケーション セキュリティ 認証とアクセス管理 New York Times や HBR のような出版社で 購読の申し込みページに転送する前にユーザが毎対無料で読める記事の数を制限したい場合があります Cookie を使ってユーザのアクセス回数をカウントしながら Lambda @Edge 関数で Cookie の値をアクセス時に検査することで 無料記事数の上限に達したユーザを購読の申し込みサイトに転送することができます
Lambda@Edge 動的コンテンツの配信 レスポンスの生成 認証されていないユーザを指定したログインのページにその場で転送 エンドユーザに最寄りのエッジロケーション上でカスタムエラーページや静的 Web ページを生成
Lambda@Edge アプリケーションのパーソナライズ A/B テスト ユーザ毎に表示されるコンテンツのバージョンを コイントス でランダムに選択 ユーザの再訪時に同じバージョンが表示され続けるように Cookie をセット
Lambda@Edge アプリケーション セキュリティ RFC 6797 - HTTP Strict Transport Security (HSTS) Strict-Transport-Security: max-age=31536000; includesubdomains Browser Support Introduced Internet Explorer Firefox 4 Opera 12 Internet Explorer 11 on Windows 8.1 and Windows 7[2] Safari Mavericks (Mac OS X 10.9) Chrome 4.0.211.0
Lambda@Edge アプリケーションのパーソナライズ コンテンツのカスタマイズ ユーザの属性 ユーザーの地理情報やデバイスをもとに配信するコンテンツを選択 ( 例 : モバイル端末は デスクトップより小さい画像 ; 地理情報をもとに表示言語を切替 ) クライアント デバイスの属性 - 古いエンドユーザ デバイスのプロトコルに通信を対応させるため ヘッダーを追加 変更 ( 例 : 旧型のテレビ ネットワークプリンタなど )
エッジでコンテンツのパーソナライズ キャッシュ不可な API パーソナライズされた Web アプリケーション Amazon Route 53 Amazon CloudFront Amazon Elastic Load Balancer 動的アプリケーション Lambda@Edge 静的コンテンツ
キャッシュ不可な API? キャッシュ不可な API パーソナライズされた Web アプリケーション Amazon Route 53 Amazon CloudFront Amazon Elastic Load Balancer 動的アプリケーション Lambda@Edge 静的コンテンツ
キャッシュ不可な API キャッシュ不可な API API Gateway AWS Lambda パーソナライズされた Web アプリケーション Amazon Route 53 Amazon CloudFront Lambda@Edge Amazon Elastic Load Balancer 動的アプリケーション 静的コンテンツ
セキュリティ? Edge の配信 Edge の防御 Lambda @ Edge CloudFront でアプリケーション配信 Shield でセキュアなアプリケーション配信 Lambda でパーソナライズされたアプリケーションの配信
脅威の種類 DDoS アプリケーション攻撃 不正なボット アプリケーション層 HTTP フラッド SQL インジェクション クローラー コンテンツ スクレーパー アプリケーションの脆弱性悪用 スキャナーとプローブ Reflection 攻撃 SSL 悪用 ネットワーク / トランスポート層 Amplification 攻撃 Slowloris SSL 再ネゴシエーション 不正なリゾルバー Layer 4 フラッド SSL/TLS の脆弱性
DDoS 攻撃への古いセキュリティ対策方法 DDoS スクラビングセンター DDoS 攻撃 正常なトラフィック エンドユーザー 課題 1) 緩和策の有効化まで時間がかかる 2) 常時作動でないため必要なときに使えない可能性がある 3) インラインでないため正常なユーザも遅延の影響をうける 企業のデータセンター
AWS サービス - 組み込み済みのセキュリティ キャッシュ不可な API API Gateway AWS Lambda パーソナライズされた Web アプリケーション Amazon Route 53 Amazon CloudFront Lambda@Edge Amazon Elastic Load Balancer 動的アプリケーション 静的コンテンツ
Edge の防御 CloudFront の標準セキュリティ機能 AWS Shield AWS WAF
TLS 配信に Edge を活用 キャッシュ不可な API Amazon CloudFront DDoS 企業のデータセンター パーソナライズされた Web アプリケーション AWS Cloud 動的アプリケーション 静的コンテンツ
Amazon CloudFront: 標準セキュリティ機能 HTTPS 配信 AWS Certificate Manager ü EdgeでTLSの終端 ü SNI カスタム TLS 証明書 ( 無料 ) ü 高度な暗号化 ü Perfect Forward Secrecy ü OCSP Stapling ü 証明書を無料で発行 ü 簡単な手順で証明書を取得 (CloudFront コンソール上で可能 ) ü 手間を省く証明書の自動更新
DDoS 対策に Edge を活用 キャッシュ不可な API DDoS Amazon CloudFront パーソナライズされた Web アプリケーション 企業のデータセンター 動的アプリケーション 静的コンテンツ
AWS Shield Advanced マネージドの DDoS 対策サービス
AWS Shield Advanced 以下のサービスで利用可能です Application Load Balancer Classic Load Balancer Amazon CloudFront Amazon Route 53
AWS Shield Advanced 4 つの理念を柱に設計 AWS サービスとの連携 インフラを変更せずに DDoS からの防御を導入 常時作動の検知と緩和 アプリケーションの遅延を最小に抑える 経済的 低コストと可用性の両立が可能 柔軟性 アプリケーション向けに防御をカスタマイズ
AWS Shield で DDoS 対策 全世界のすべての Edge Location で利用可能 企業のデータセンター アプリケーション
AWS Shield Standard Protection Advanced Protection すべての AWS のお客様に 無償でご提供 追加の防御 機能と保証を 有償でご提供
AWS Shield Standard レイヤ 3/4 の保護 ü 自動検知と緩和 ü よく見られる一般的な攻撃からの防御 (SYN/UDPフラッド リフレクション攻撃 など ) レイヤ 7 の防御 ü AWS WAF でレイヤ 7の DDoS 攻撃の緩和 ü セルフサービス利用で従量課金 ü AWS サービスで標準機能として提供 レイヤ 3/4 の攻撃の 96% を自動的に防御 インターネットに向いているすべての AWS サービスでご提供
AWS Shield Advanced 常時有効なモニタリングと検知 AWS 請求保護 高度な L3/4 と L7 の DDoS 防御 DDoS Response Team の 24x7 の支援 攻撃の通知とレポート
Edge と ALB で Firewall を活用 キャッシュ不可な API DDoS Amazon CloudFront 企業のデータセンター パーソナライズされた Web アプリケーション AWS Cloud 動的アプリケーション 静的コンテンツ
AWS WAF でアプリケーション脅威対策 カスタムルールで Web トラフィックのフィルタリング IP アドレス ヘッダーの条件の組合せでリクエストをブロック 許可 モニターするカスタムルールを作成 悪意のあるリクエストのブロック AWS WAF は SQL インジェクションやクロスサイトスクリプティングなどの代表的な Web アプリケーションの脅威を検知してブロックできます 常時モニタリングとチューニング Web ACL のルールによってブロックまたは 許可されたリクエストをモニターしてチューニングができます
AWS WAF 全世界のすべての Edge Location で利用可能 企業のデータセンター アプリケーション
AWS WAF によるアプリケーションの防御 ü 柔軟なルールの定義 ü 事前設定された保護 ü 高度なセキュリティの自動化 ü パートナー ルール AWS WAF (Web Application Firewall)
AWS WAF によるアプリケーションの防御 ü 柔軟なルールの定義 ü 事前設定された保護 ü 高度なセキュリティの自動化 ü パートナー ルール ü 素早いインシデント対応 ü 1 分以内に緩和策を展開 ü リクエストの任意の部分を検査
AWS WAF によるアプリケーションの防御 ü 柔軟なルールの定義 ü 事前設定された保護 ü 高度なセキュリティの自動化 SQL インジェクション XSS ü パートナー ルール IP レピュテーションリスト
AWS WAF によるアプリケーションの防御 ü 柔軟なルールの定義 ü 事前設定された保護 ü セキュリティの自動化 ü パートナー ルール 正常なユーザ 悪意のあるユーザ AWS WAF サーバー ログ ルールアップデーター スレット解析 通知 セキュリティ エンジニア
まとめ Web アプリケーションの完成に必要な構成要素 キャッシュ不可な API API Gateway DDoS Amazon Route 53 Amazon CloudFront AWS Lambda パーソナライズされた Web アプリケーション Lambda@Edge Amazon Elastic Load Balancer 動的アプリケーション 静的コンテンツ
まとめ 重要なポイント AWS にはセキュリティ機能が標準で組み込まれています 構成を変更せずにシステムの外郭で防御 動的 静的コンテンツと API の配信に CloudFront を利用 Lambda@Edge は 柔軟なコンテンツのパーソナライズの手段を提供します
Thank You