Slide 1

Slide 1 text

© DMM.com CONFIDENTIAL DMMにおける300アカウント 67チームのAWSセキュリティを 「開発者」に監視してもらうまでの 道のり 合同会社DMM.com
 セキュリティ部
 CloudSecチーム 西山渉


Slide 2

Slide 2 text

© DMM.com 自己紹介 - 合同会社DMM.com - セキュリティ部 CloudSec チーム - クラウドセキュリティの推進 - WAF 導入支援 - PCIDSS セキュリティ監視 2

Slide 3

Slide 3 text

© DMM.com 自己紹介 3 - 合同会社DMM.com - セキュリティ部 CloudSec チーム - クラウドセキュリティの推進 - WAF 導入支援 - PCIDSS セキュリティ監視 - 元プラットフォーム開発部バックエンドエンジニア →伏線

Slide 4

Slide 4 text

© DMM.com AWS セキュリティとは 4

Slide 5

Slide 5 text

© DMM.com AWS セキュリティとは 5 アプリケーション AWS サービス 脆弱性診断、WAF AWS セキュリティ

Slide 6

Slide 6 text

© DMM.com AWS セキュリティとは 6 アプリケーション AWS サービス 脆弱性診断、WAF AWS セキュリティ AWS セキュリティの範囲 - 「AWS 上のサービスへの攻撃」に対するセキュリティ - 「AWS アカウントへの攻撃」に対するセキュリティ

Slide 7

Slide 7 text

© DMM.com DMMでも実際に事件発生 7 - S3 バケットが Write 権限でパブリック公開となっていた →悪意ある JS が置かれ、フィッシングサイトへ誘導

Slide 8

Slide 8 text

© DMM.com ということでDMMも AWSセキュリティ やろうとしました 8

Slide 9

Slide 9 text

© DMM.com 目的 9 - ヤバイ設定を素早く見つける

Slide 10

Slide 10 text

© DMM.com 目的・実現方法 10 - ヤバイ設定を素早く見つける →セキュリティガードレールを敷く

Slide 11

Slide 11 text

© DMM.com セキュリティガードレール? 11 - セキュリティ品質の担保のため、クラウド領域を制限 または、検知できるようにすること

Slide 12

Slide 12 text

© DMM.com セキュリティガードレール? 12 今回は検知 - セキュリティ品質の担保のため、クラウド領域を制限 または、検知できるようにすること

Slide 13

Slide 13 text

© DMM.com セキュリティガードレール 実装の前に DMM の状況 13

Slide 14

Slide 14 text

© DMM.com 対象 ( 見込み ) 14 - チーム数 : 50 以上 - AWS アカウント : 300 以上 - リージョン : 16 ( 2020年当時 )

Slide 15

Slide 15 text

© DMM.com 当時の DMM の状況 15 - AWS アカウントの払い出しは別部門 - CloudTrail は Organizations にて集中管理済み →ログ集約基盤が存在し、ログ保管済み

Slide 16

Slide 16 text

© DMM.com 技術選定1 16

Slide 17

Slide 17 text

© DMM.com 当初の方針 17 - 50 以上あるチームへの説明は時間がかかるため、 管理者だけでセキュリティ監視しよう - セキュリティ設定も開発者へ負担をかけずに 管理者だけで完結しよう

Slide 18

Slide 18 text

© DMM.com 監視モデル 18 管理者 開発者 AWS

Slide 19

Slide 19 text

© DMM.com 監視モデル 19 管理者 開発者 AWS

Slide 20

Slide 20 text

© DMM.com 監視モデル 20 管理者 開発者 AWS

Slide 21

Slide 21 text

© DMM.com AWS Config 21 - AWS リソースの設定変更履歴を保存する

Slide 22

Slide 22 text

© DMM.com AWS Security Hub 22 - 設定不備を検出する etc...

Slide 23

Slide 23 text

© DMM.com Amazon GuardDuty 23 - セキュリティ侵害を検知する

Slide 24

Slide 24 text

© DMM.com AWS Organizations 24 - メンバーアカウントをグルーピングする etc...

Slide 25

Slide 25 text

