Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
6gram to MIXI M / 6gram から MIXI M へ 〜2年間の軌跡〜
Search
ryosan470
July 01, 2022
Technology
2
2k
6gram to MIXI M / 6gram から MIXI M へ 〜2年間の軌跡〜
ミクシィ x ビットバンク合同LT会 〜2社におけるクラウド活用最前線〜
https://mixi.connpass.com/event/251707/
にて登壇した内容のスライドです。
ryosan470
July 01, 2022
Tweet
Share
More Decks by ryosan470
See All by ryosan470
グループウォレットアプリ6gramの運用をはじめてみた / 6gram SRE NEXT 2020
ryosan470
6
13k
Our monitoring past and future tale
ryosan470
3
1.4k
the background of mixi git challenge
ryosan470
1
350
新米SREとしての半年
ryosan470
1
2.9k
Other Decks in Technology
See All in Technology
Opcodeを読んでいたら何故かphp-srcを読んでいた話
murashotaro
0
230
ゼロから創る横断SREチーム 挑戦と進化の軌跡
rvirus0817
2
270
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
530
20241214_WACATE2024冬_テスト設計技法をチョット俯瞰してみよう
kzsuzuki
3
450
非機能品質を作り込むための実践アーキテクチャ
knih
5
1.3k
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
170
Amazon Kendra GenAI Index 登場でどう変わる? 評価から学ぶ最適なRAG構成
naoki_0531
0
110
Fanstaの1年を大解剖! 一人SREはどこまでできるのか!?
syossan27
2
170
DevOps視点でAWS re:invent2024の新サービス・アプデを振り返ってみた
oshanqq
0
180
プロダクト開発を加速させるためのQA文化の築き方 / How to build QA culture to accelerate product development
mii3king
1
260
祝!Iceberg祭開幕!re:Invent 2024データレイク関連アップデート10分総ざらい
kniino
3
260
kargoの魅力について伝える
magisystem0408
0
210
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
5
450
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
The Cult of Friendly URLs
andyhume
78
6.1k
Making the Leap to Tech Lead
cromwellryan
133
9k
Embracing the Ebb and Flow
colly
84
4.5k
A Modern Web Designer's Workflow
chriscoyier
693
190k
How STYLIGHT went responsive
nonsquared
95
5.2k
The Pragmatic Product Professional
lauravandoore
32
6.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
KATA
mclloyd
29
14k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Transcript
開発本部 / MIXI M事業部 6gram から MIXI M へ ~2年間の軌跡~
ミクシィ x ビットバンク合同LT会 〜2社におけるクラウド活用最前線〜 @ryosan-470 2022/07/01
SRE NEXT 2020 でお話ししたことの続き 2 「グループウォレットアプリ6gramの運用をはじめてみた」で調べてみてね
今日お話しすること • 構成について • 前提条件と運用目標 • PCI DSS とは何? •
2年経って最初の運用ポリシーやモットーは守れた? • まとめ 3
構成について • AWS 環境に構築 ◦ 東京リージョンのみ ◦ Direct Connect を使っている
▪ データセンター3ヶ所にルーターを設置 • バックエンド: Elixir 4
前提条件 • カード情報を取り扱うために PCI DSS に準拠 • 無停止 ◦ 弊社都合のメンテナンスは基本的には行わない
• 専属の運用チームや運用者は用意しない ◦ インフラ専任者はいない ◦ みんなでワイワイやっていこうというチームの雰囲気 5
「できる限り運用負荷を減らしたい」 6
運用負荷とは? 7 • 例えばインスタンスが存在すると: ◦ ホスト OS の管理やカーネルパッチアップデート • セキュリティ対策
◦ ウイルス、脆弱性、侵入検知、ファイル改ざん...
運用負荷とは? 8 • 例えばデータベースサーバー (RDBMS) が存在すると: ◦ スケーラビリティ ▪ 水平方向に増やすのは厄介
▪ 自由に伸縮すること • 無停止オペレーションの実現の困難さ ◦ マイグレーション ▪ 大きいテーブルになると無停止では難しい ◦ RDBMS 自体のメンテナンス
行き着いた構成 9
完全フルマネージド、サーバーレスな構成 10 AWS Fargate AWS CodeBuild AWS Lambda コンピュート Amazon
DynamoDB データベース Amazon CloudWatch Rollbar ロギング
この構成は PCI DSS 準拠を行うのも楽 • 多くの要件を AWS に任せることができる ◦ インスタンスが存在しないことで「アカウント」の要件がなくなる
• 例えば: ファイル改ざん ◦ ホストマシンは AWS 管理下なので考慮不要 ◦ 動いているコンテナを読み取り専用に 書き込めないんだから改ざんできるわけない 11
PCI DSS とは? • クレジットカード情報を取り扱う事業者が遵守する規則 • 12要件約400項目ある • 毎年 QSA
と呼ばれる外部の監査人から監査を受ける ◦ 規模によっては自己問診というのでも OK ◦ 弊社は外部監査を受けています。 • 時代遅れみたいな要件もある ◦ 例: パスワードは90日ごとに変更 12
ここまでが2020年当時の話 13
気になるところ 14 • セキュリティインシデントはなかったのか • データベース、DynamoDB 全振りで OK だったのか •
2年間で構成に変化はなかったのか • 2年間インスタンスがなくても問題なかったのか
気になるところ 15 • セキュリティインシデントはなかったのか • データベース、DynamoDB 全振りで OK だったのか •
2年間で構成に変化はなかったのか • 2年間インスタンスがなくても問題なかったのか
「セキュリティインシデント」 はありませんでした!!! 16
気になるところ 17 • セキュリティインシデントはなかったのか • データベース、DynamoDB 全振りで OK だったのか •
2年間で構成に変化はなかったのか • 2年間インスタンスがなくても問題なかったのか
問題なし 18 時間の都合で詳細はカットします
気になるところ 19 • セキュリティインシデントはなかったのか • データベース、DynamoDB 全振りで OK だったのか •
2年間で構成に変化はなかったのか • 2年間インスタンスがなくても問題なかったのか
2020年初頭に監査人から一言 20
監査人からのコメント 21 • ルーターのログ、保存している? ◦ ログサーバーまたは別媒体に即座にバックアップ • ルーターの時刻同期してますか? ◦ 信頼できる時刻ソースと同期
• ルーターのコンフィグ管理をしていますか?
来年 (2021年) の監査までには解決してね 22
どうにかせねば 23
データセンター (2020年当時) の状況 24 • ログはルーターの中に保存しているだけ ◦ 何か間違えたりバッファが溢れると消えてしまう可能性があった • 時刻同期はしていない
◦ 信頼できる時刻ソースとは同期しておらず ◦ データセンター内にある弊社別チームの時刻サーバーと同期 • コンフィグ管理はできていない ◦ GitHub で設定されているコンフィグを管理 ◦ 実際にそれ通り設定されているか作業者以外が確認できない
なんとかせねば... いろいろと検討と調査をすすめる • CloudWatch は直接ログを受けることができない ◦ エージェントが必須 • AWS には
NTP サーバーが存在するが Direct Connect 経由からは直接接続できない ◦ NTPサーバーを買うという手もある 上2点は UDP プロトコルを受けられれば何かできる • ルーターには「HTTPアップロード」という機能がある 25
どうしよう... • Network Load Balancer は当時 UDP を受けられたが バックエンドにインスタンスが必要 このために運用負荷が増えるインスタンスの導入はやり
たくない • NTP は TCP でも何とかなりそうだがあまり一般的では ない • コンフィグに関しては「HTTPアップロード機能」で何と かできそう 26
行き詰まった 27
そんなとき 28
Fargate が NLB + UDP のロードバランシングサポートを発表 (2020/07) 29 • ログ
◦ Syslog サーバーを Fargate で稼働 ◦ 受け取った値をそのまま標準出力 → CloudWatch • 時刻同期 ◦ AWS の時刻ソース (Amazon Time Sync Service) にプロキシ ◦ 時刻ソースは原子時計なので信頼できる • コンフィグ ◦ HTTP サーバーを構築 → CloudWatch
2021年の監査: 「問題なし」 30
一件落着 31
気になるところ 32 • セキュリティインシデントはなかったのか • データベース、DynamoDB 全振りで OK だったのか •
2年間で構成に変化はなかったのか • 2年間インスタンスがなくても問題なかったのか
結論 必要になりました 33
JCB に続き Visa の導入が決まった 34
仕様書などを眺めてみる 35 • ほとんど今までの構成で動きそう • ただ提供されるソフトウェアが以下でしか動かない ◦ Windows Server ◦
メインフレーム
Windows !? 36
Windows の懸念 37 • そもそもデスクトップ版しか触ったことがない • どうやって運用するのかすら不明 • インスタンス必要では?
インスタンスを利用しないで済む方法はないだろうか? 38 • CodeBuild ◦ Windows 対応 ◦ そもそも提供されるソフトウェアが GUI
必須 • Fargate ◦ Windows 非対応 ▪ 今は利用できるが GUI はおそらく非対応 (未検証)
諦めて「インスタンス」を導入することに 39
インスタンスがあると何をしないといけないのか 40 • Windows アップデート • 脆弱性検知 • ファイル改ざん検知 •
リアルタイムウイルススキャン • 管理アカウントのパスワード
さらにインスタンスの運用負荷をできる限り下げたい 41 • 構成管理はコードで管理できないのか • セキュリティパッチ適用の自動化 • インスタンスのログを CloudWatch に集約
• GUI アプリケーションを何とかできないか ◦ バッチ実行
いろいろがんばりました... 42
Windows アップデート、セキュリティパッチの自動適用 43 • AWS Systems Manager - State Manager
を利用 ◦ パッチが配信されたら自動適用 ◦ 毎日、Windows アップデートが配信されているかを確認
脆弱性検知 • Amazon Inspector を採用 ◦ 毎日定時に Inspector を起動して脆弱性確認 •
実行結果はすべて Slack に通知 44
ファイル改ざん検知 • osquery をデーモンとして動かす ◦ 事前にファイルが書き込まれる場所を定義 ◦ 書き込みログをすべて CloudWatch に集約
◦ メトリクスフィルターで許可していない挙動を監視 ▪ Slack に通知 45
その他 • ウイルススキャン ◦ Windows Defender • Windows Server のイベントログなど
◦ CloudWatch のログエージェントにより記録 46
その他 • 管理アカウント ◦ パスワードは固定 ◦ 閲覧には権限が必要 ▪ 閲覧者は操作記録が CloudTrail
から確認可能 ◦ RDP は Session Manager の機能で利用 ▪ 誰が RDP をしたか特定可能 47 固定パスワードでも安全性を担保
構成管理について • Ansible を採用 ◦ Chef も候補だったが Ruby の依存を嫌って不採用 •
VPC 内に CodeBuild を用意しそこから Ansible を適用 ◦ 踏み台インスタンスを不要に • インスタンスの構成自体は CloudFormation で定義 ◦ インスタンスタイプ ◦ ネットワークインターフェース 48
GUI アプリケーションについて • 設定に関しては GUI を利用する必要がある • バッチ処理の実行は BAT ファイルからもできる
• 実行ログは特定のディレクトリの特定のファイルに書き 込まれる仕組み 49
そこで、BAT ファイルを呼び出すエージェントを作成 • エージェントが HTTP で待ち受ける ◦ リクエストを受けるとエージェントが BAT ファイルを実行
◦ ログを CloudWatch に転送 ◦ VPC内でのみアクセスを受け付けるような設定 • 定時処理 ◦ CodeBuild からエージェントへ HTTP リクエストを行う 50
何とかインスタンス動いた 51
監査も問題なし 52
Windows インスタンス導入編のまとめ • 意外と Linux インスタンスに近い構成で運用できる ◦ だがそこまで Windows の機能を使っていないだけだからかも
◦ 台数も1台しか管理していないし... • AWS Systems Manager はいろんな機能がある ◦ Fleet Manager で設定されているレジストリをみて編集できる ▪ 特定のレジストリを設定する必要がある時にいちいち RDP しなくてよい ◦ Session Manager の RDP はWebブラウザ経由でできるようになった ▪ リモートデスクトップクライアントは不要 • 構成管理は重要です ◦ 構築後に誤ってインスタンスを壊したこともあったが簡単に再構築 53
全体のまとめ • 構成は大きく変わらずにすみました • 完全フルマネージド、サーバーレス構成オススメ • クラウド環境外のリソースのことを忘れがちなので注意 ◦ しっかり構成図を書いておくことよいです •
構成管理はしっかりやろう 54