© DMM.comCONFIDENTIALDMMにおける300アカウント67チームのAWSセキュリティを「開発者」に監視してもらうまでの道のり合同会社DMM.com セキュリティ部 CloudSecチーム 西山渉
View Slide
© DMM.com自己紹介- 合同会社DMM.com- セキュリティ部 CloudSec チーム- クラウドセキュリティの推進- WAF 導入支援- PCIDSS セキュリティ監視2
© DMM.com自己紹介3- 合同会社DMM.com- セキュリティ部 CloudSec チーム- クラウドセキュリティの推進- WAF 導入支援- PCIDSS セキュリティ監視- 元プラットフォーム開発部バックエンドエンジニア→伏線
© DMM.comAWS セキュリティとは4
© DMM.comAWS セキュリティとは5アプリケーションAWSサービス脆弱性診断、WAFAWS セキュリティ
© DMM.comAWS セキュリティとは6アプリケーションAWSサービス脆弱性診断、WAFAWS セキュリティAWS セキュリティの範囲- 「AWS 上のサービスへの攻撃」に対するセキュリティ- 「AWS アカウントへの攻撃」に対するセキュリティ
© DMM.comDMMでも実際に事件発生7- S3 バケットが Write 権限でパブリック公開となっていた→悪意ある JS が置かれ、フィッシングサイトへ誘導
© DMM.comということでDMMもAWSセキュリティやろうとしました8
© DMM.com目的9- ヤバイ設定を素早く見つける
© DMM.com目的・実現方法10- ヤバイ設定を素早く見つける→セキュリティガードレールを敷く
© DMM.comセキュリティガードレール?11- セキュリティ品質の担保のため、クラウド領域を制限または、検知できるようにすること
© DMM.comセキュリティガードレール?12今回は検知- セキュリティ品質の担保のため、クラウド領域を制限または、検知できるようにすること
© DMM.comセキュリティガードレール実装の前に DMM の状況13
© DMM.com対象 ( 見込み )14- チーム数 : 50 以上- AWS アカウント : 300 以上- リージョン : 16 ( 2020年当時 )
© DMM.com当時の DMM の状況15- AWS アカウントの払い出しは別部門- CloudTrail は Organizations にて集中管理済み→ログ集約基盤が存在し、ログ保管済み
© DMM.com技術選定116
© DMM.com当初の方針17- 50 以上あるチームへの説明は時間がかかるため、管理者だけでセキュリティ監視しよう- セキュリティ設定も開発者へ負担をかけずに管理者だけで完結しよう
© DMM.com監視モデル18管理者 開発者AWS
© DMM.com監視モデル19管理者 開発者AWS
© DMM.com監視モデル20管理者 開発者AWS
© DMM.comAWS Config21- AWS リソースの設定変更履歴を保存する
© DMM.comAWS Security Hub22- 設定不備を検出する etc...
© DMM.comAmazon GuardDuty23- セキュリティ侵害を検知する
© DMM.comAWS Organizations24- メンバーアカウントをグルーピングする etc...
© DMM.comサービスマネージド型 CloudFormation StackSets25- メンバーアカウントへセキュリティ設定を適用する
© DMM.com案1 : 監視体制26
© DMM.com案1 : 監視体制27Landing Zone
© DMM.com承認貰いに行きました28
© DMM.com部長に承認もらう29ぼく「AWSセキュリティ設定すぐできそうです。お金とチェックはセキュリティ部で、パッとやっていいですか」
© DMM.com部長に承認もらえない30ぼく「AWSセキュリティ設定すぐできそうです。お金とチェックはセキュリティ部で、パッとやっていいですか」部長「ダメ。各チームのお金とリソースでチェックしてもらうよう、各チームに承認をもらってください」
© DMM.com部長に承認もらえない31ぼく「AWSセキュリティ設定すぐできそうです。お金とチェックはセキュリティ部で、パッとやっていいですか」部長「ダメ。各チームのお金とリソースでチェックしてもらうよう、各チームに承認をもらってください」ぼく「なるほどですね〜 ( ひええええええええ ) 」
© DMM.comDMM Tech Vision32
© DMM.comDMM が目指す開発像33
© DMM.comセキュリティも開発者が面倒をみる34
© DMM.com技術選定235
© DMM.com監視モデル36AWS 開発者管理者
© DMM.com監視モデル改37管理者開発者AWS主役
© DMM.com監視モデル改38管理者開発者AWSPush型
© DMM.comAWS Config Rules39- 設定不備を検知する→ Security Hub の代わり
© DMM.comAWS Config Rules を使った理由40- CloudFormation でルールの指定ができる→開発者にチェックしてもらうため、過検知は少なく
© DMM.comAWS Config Rules の選定41
© DMM.comSlack42- DMM のチャットコミュニケーションツール→チームごとにアラート通知用のチャンネル作成
© DMM.comSlack へ飛ばすために43- Amazon EventBridge- Amazon SNS- AWS Chatbot
© DMM.comOU 構築44- チームごとに OU を作成
© DMM.comセキュリティ設定方法45
© DMM.com案2 : 監視体制46
© DMM.comこれでいけるか・・・?47
© DMM.com知り合いのチームにテストさせてもらう48
© DMM.com伏線回収49
© DMM.com最初の営業50
© DMM.comいざ実践51
© DMM.comおかげさまで、問題点を把握52- チェック終わったアラートがわからない ( 開発者・管理者ともに )- 埋もれて忘れてしまう→ Slack だけでアラート管理は難しい
© DMM.comアラート管理のための技術選定 ( AWS外 )53
© DMM.com方針思い出し54- 開発者にセキュリティ運用をやってもらう→開発者がスムーズに運用できるようなツールを利用
© DMM.comJIRA55- DMM で採用されているチケット管理システム
© DMM.comJIRA -選定理由-56- DMM で採用されているチケット管理システム- 入社時にアカウント発行- 他部署へのタスクの依頼に利用→ DMM の人は全員使える。。。はず
© DMM.comJIRA -全てのリージョンのアラートを管理-57
© DMM.comJIRA -アラートをカンバン方式で管理-58
© DMM.comJIRA -チケット内には優先度や期限を記載-59
© DMM.comSlackbot60- JIRA チケットの起票- Slack のスレッドへ JIRA チケット URL を通知- アラートの重要度に応じたメンション発行 etc...
© DMM.comSlackbot61DMM のインフラ部門がシステムアラートの管理を JIRA でやっているのにインスパイア!!- JIRA チケットの起票- Slack のスレッドへ JIRA チケット URL を通知- アラートの重要度に応じたメンション発行 etc...
© DMM.comslackbot ( 作った )62
© DMM.com実際の例63
© DMM.com完成楽しい技術検証はここまで64
© DMM.comここからは DMM のチームを巡り、承認をもらう65
© DMM.com長い旅が始まりましたDMM ジャーニー66
© DMM.com承認をもらう旅67- AWS セキュリティチェックを開発者にやってもらうため「お金」と「運用リソース」を出してもらうよう、承認いただく
© DMM.com営業資料68
© DMM.com営業順番69- 重要な情報を扱っているチームから
© DMM.com営業70
© DMM.comコロナ禍における他部署への協力取り付け71
© DMM.comリモートで営業72- Slack で DM を送る- 「初めましてこんにちは!」- 「AWS セキュリティについて相談したいです!」- 「ちょっとお時間よろしいでしょうか?」
© DMM.com営業の振り返り73- チームでやっていたから完走できた- 逆にコロナという環境だからこそ、営業は捗った- あらゆるツテとコネを活用した
© DMM.com結果74
© DMM.com完了宣言承認もらえたチーム : 80→ Slack チャンネルの通知先が 6775
© DMM.com完了宣言76セキュリティ設定完了したアカウント : 約300承認もらえたチーム : 80→ Slack チャンネルの通知先が 67
© DMM.com完了宣言77棚卸しにより削除されたアカウント : 約50セキュリティ設定完了したアカウント : 約300承認もらえたチーム : 80→ Slack チャンネルの通知先が 67
© DMM.com監視体制78
© DMM.com監視体制79Slack セクション機能でグルーピング
© DMM.comアラート数の推移(2021/9末時点)80
© DMM.comアラート状況(2021/9末時点)81チェックした箇所 : 約4500チェックが完了した箇所 : 約3200
© DMM.comチケット状況82
© DMM.com特にヤバイやつ83DB パブリック公開:20S3 書き込み権限でパブリック公開:6
© DMM.com実際に起きてた事件84
© DMM.com実際に起きてた事件853件
© DMM.comDMM CSIRT と協力して対処 ( 画像は別件 )86
© DMM.com議論が発生している箇所87
© DMM.com80, 443 port パブリック公開の検知88Q. Web 会社なんだから 80, 443 port 公開するの当たり前じゃん!想定内ですよ!A. お手数おかけしてます。DEV/STG 環境や Jenkins などのパブリック公開検知のため、80, 443 port のパブリック検知を実施しています。
© DMM.comセキュリティ設定するタイミング89Q. サービスリリースしてからでいいんじゃないの?A. クラウドセキュリティの場合、クラウドを利用し始めたタイミングからリスクが発生します。そのため、AWSアカウントが払い出されたタイミングでセキュリティ設定を有効化します。
© DMM.com一年運用 ( 管理者 )90
© DMM.comDMM の AWS セキュリティ標準策定91
© DMM.comセキュリティプランを用意92
© DMM.comCloudFormationStackSets93Organizations の OU 設計
© DMM.com構築94- AWS CLI で実行
© DMM.com構築95- 1 チームで 6 個の StackSet を作成
© DMM.com構築96- 1 チームで 6 個の StackSet を作成→80 OU あるためデプロイ先が 480
© DMM.com構築97- Administrator アカウントに作成できる StackSet 数の上限緩和申請 ( 100 → 700 )
© DMM.com構築98- アカウント数 × 17 リージョン分の Stack Instance
© DMM.com運用99- 難しい
© DMM.com運用100- 難しい- 自動デプロイ
© DMM.com運用101- 自動デプロイを有効化すると OU に AWS アカウントを所属させたタイミングで CloudFormation が実行される
© DMM.com運用102- 自動デプロイはリージョンの実行順を制御できない→自動デプロイを考慮した CloudFormation テンプレートを作成すべきだった
© DMM.comユースケース103- AWS アカウントを Root へ移動 ( アカウント停止前 )- AWS アカウントを Root へ移動 ( アカウント停止後 )- AWS アカウントを別の既存 OU へ移動- AWS アカウントを別の新規 OU へ移動- AWS アカウントを別の新規 OU へ移動 ( 現在の OU 配下 )- etc...
© DMM.com一年運用して ( 開発者 )104
© DMM.comチケット ( アラート ) 状況105ToDo↓レビュー中↓完了のフローです
© DMM.com開発者・管理者が一緒にがんばってる106- 開発者・管理者が一緒に AWS セキュリティ運用がんばってます!
© DMM.com開発者がセキュリティアラートをチェック!107
© DMM.comまとめ108
© DMM.comまとめ109- DMM の AWS アカウントにガードレールを敷けた→設定不備・セキュリティ侵害を発見できた
© DMM.comまとめ110- DMM の AWS アカウントにガードレールを敷けた→設定不備・セキュリティ侵害を発見できた- 開発者がセキュリティアラートを自発的にチェック→ AWS レイヤーのセキュリティ自給率が高まった
© DMM.com今後の DMM111DMM のセキュリティ部は開発者と共にセキュリティを推進していきます!
© DMM.comおしまい112