© DMM.com サービスマネージド型 CloudFormation StackSets 25 - メンバーアカウントへセキュリティ設定を適用する

Slide 26

Slide 26 text

© DMM.com 案1 : 監視体制 26

Slide 27

Slide 27 text

© DMM.com 案1 : 監視体制 27 Landing Zone

Slide 28

Slide 28 text

© DMM.com 承認貰いに行きました 28

Slide 29

Slide 29 text

© DMM.com 部長に承認もらう 29 ぼく「AWSセキュリティ設定すぐできそうです。お金とチェックは セキュリティ部で、パッとやっていいですか」

Slide 30

Slide 30 text

© DMM.com 部長に承認もらえない 30 ぼく「AWSセキュリティ設定すぐできそうです。お金とチェックは セキュリティ部で、パッとやっていいですか」 部長「ダメ。各チームのお金とリソースでチェックしてもらうよう、 各チームに承認をもらってください」

Slide 31

Slide 31 text

© DMM.com 部長に承認もらえない 31 ぼく「AWSセキュリティ設定すぐできそうです。お金とチェックは セキュリティ部で、パッとやっていいですか」 部長「ダメ。各チームのお金とリソースでチェックしてもらうよう、 各チームに承認をもらってください」 ぼく「なるほどですね〜 ( ひええええええええ ) 」

Slide 32

Slide 32 text

© DMM.com DMM Tech Vision 32

Slide 33

Slide 33 text

© DMM.com DMM が目指す開発像 33

Slide 34

Slide 34 text

© DMM.com セキュリティも開発者が面倒をみる 34

Slide 35

Slide 35 text

© DMM.com 技術選定2 35

Slide 36

Slide 36 text

© DMM.com 監視モデル 36 AWS 開発者 管理者

Slide 37

Slide 37 text

© DMM.com 監視モデル改 37 管理者 開発者 AWS 主役

Slide 38

Slide 38 text

© DMM.com 監視モデル改 38 管理者 開発者 AWS Push型

Slide 39

Slide 39 text

© DMM.com AWS Config Rules 39 - 設定不備を検知する → Security Hub の代わり

Slide 40

Slide 40 text

© DMM.com AWS Config Rules を使った理由 40 - CloudFormation でルールの指定ができる →開発者にチェックしてもらうため、過検知は少なく

Slide 41

Slide 41 text

© DMM.com AWS Config Rules の選定 41

Slide 42

Slide 42 text

© DMM.com Slack 42 - DMM のチャットコミュニケーションツール →チームごとにアラート通知用のチャンネル作成

Slide 43

Slide 43 text

© DMM.com Slack へ飛ばすために 43 - Amazon EventBridge - Amazon SNS - AWS Chatbot

Slide 44

Slide 44 text

© DMM.com OU 構築 44 - チームごとに OU を作成

Slide 45

Slide 45 text

© DMM.com セキュリティ設定方法 45

Slide 46

Slide 46 text

© DMM.com 案2 : 監視体制 46

Slide 47

Slide 47 text

© DMM.com これでいけるか・・・? 47

Slide 48

Slide 48 text

© DMM.com 知り合いのチームに テストさせてもらう 48

Slide 49

Slide 49 text

© DMM.com 伏線回収 49

Slide 50

Slide 50 text

© DMM.com 最初の営業 50

Slide 51

Slide 51 text

© DMM.com いざ実践 51

Slide 52

Slide 52 text

© DMM.com おかげさまで、問題点を把握 52 - チェック終わったアラートがわからない ( 開発者・管理者とも に ) - 埋もれて忘れてしまう → Slack だけでアラート管理は難しい

Slide 53

Slide 53 text

© DMM.com アラート管理のための 技術選定 ( AWS外 ) 53

Slide 54

Slide 54 text

© DMM.com 方針思い出し 54 - 開発者にセキュリティ運用をやってもらう →開発者がスムーズに運用できるようなツールを利用

Slide 55

Slide 55 text

© DMM.com JIRA 55 - DMM で採用されているチケット管理システム

Slide 56

Slide 56 text

