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