Slide 1

Slide 1 text

© DMM.com CONFIDENTIAL DMMでAWSセキュリティガードレール を作ったので、開発者が AWSセキュリティをチェックする 文化を広げていきたい 合同会社DMM.com
 セキュリティ部
 CloudSecチーム 西山渉


Slide 2

Slide 2 text

© DMM.com 自己紹介 2 - 名前 : 西山渉 - 所属 : 合同会社DMM.com セキュリティ部 • クラウドセキュリティの推進 • WAF 導入支援 • PCIDSS セキュリティ監視

Slide 3

Slide 3 text

© DMM.com 今日話すこと 3 1. DMM で AWS セキュリティガードレールを構築 2. AWS セキュリティガードレールを支える技術 3. 開発者がセキュリティチェックをする文化

Slide 4

Slide 4 text

© DMM.com 第1話 4 DMM で AWS セキュリティ ガードレールを構築

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

© DMM.com 対象はDMM 7 - チーム数 : 67 - AWS アカウント : 300 以上 ( 17リージョン )

Slide 8

Slide 8 text

© DMM.com ガードレールの要件 8

Slide 9

Slide 9 text

© DMM.com 要件 9 - AWS へのセキュリティ脅威の検知

Slide 10

Slide 10 text

© DMM.com 要件 10 - AWS へのセキュリティ脅威の検知 - 開発者にセキュリティをチェックしてもらう(!?)

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

© DMM.com DMM Tech Vision 14

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

© DMM.com 技術選定 19

Slide 20

Slide 20 text

© DMM.com Landing Zone 20 Landing Zone ・組織マスター ・セキュリティ ・ログアーカイブ

Slide 21

Slide 21 text

© DMM.com 監視体制 21

Slide 22

Slide 22 text

© DMM.com 監視体制 22 チームごとに Slackチャンネル作成

Slide 23

Slide 23 text

© DMM.com 監視体制 23 セキュリティ部は 全チャンネルにJOIN

Slide 24

Slide 24 text

© DMM.com 利用サービス 24 - AWS Config - AWS CloudTrail - AWS Config Rules - Amazon GuardDuty - Amazon EventBridge - Amazon SNS - AWS Chatbot (Slack) - AWS Organizations - サービスマネージド型 CloudFormation StackSets

Slide 25

Slide 25 text

© DMM.com 利用サービス 25 - AWS Config - AWS CloudTrail - AWS Config Rules - Amazon GuardDuty - Amazon EventBridge - Amazon SNS - AWS Chatbot (Slack) - AWS Organizations - サービスマネージド型 CloudFormation StackSets ログ保全 検知・監視 通知 設定

Slide 26

Slide 26 text

© DMM.com Config Rules の選定 26

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

© DMM.com Slack 29 - DMM で採用されているコミュニケーションツール

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

© DMM.com JIRA -全てのアラートを一元管理- 31

Slide 32

Slide 32 text

© DMM.com JIRA -ステータスをカンバンで管理- 32

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

© DMM.com Slackbot ( 作った ) 35 - Slack と JIRA をつなぎこむ - Slack 通知されたアラートから JIRA チケットを起票 - アラートのスレッドへ JIRA チケット URL 通知 - アラートの重要度に応じたメンション発行 etc...

Slide 36

Slide 36 text

© DMM.com Slackbot ( 作った ) 36

Slide 37

Slide 37 text

© DMM.com 実際の例 37

Slide 38

Slide 38 text

© DMM.com DMM のチームを巡り 承認をもらう旅 38 DMM ジャーニー

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

© DMM.com 営業資料 40

Slide 41

Slide 41 text

© DMM.com 営業 41

Slide 42

Slide 42 text

© DMM.com 結果 42

Slide 43

Slide 43 text

© DMM.com 結果 承認もらえたチーム : 80 → Slack チャンネルの通知先は 67 43

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

© DMM.com 監視体制 46

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

© DMM.com アラート状況(2021/9末) 49 約4500 約3200

Slide 50

Slide 50 text

© DMM.com 特にヤバイ設定不備(済) 50 DB パブリック公開:20 S3 書き込み権限でパブリック公開:6

Slide 51

Slide 51 text

© DMM.com 実際に起きてた事件(済) 51 3件

Slide 52

Slide 52 text

© DMM.com 構築の過程の話はこちら 52

Slide 53

Slide 53 text

© DMM.com 第2話 53 AWS セキュリティ ガードレールを支える技術

Slide 54

Slide 54 text

© DMM.com つまり管理者の運用の話 54 - Organizations OU - サービスマネージド型 CloudFormation StackSets - アカウントごとの例外設定 - CICD

Slide 55

Slide 55 text

© DMM.com Organizations OU 55

Slide 56

Slide 56 text

© DMM.com どの OU にアカウント入れるのかわからない問題 56 - OU の数は 80 以上 ( 基本は事業部ごとに分けてる ) →どの OU にどのアカウントを入れる?

Slide 57

Slide 57 text

© DMM.com どの OU にアカウント入れるのかわからない問題 57 - 【未】解決方法 • OU 名に Slack チャンネル ID を入れる → ID は開発者に報告してもらう

Slide 58

Slide 58 text

© DMM.com どの OU にアカウント入れるのかわからない問題 58 - 現在 OU は事業部ごとに分かれているため、Slack チャン ネル ID で分け直す必要あり - OU 名で検索できない ( ブラウザ検索 )

Slide 59

Slide 59 text

© DMM.com 余談:AWSセキュリティプラン 59

Slide 60

Slide 60 text