© DMM.com JIRA -選定理由- 56 - DMM で採用されているチケット管理システム - 入社時にアカウント発行 - 他部署へのタスクの依頼に利用 → DMM の人は全員使える。。。はず

Slide 57

Slide 57 text

© DMM.com JIRA -全てのリージョンのアラートを管理- 57

Slide 58

Slide 58 text

© DMM.com JIRA -アラートをカンバン方式で管理- 58

Slide 59

Slide 59 text

© DMM.com JIRA -チケット内には優先度や期限を記載- 59

Slide 60

Slide 60 text

© DMM.com Slackbot 60 - JIRA チケットの起票 - Slack のスレッドへ JIRA チケット URL を通知 - アラートの重要度に応じたメンション発行 etc...

Slide 61

Slide 61 text

© DMM.com Slackbot 61 DMM のインフラ部門がシステムアラートの管理を JIRA で やっているのにインスパイア!! - JIRA チケットの起票 - Slack のスレッドへ JIRA チケット URL を通知 - アラートの重要度に応じたメンション発行 etc...

Slide 62

Slide 62 text

© DMM.com slackbot ( 作った ) 62

Slide 63

Slide 63 text

© DMM.com 実際の例 63

Slide 64

Slide 64 text

© DMM.com 完成 楽しい技術検証はここまで 64

Slide 65

Slide 65 text

© DMM.com ここからは DMM のチームを 巡り、承認をもらう 65

Slide 66

Slide 66 text

© DMM.com 長い旅が始まりました DMM ジャーニー 66

Slide 67

Slide 67 text

© DMM.com 承認をもらう旅 67 - AWS セキュリティチェックを開発者にやってもらうため「お金」 と「運用リソース」を出してもらうよう、 承認いただく

Slide 68

Slide 68 text

© DMM.com 営業資料 68

Slide 69

Slide 69 text

© DMM.com 営業順番 69 - 重要な情報を扱っているチームから

Slide 70

Slide 70 text

© DMM.com 営業 70

Slide 71

Slide 71 text

© DMM.com コロナ禍における 他部署への協力取り付け 71

Slide 72

Slide 72 text

© DMM.com リモートで営業 72 - Slack で DM を送る - 「初めましてこんにちは!」 - 「AWS セキュリティについて相談したいです!」 - 「ちょっとお時間よろしいでしょうか?」

Slide 73

Slide 73 text

© DMM.com 営業の振り返り 73 - チームでやっていたから完走できた - 逆にコロナという環境だからこそ、営業は捗った - あらゆるツテとコネを活用した

Slide 74

Slide 74 text

© DMM.com 結果 74

Slide 75

Slide 75 text

© DMM.com 完了宣言 承認もらえたチーム : 80 → Slack チャンネルの通知先が 67 75

Slide 76

Slide 76 text

© DMM.com 完了宣言 76 セキュリティ設定完了したアカウント : 約300 承認もらえたチーム : 80 → Slack チャンネルの通知先が 67

Slide 77

Slide 77 text

© DMM.com 完了宣言 77 棚卸しにより削除されたアカウント : 約50 セキュリティ設定完了したアカウント : 約300 承認もらえたチーム : 80 → Slack チャンネルの通知先が 67

Slide 78

Slide 78 text

© DMM.com 監視体制 78

Slide 79

Slide 79 text

© DMM.com 監視体制 79 Slack セクション機能で グルーピング

Slide 80

Slide 80 text

© DMM.com アラート数の推移(2021/9末時点) 80

Slide 81

Slide 81 text

© DMM.com アラート状況(2021/9末時点) 81 チェックした箇所 : 約4500 チェックが完了した箇所 : 約3200

Slide 82

Slide 82 text

© DMM.com チケット状況 82

Slide 83

Slide 83 text

© DMM.com 特にヤバイやつ 83 DB パブリック公開:20 S3 書き込み権限でパブリック公開:6

Slide 84

Slide 84 text

© DMM.com 実際に起きてた事件 84

Slide 85

Slide 85 text

© DMM.com 実際に起きてた事件 85 3件

Slide 86

Slide 86 text

© DMM.com DMM CSIRT と協力して対処 ( 画像は別件 ) 86

