DMMでAWSセキュリティガードレールを作ったので、開発者がAWSセキュリティをチェックする文化を広げていきたい
by
Wataru Nishiyama
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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