© DMM.com 余談:AWSセキュリティプラン 60 チームに複数の OU が存在する 場合がある

Slide 61

Slide 61 text

© DMM.com サービスマネージド型 CloudFormation StackSets 61

Slide 62

Slide 62 text

© DMM.com 「自動デプロイ」に寄せきれていない問題 62 - 「自動デプロイ」は OU に AWS アカウントを所属 させたタイミングで CloudFormation が実行される機能

Slide 63

Slide 63 text

© DMM.com 「自動デプロイ」に寄せきれていない問題 63 - グローバルリソースとリージョナルリソースに依存関係がある 場合、リージョンの実行順序を制御したい • Chatbot ( グローバルリソース ) • EventBridge ( リージョナルリソース ) • SNS ( リージョナルリソース )

Slide 64

Slide 64 text

© DMM.com 「自動デプロイ」に寄せきれていない問題 64 - グローバルリソースとリージョナルリソースに依存関係がある 場合、リージョンの実行順序を指定したい • Chatbot ( グローバルリソース ) • EventBridge ( リージョナルリソース ) • SNS ( リージョナルリソース ) Chatbot は東京リージョン時のみ、かつ全リージョンで EventBridge + SNS が作成された後に作成開始したい

Slide 65

Slide 65 text

© DMM.com 「自動デプロイ」に寄せきれていない問題 65 - 【未】解決方法 • Chatbot を利用せず Lambda で Slack へ通知 • 自動デプロイを利用せず CICD でがんばる • 自動デプロイで実行順序を指定できるよう AWS へリクエスト

Slide 66

Slide 66 text

© DMM.com アカウントごとの例外設定 66

Slide 67

Slide 67 text

© DMM.com アカウントごとの例外覚えてられない問題 67 - 開発者から例外をリクエストされる ex ) このアカウントではこのアラート無効化して〜

Slide 68

Slide 68 text

© DMM.com アカウントごとの例外覚えてられない問題 68 - 解決方法 • 全て CICD に寄せてコード化している

Slide 69

Slide 69 text

© DMM.com アカウントごとの例外覚えてられない問題 69 - 解決方法 • 全て CICD に寄せてコード化している →例外のために OU の作成が必要となり大変

Slide 70

Slide 70 text

© DMM.com ※組織変更多すぎ問題 70 - ユースケース - AWS アカウントを Root へ移動 ( アカウント停止前 ) - AWS アカウントを Root へ移動 ( アカウント停止後 ) - AWS アカウントを別の既存 OU へ移動 - AWS アカウントを別の新規 OU へ移動 - AWS アカウントを別の新規 OU へ移動 ( 現在の OU 配下 ) - etc...

Slide 71

Slide 71 text

© DMM.com CICD 71 特に CD

Slide 72

Slide 72 text

© DMM.com 手動でアップデートつらい問題 72 - OU が 80 以上あるため、テンプレート更新時に 80 回手動で Update StackSet やっている

Slide 73

Slide 73 text

© DMM.com 手動でアップデートつらい問題 73 - 現在、CICD は例外設定のみに利用している

Slide 74

Slide 74 text

© DMM.com 手動でアップデートつらい問題 74 - 【未】解決方法 ( 日和ってる ) • UpdateStackSetAPI 同時実行制限 ( 1 req/s ) → サービスクォータに項目がないため、 CD 側の 制御で直列実行などにする必要あり • Stack instance operations per administrator account → 3500 ( 一つのテンプレート更新に 300 * 17 = 5100 ) • CloudFormation テンプレートの数だけアップデート先 も増える

Slide 75

Slide 75 text

© DMM.com 第3話 75 開発者がセキュリティ チェックする文化

Slide 76

Slide 76 text

© DMM.com セキュリティガードレール要件 76 - AWS へのセキュリティ脅威の検知 - 開発者にセキュリティをチェックしてもらう(!?)

Slide 77

Slide 77 text

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

Slide 78

Slide 78 text

© DMM.com チームごとの アラート対応状況 78

Slide 79

Slide 79 text

© DMM.com アラート対応状況 79 ToDo ↓ レビュー中 ↓ 完了 のフローです

Slide 80

Slide 80 text

© DMM.com チケット ( アラート ) 状況 80 開発者が運用 がんばってる!

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

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

Slide 83

Slide 83 text

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

Slide 84

Slide 84 text

© DMM.com 議論が発生することは大歓迎 84 - 開発者がセキュリティを意識してくれている

Slide 85

Slide 85 text

© DMM.com Landing Zone までは一緒 その先は? 85

Slide 86

Slide 86 text

© DMM.com Landing Zone 構築のその先 86 - Landing Zone 構築はまでは各社一緒

Slide 87

Slide 87 text

© DMM.com Landing Zone 構築のその先 87 - Landing Zone 構築はまでは各社一緒 - その先は、各社の方針が関わってくる ex) DMM では開発者にやってもらう

Slide 88

Slide 88 text

© DMM.com Landing Zone 構築のその先 88 - Landing Zone 構築はまでは各社一緒 - その先は、各社の方針が関わってくる ex) DMM では開発者にやってもらう ここが文化

Slide 89

Slide 89 text

© DMM.com Landing Zone 構築のその先 89 - このプロジェクト1年ぐらいやってたが、作ってたのは Landing Zone でなく、開発者が AWS セキュリティを チェックする文化だったかもしれない

Slide 90

Slide 90 text

© DMM.com まとめ 90

Slide 91

Slide 91 text

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

Slide 92

Slide 92 text

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

Slide 93

Slide 93 text

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

Slide 94

Slide 94 text

© DMM.com おしまい 94