Slide 87

Slide 87 text

© DMM.com 議論が発生している 箇所 87

Slide 88

Slide 88 text

© DMM.com 80, 443 port パブリック公開の検知 88 Q. Web 会社なんだから 80, 443 port 公開するの当たり前 じゃん!想定内ですよ! A. お手数おかけしてます。DEV/STG 環境や Jenkins など のパブリック公開検知のため、80, 443 port の パブリック検知を実施しています。

Slide 89

Slide 89 text

© DMM.com セキュリティ設定するタイミング 89 Q. サービスリリースしてからでいいんじゃないの? A. クラウドセキュリティの場合、クラウドを利用し始めた タイミングからリスクが発生します。そのため、AWS アカウントが払い出されたタイミングでセキュリティ 設定を有効化します。

Slide 90

Slide 90 text

© DMM.com 一年運用 ( 管理者 ) 90

Slide 91

Slide 91 text

© DMM.com DMM の AWS セキュリティ標準策定 91

Slide 92

Slide 92 text

© DMM.com セキュリティプランを用意 92

Slide 93

Slide 93 text

© DMM.com CloudFormation StackSets 93 Organizations の OU 設計

Slide 94

Slide 94 text

© DMM.com 構築 94 - AWS CLI で実行

Slide 95

Slide 95 text

© DMM.com 構築 95 - 1 チームで 6 個の StackSet を作成

Slide 96

Slide 96 text

© DMM.com 構築 96 - 1 チームで 6 個の StackSet を作成 →80 OU あるためデプロイ先が 480

Slide 97

Slide 97 text

© DMM.com 構築 97 - Administrator アカウントに作成できる StackSet 数の 上限緩和申請 ( 100 → 700 )

Slide 98

Slide 98 text

© DMM.com 構築 98 - アカウント数 × 17 リージョン分の Stack Instance

Slide 99

Slide 99 text

© DMM.com 運用 99 - 難しい

Slide 100

Slide 100 text

© DMM.com 運用 100 - 難しい - 自動デプロイ

Slide 101

Slide 101 text

© DMM.com 運用 101 - 自動デプロイを有効化すると OU に AWS アカウントを 所属させたタイミングで CloudFormation が実行される

Slide 102

Slide 102 text

© DMM.com 運用 102 - 自動デプロイはリージョンの実行順を制御できない →自動デプロイを考慮した CloudFormation テンプレートを作 成すべきだった

Slide 103

Slide 103 text

© DMM.com ユースケース 103 - AWS アカウントを Root へ移動 ( アカウント停止前 ) - AWS アカウントを Root へ移動 ( アカウント停止後 ) - AWS アカウントを別の既存 OU へ移動 - AWS アカウントを別の新規 OU へ移動 - AWS アカウントを別の新規 OU へ移動 ( 現在の OU 配下 ) - etc...

Slide 104

Slide 104 text

© DMM.com 一年運用して ( 開発者 ) 104

Slide 105

Slide 105 text

© DMM.com チケット ( アラート ) 状況 105 ToDo ↓ レビュー中 ↓ 完了 のフローです

Slide 106

Slide 106 text

© DMM.com 開発者・管理者が一緒にがんばってる 106 - 開発者・管理者が一緒に AWS セキュリティ運用 がんばってます!

Slide 107

Slide 107 text

© DMM.com 開発者がセキュリティアラートをチェック! 107

Slide 108

Slide 108 text

© DMM.com まとめ 108

Slide 109

Slide 109 text

© DMM.com まとめ 109 - DMM の AWS アカウントにガードレールを敷けた →設定不備・セキュリティ侵害を発見できた

Slide 110

Slide 110 text

© DMM.com まとめ 110 - DMM の AWS アカウントにガードレールを敷けた →設定不備・セキュリティ侵害を発見できた - 開発者がセキュリティアラートを自発的にチェック → AWS レイヤーのセキュリティ自給率が高まった

Slide 111

Slide 111 text

© DMM.com 今後の DMM 111 DMM のセキュリティ部は開発者と共に セキュリティを推進していきます!

Slide 112

Slide 112 text

© DMM.com おしまい 112