AWS Summit Tokyo 2016 2016/06/02
高田智己
- セキュリティと監査における現在の課題と解決へのアプローチ
- Security By Design の紹介
- AWS Enterprixse Accelerator Quick Start - Compliance
システムの複雑性の増加がリスクとセキュリティの管理及び統制の証明を困難にしている。
規制要件は何か?
スコープに含まれるもの、含まれないものは何か?
どのように標準に準拠していることを検証するか?
- セキュリティ・統制環境の一貫性、品質の向上
- 監査作業や統制実施の自動化
- 透明性・可視性の改善
的確なセキュリティポリシーを反映したアーキテクチャを実装・維持し、要求される統制をクラウドの機能によって可能なかぎり自動化
https://aws.amazon.com/jp/compliance/
基になっている考え方
Quality by Design - QbD
AWS アカウントの設計の規格化、セキュリティ制御の自動化、及び監査の合理化のためのセキュリティ保証アプローチ
- お客さまの要件を把握する
- セキュリティポリシーの確認
- AWS の IT 環境内で実施したいセキュリティルールの特定
- AWS 環境内で実施するコントロールの文書化
セキュリティのベンチマークというのがある。
- お客さまの要件と実装に合致するセキュアな環境を構築する
- AWS 環境内の設定値の定義(暗号化、アクセス管理、ログなど)
- セキュリティコントロールの標準化とアーキテクチャーの作成
- 自動化のために AWS CloudFormation によるテンプレート化
Amazon CloudFormation
テンプレートを元に、EC2 や ELB といった AWS リソースの環境構築を自動化
- テンプレートの使用を要求する
- サービスカタログを有効にしてテンプレートを使用するように要求
- 作成済みのセキュアな環境を使用するように制限
AWS Service Catalog
- 検証アクティビティを実行する
AWS CloudTrail
操作ログなどを取得するサービス
AWS Config
変更履歴、構成履歴
Amazon CloudWatch
各種リソース監視
お客さまのガバナンスポリシーを技術的にスクリプト化する など
https://aws.amazon.com/jp/quickstart/ 続々コンプライアンスに対応していっている
様々なテンプレートが用意されている。
例えば、
セキュアな Amazon S3 の設定
セキュアな AWS CloudTrail の設定
AWS CloudWatch による監視の設定
Config Rules の活用
まとめると、
- SbD: お客さまのガバナンスポリシーのコード化
- 効果: 運用及び管理統制の信頼できる実装と強制
- AWS の利点: SbD の実現を支える API とサービス群の提供
- 顧客の信頼
- 企業コンプライアンス
- データ・プライバシー
- 保護
殆どの攻撃はインフラへの攻撃
AWS で守れる
- メンテナンス用の踏み台サーバ
- 二要素認証
- 暗号化
- 隔離をより有効にするための分離
- テストや指標の監視
- Edge Services (CloudFront/Route53) は、レイヤー3, 4 の攻撃を防御
- 常にインラインで稼働
- コモディティ・ハードに利用
- ターゲット型とヒューリスティック型緩和
- 低いMTTR
- 遅延をマイクロ秒単位に抑える
DDos 攻撃は、AWS DDoS 緩和の対応されてインラインで通信される
- IP チェックサム
- 有効な TCP フラグ
- UDP ペイロードの長さ
- DNS リクエストの認証
- ソース IP
- ソース ASN
- トラフィック量
- 認証済みの送信元
- 個別の Distribution を区別する
- 自動的に攻撃のトラフィックを検知
- 攻撃と通常トラフィックのルーティングを別ける
AWS API Gateway
CloudFront は、自動的に転送中のデータを保護する
- HTTPS で配信
- HTTPS でユーザは CloudFront を認証する
- オリジンを認証
セキュリティの向上
SSL パフォーマンス
MapBox
- ハーフブリッジ型 TLS 終端
- オリジンまでのコネクションをすべて HTTPS 化
- CloudFront 設定の [Match Viewer] を選択
- フルブリッジ型 TLS 終端
署名付き URL
- URL のクエリストリングに署名を追加
- URL が署名の箇所で変わる
署名付き Cookies
- Cookie に署名を追加
- URL は変わらない
WAF で Bot をブロック
Lambda と連携
- セキュリティ分析
- リソースの変更管理
- コンプライアンスの監査
ハッカーは CloudFront を迂回して直接オリジンにアクセスできる
Origin Access Identify (OAI)
- Amazon S3 バケットへの直接のアクセスを防ぐ
- すべてのお客さまにとってパフォーマンス面での利点がある
カスタム Origin
IP アドレスのブロック
- Match Viewer Origin Protocol ポリシー
- セキュリティグループや Shared Secret を使ってアクセスを制限する
- SHA256 の証明書を使う
- ELB で独自証明書を利用する
- ELB 事前定義ポリシーを利用する
- HSTS ヘッダーを送る
AWS Summit Tokyo 2016 2016/06/03
Akinori Yamada
- FRESH! とは
- 配信プラットフォームとして目指した価値
- MIcroservices
- FRESH! と docker
- docker と Amazon EC2 container Services でのサービス構築パターン
- Blue Green Deployment
- Docker を検討されている皆様へ
- サービス全停止でのメンテナンスを極力しない
- デプロイに夜ダウンタイムを作らない
- 仮に一部分が障害を起こしても、動画配信・視聴というユーザーにとっての絶対的主目的は守りぬく
-
人気番組・特番次のキャパシティっ不足、視聴品質劣化を起こさない
-
容易にスケール出来るシステム構成であること
-
Microservices
-
Docker + Immutable Infrastructure
-
Blue Green Deployment
- システムを解決すべきドメイン領域によって切り分けるパターン
- FRESH! の例 (一部)
- User API
- Broadcast
- Chat
- Timeline
- Tracking
Microservices と可用性
-
Amazon RDS の再起動や、時間の掛かるスキーマチェンジの運用課題
-
Service 別に DB を持つため、システム全体を止めてのメンテナンスを回避できる
-
呼び出し側の Service でのケアを用意しておく
- (例) Disable XXXX Service Mode
- (例) 〜の機能は現在利用できません。
Docker 利用のモチベーション
- Immurable Infrastructure との親和性、ポータビリティの高さ
- イメージ作ってしまえば、コンテナ上げるだけ
- Provisioning でインフラの面倒を続けるより、コンテナの面倒を見るほうが敷居が低いのでは?と言う仮説
- コンテナを簡単に増やせる仕組みさえアレばスケール出来る
FRESH! と Docker
- Amazon EC2 Container Services の東京リージョンリリースから利用
- ホスト OS は Ubuntu
- Docker 1.10.3
- ecs-agent 1.9.0
- 軽量化を図るため、Alpine Linux
- 基本的にはデータストア以外はコンテナ化
- インフラとアプリケーションがコンテナによってセットで扱うことが出来るメリットは大きい
- ログはホストにボリュームマウントし、fluentd で Amazon S3 や Elasticserch で転送する
- アプリケーションの設定や、ミドルウェアの設定は環境変数で設定
- 環境最問題からの脱却
- A の環境では動くが、B の環境では動かない的なあるある問題
- 環境再現のしやすさ
- インフラのメンテコストの軽減
- Provisioning ほとんど要らない (clout-init だけ)
- 環境別の設定ファイルは Docker にはそぐわない
- 環境変数変更だけで挙動を変えられてこそのポータビリティ
- 環境変数ベース
- アプリケーションの設定変更にビルド不要
- 環境変数を変えてのデプロイで済む
- github.com/stormcat24/ecs-formation
- docker-compose ライクの Amazon ECS クラスタ構成管理ツール
- Blue Green Deployment もサポート
- REST ALP (Go)
- Job Worker (Go)
- React (Node.js)
- Chat (node.js)
- 独自 Cron (Java)
..etc
-
役割等で ECS Cluster を分ける方式
-
分かり易い
-
FRESH ではこの方式
-
スケールが必要な役割のものは AutoScaling Group と併用
-
役割で1つの Microservices
-
ECS クラスタ単位
- Public に公開するものは Nginx を前段に
- Nginx + API が Task
- ELB からは各 Task の HTTP ポートにリクエストを振り分ける
- この段階で実用的
- ログは fluentd で転送
- EC2 Slave 群を参照するために HAProxy を利用
- 各 Task に HAProxy を入れてしまおう
- essential 設定では HAProxy が落ちれば他コンテナも落ちる
React
- assets は Node コンテナに属する
- assets 類は Nginx から直接配信したい
- コンテナ館ボリュームマウント(volume_form)
- Internal ELB 経由で、別の Service を利用
- REST API ベース (gRPC の選択肢もある)
- Enqueue/Dequeue 型の Job Worker
- Amazon SQS
- 重めの処理を担当
- 定時ジョブは独自 Cron から Enqueue
- Task 増やすだけでスケール
- 動画配信サーバ
- 配信は RTMP
- 視聴は HLS (HTTP Live Streaming)
- Amazon S3
- Amazon CloudFront
基本的に Service 群の組み合わせ
- サーバサイドx6 + インフラx1, Not Two Pizza Team
- サービス:開発者 = N:N
- 各サービス毎に主担当は居るが、他のメンバーも面倒が見れるようにしている
- Microservices Map の様な俯瞰できるドキュメントの作成
- 構成図や、ポート対応表
- 現状、複雑性より可用性を優先している
- HTTP2 対応
- リソースの最適化
- Circuit Breaker Pattern
- Service 粒度の最適化
- 多くの Microservices を運用するチーム・開発体制
- 稼動系インフラにアプリケーションをデプロし直すのではなく、インフラ毎新しく構築して切り替えてしまう
- 休憩等から新系統にロードバランサを切り替える
-
Blue と Green の Auto Scaling Group を用紙
-
ELB を付け替える
-
デプロイの安心感
- 致命的な状態を含んだ成果物が出ることを防止
-
*.amebafresh.tv -> *.abemafresh.tv の悲しみのドメイン変更
- サービス名変更でドメイン変えることに
- すべての Service をダウンタイムゼロで移行成功
-
運用経験がない
-
何となく感じがちな、得体のしれない怖さ
- 本当にちゃんと動くの?
- 地雷いっぱいあるんでしょ?
-
クラスタの管理方法
-
Docker ポータビリティは、そもそも環境を問わない実行環境を目指したもの
-
既に開発環境で利用しているなら、本番でも動くよ
-
地雷もだいぶ踏み尽くされてきた
開発環境のみの利用は勿体無い
http://qiita.com/namusyaka/items/e805d1098827a4bd6835
- 画像ファイル
- PDF ファイル
- 音声ファイル
- 動画ファイル
アップロード・変換処理を一手に引き受ける
DynamoDB を使って管理
すべての処理はこのジョブという概念をベースに行われる
Ruby 製 DynamoDB ORM dinamo
https://github.com/namusyaka/dinamo
Grape (API)
dinamo (ORM)
rabl (View)
shoryuken (SQS)
aws-sdk-ruby (All)
Lambda 以外は全て Ruby
Lambda を使い、メディアタイプにより処理を切り替える
中村 輝雄
人により、IoT の考え方が異なる
IoT: Internet of Things
SoE: Systems of Engagement
SoI: systems of Intelligence
SoR: Systems of Record (従来型)
DevOps: Development+Operations
OT (Physical)
IoT (SoE)
IT (SoR)
IT + OT = IoT
IoT プラットフォーム「Lumada」
仮想通貨:ブロックチェーンの実証や研究活発化
人工知能:囲碁でトップ棋士と対戦し勝利
センチメント (市場心理) 分析システム (SoE)
株式売買システム (SoR)
つぶやき分析システム (SoE)
配車システム (SoR)
電車の遅延情報に関しては、JR さんなどは API を公開していないので、Twitter などのつぶやきから分析する
センサー情報 -> ビッグデータ解析:稼働分析システム (SoE) -> 保守管理システム (SoR) -> 建設機械
センサー情報 -> 走行・車両状態の解析:自動車モニタリングシステム (SoE) -> コールセンターシステム (SoR) -> 自動車
Application Layer (-> SaaS 含む)
IaaS Layer
Physical Layer