Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DMMでAWSセキュリティガードレールを作ったので、開発者がAWSセキュリティをチェックする文...
Search
Wataru Nishiyama
November 11, 2021
7
7.7k
DMMでAWSセキュリティガードレールを作ったので、開発者がAWSセキュリティをチェックする文化を広げていきたい
Wataru Nishiyama
November 11, 2021
Tweet
Share
More Decks by Wataru Nishiyama
See All by Wataru Nishiyama
AWSセキュリティガードレールにより開発者がセキュリティ監視するようになったDMM_課題と今後.pptx.pdf
runble1
0
120
DMMにおける300アカウント67チームのAWSセキュリティを「開発者」に監視してもらうまでの道のり
runble1
1
1.1k
GCP無料枠を使ってデータ分析基盤を作ってみた
runble1
1
1.1k
英語できないエンジニア Google I/O にいく
runble1
0
350
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
355
29k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
The Cost Of JavaScript in 2023
addyosmani
45
6.6k
A better future with KSS
kneath
238
17k
Designing for Performance
lara
604
68k
Producing Creativity
orderedlist
PRO
341
39k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Automating Front-end Workflow
addyosmani
1365
200k
Docker and Python
trallard
40
3.1k
BBQ
matthewcrist
85
9.3k
Transcript
© DMM.com CONFIDENTIAL DMMでAWSセキュリティガードレール を作ったので、開発者が AWSセキュリティをチェックする 文化を広げていきたい 合同会社DMM.com セキュリティ部 CloudSecチーム
西山渉
© DMM.com 自己紹介 2 - 名前 : 西山渉 - 所属
: 合同会社DMM.com セキュリティ部 • クラウドセキュリティの推進 • WAF 導入支援 • PCIDSS セキュリティ監視
© DMM.com 今日話すこと 3 1. DMM で AWS セキュリティガードレールを構築 2.
AWS セキュリティガードレールを支える技術 3. 開発者がセキュリティチェックをする文化
© DMM.com 第1話 4 DMM で AWS セキュリティ ガードレールを構築
© DMM.com AWS セキュリティガードレールとは 5 - セキュリティ品質の担保のため、クラウド領域を制限 または、検知できるようにすること
© DMM.com AWS セキュリティガードレールとは 6 今回は検知 - セキュリティ品質の担保のため、クラウド領域を制限 または、検知できるようにすること
© DMM.com 対象はDMM 7 - チーム数 : 67 - AWS
アカウント : 300 以上 ( 17リージョン )
© DMM.com ガードレールの要件 8
© DMM.com 要件 9 - AWS へのセキュリティ脅威の検知
© DMM.com 要件 10 - AWS へのセキュリティ脅威の検知 - 開発者にセキュリティをチェックしてもらう(!?)
© DMM.com 〜部長に承認もらうとき〜 11 ぼく「AWSセキュリティ設定すぐできそうです。お金とチェックは セキュリティ部で、パッとやっていいですか」
© DMM.com 〜部長に承認もらうとき〜 12 ぼく「AWSセキュリティ設定すぐできそうです。お金とチェックは セキュリティ部で、パッとやっていいですか」 部長「ダメ。各チームのお金とリソースでチェックしてもらうよう、 各チームに承認をもらってください」
© DMM.com 〜部長に承認もらうとき〜 13 ぼく「AWSセキュリティ設定すぐできそうです。お金とチェックは セキュリティ部で、パッとやっていいですか」 部長「ダメ。各チームのお金とリソースでチェックしてもらうよう、 各チームに承認をもらってください」 ぼく「なるほどですね〜 (
ひええええええええ ) 」
© DMM.com DMM Tech Vision 14
© DMM.com DMM が目指す開発像 15
© DMM.com セキュリティも開発者が面倒をみる 16
© DMM.com 監視モデル 17 管理者 開発者 AWS 主役
© DMM.com 監視モデル 18 管理者 開発者 AWS Push型
© DMM.com 技術選定 19
© DMM.com Landing Zone 20 Landing Zone ・組織マスター ・セキュリティ ・ログアーカイブ
© DMM.com 監視体制 21
© DMM.com 監視体制 22 チームごとに Slackチャンネル作成
© DMM.com 監視体制 23 セキュリティ部は 全チャンネルにJOIN
© DMM.com 利用サービス 24 - AWS Config - AWS CloudTrail
- AWS Config Rules - Amazon GuardDuty - Amazon EventBridge - Amazon SNS - AWS Chatbot (Slack) - AWS Organizations - サービスマネージド型 CloudFormation StackSets
© DMM.com 利用サービス 25 - AWS Config - AWS CloudTrail
- AWS Config Rules - Amazon GuardDuty - Amazon EventBridge - Amazon SNS - AWS Chatbot (Slack) - AWS Organizations - サービスマネージド型 CloudFormation StackSets ログ保全 検知・監視 通知 設定
© DMM.com Config Rules の選定 26
© DMM.com アラート管理のための 技術選定 ( AWS外 ) 27
© DMM.com 方針 28 - 開発者にセキュリティ運用をやってもらう →開発者がスムーズに運用できるようなツールを選定
© DMM.com Slack 29 - DMM で採用されているコミュニケーションツール
© DMM.com JIRA 30 - DMM で採用されているチケット管理システム
© DMM.com JIRA -全てのアラートを一元管理- 31
© DMM.com JIRA -ステータスをカンバンで管理- 32
© DMM.com JIRA -チケット内には優先度や期限を記載- 33
© DMM.com JIRA? 34 - DMM で採用されているチケット管理システム - DMM 入社時にアカウント発行
- 他部署へのタスクの依頼に利用 → DMM の人は全員使える。。。はず
© DMM.com Slackbot ( 作った ) 35 - Slack と
JIRA をつなぎこむ - Slack 通知されたアラートから JIRA チケットを起票 - アラートのスレッドへ JIRA チケット URL 通知 - アラートの重要度に応じたメンション発行 etc...
© DMM.com Slackbot ( 作った ) 36
© DMM.com 実際の例 37
© DMM.com DMM のチームを巡り 承認をもらう旅 38 DMM ジャーニー
© DMM.com 承認をもらう旅 39 - AWS セキュリティチェックを開発者にやってもらうため「お金」 と「運用リソース」を出してもらうよう、 承認いただく
© DMM.com 営業資料 40
© DMM.com 営業 41
© DMM.com 結果 42
© DMM.com 結果 承認もらえたチーム : 80 → Slack チャンネルの通知先は 67
43
© DMM.com 結果 44 セキュリティ設定完了したアカウント : 約300 承認もらえたチーム : 80
→ Slack チャンネルの通知先は 67
© DMM.com 結果 45 棚卸しにより削除されたアカウント : 約50(!?) セキュリティ設定完了したアカウント : 約300
承認もらえたチーム : 80 → Slack チャンネルの通知先は 67
© DMM.com 監視体制 46
© DMM.com 監視体制 47 Slack セクション機能で グルーピング
© DMM.com アラート数の推移(2021/9末時点) 48
© DMM.com アラート状況(2021/9末) 49 約4500 約3200
© DMM.com 特にヤバイ設定不備(済) 50 DB パブリック公開:20 S3 書き込み権限でパブリック公開:6
© DMM.com 実際に起きてた事件(済) 51 3件
© DMM.com 構築の過程の話はこちら 52
© DMM.com 第2話 53 AWS セキュリティ ガードレールを支える技術
© DMM.com つまり管理者の運用の話 54 - Organizations OU - サービスマネージド型 CloudFormation
StackSets - アカウントごとの例外設定 - CICD
© DMM.com Organizations OU 55
© DMM.com どの OU にアカウント入れるのかわからない問題 56 - OU の数は 80
以上 ( 基本は事業部ごとに分けてる ) →どの OU にどのアカウントを入れる?
© DMM.com どの OU にアカウント入れるのかわからない問題 57 - 【未】解決方法 • OU
名に Slack チャンネル ID を入れる → ID は開発者に報告してもらう
© DMM.com どの OU にアカウント入れるのかわからない問題 58 - 現在 OU は事業部ごとに分かれているため、Slack
チャン ネル ID で分け直す必要あり - OU 名で検索できない ( ブラウザ検索 )
© DMM.com 余談:AWSセキュリティプラン 59
© DMM.com 余談:AWSセキュリティプラン 60 チームに複数の OU が存在する 場合がある
© DMM.com サービスマネージド型 CloudFormation StackSets 61
© DMM.com 「自動デプロイ」に寄せきれていない問題 62 - 「自動デプロイ」は OU に AWS アカウントを所属
させたタイミングで CloudFormation が実行される機能
© DMM.com 「自動デプロイ」に寄せきれていない問題 63 - グローバルリソースとリージョナルリソースに依存関係がある 場合、リージョンの実行順序を制御したい • Chatbot (
グローバルリソース ) • EventBridge ( リージョナルリソース ) • SNS ( リージョナルリソース )
© DMM.com 「自動デプロイ」に寄せきれていない問題 64 - グローバルリソースとリージョナルリソースに依存関係がある 場合、リージョンの実行順序を指定したい • Chatbot (
グローバルリソース ) • EventBridge ( リージョナルリソース ) • SNS ( リージョナルリソース ) Chatbot は東京リージョン時のみ、かつ全リージョンで EventBridge + SNS が作成された後に作成開始したい
© DMM.com 「自動デプロイ」に寄せきれていない問題 65 - 【未】解決方法 • Chatbot を利用せず Lambda
で Slack へ通知 • 自動デプロイを利用せず CICD でがんばる • 自動デプロイで実行順序を指定できるよう AWS へリクエスト
© DMM.com アカウントごとの例外設定 66
© DMM.com アカウントごとの例外覚えてられない問題 67 - 開発者から例外をリクエストされる ex ) このアカウントではこのアラート無効化して〜
© DMM.com アカウントごとの例外覚えてられない問題 68 - 解決方法 • 全て CICD に寄せてコード化している
© DMM.com アカウントごとの例外覚えてられない問題 69 - 解決方法 • 全て CICD に寄せてコード化している
→例外のために OU の作成が必要となり大変
© DMM.com ※組織変更多すぎ問題 70 - ユースケース - AWS アカウントを Root
へ移動 ( アカウント停止前 ) - AWS アカウントを Root へ移動 ( アカウント停止後 ) - AWS アカウントを別の既存 OU へ移動 - AWS アカウントを別の新規 OU へ移動 - AWS アカウントを別の新規 OU へ移動 ( 現在の OU 配下 ) - etc...
© DMM.com CICD 71 特に CD
© DMM.com 手動でアップデートつらい問題 72 - OU が 80 以上あるため、テンプレート更新時に 80
回手動で Update StackSet やっている
© DMM.com 手動でアップデートつらい問題 73 - 現在、CICD は例外設定のみに利用している
© DMM.com 手動でアップデートつらい問題 74 - 【未】解決方法 ( 日和ってる ) •
UpdateStackSetAPI 同時実行制限 ( 1 req/s ) → サービスクォータに項目がないため、 CD 側の 制御で直列実行などにする必要あり • Stack instance operations per administrator account → 3500 ( 一つのテンプレート更新に 300 * 17 = 5100 ) • CloudFormation テンプレートの数だけアップデート先 も増える
© DMM.com 第3話 75 開発者がセキュリティ チェックする文化
© DMM.com セキュリティガードレール要件 76 - AWS へのセキュリティ脅威の検知 - 開発者にセキュリティをチェックしてもらう(!?)
© DMM.com 開発者がセキュリティアラートをチェック! 77
© DMM.com チームごとの アラート対応状況 78
© DMM.com アラート対応状況 79 ToDo ↓ レビュー中 ↓ 完了 のフローです
© DMM.com チケット ( アラート ) 状況 80 開発者が運用 がんばってる!
© DMM.com 議論が発生している 箇所 81
© DMM.com 80, 443 port パブリック公開の検知 82 Q. Web 会社なんだから
80, 443 port 公開するの当たり前 じゃん!想定内ですよ! A. DEV/STG 環境や Jenkins などを誤ってパブリック 公開していないかの確認のため、80, 443 port の パブリック検知を実施しています。
© DMM.com セキュリティ設定するタイミング 83 Q. サービスリリースしてからでいいんじゃないの? A. クラウドセキュリティの場合、クラウドを利用し始めた タイミングからリスクが発生します。そのため、AWS アカウントが払い出されたタイミングで、セキュリティ
設定を有効化します。
© DMM.com 議論が発生することは大歓迎 84 - 開発者がセキュリティを意識してくれている
© DMM.com Landing Zone までは一緒 その先は? 85
© DMM.com Landing Zone 構築のその先 86 - Landing Zone 構築はまでは各社一緒
© DMM.com Landing Zone 構築のその先 87 - Landing Zone 構築はまでは各社一緒
- その先は、各社の方針が関わってくる ex) DMM では開発者にやってもらう
© DMM.com Landing Zone 構築のその先 88 - Landing Zone 構築はまでは各社一緒
- その先は、各社の方針が関わってくる ex) DMM では開発者にやってもらう ここが文化
© DMM.com Landing Zone 構築のその先 89 - このプロジェクト1年ぐらいやってたが、作ってたのは Landing Zone
でなく、開発者が AWS セキュリティを チェックする文化だったかもしれない
© DMM.com まとめ 90
© DMM.com まとめ 91 - DMM の AWS アカウントにガードレールを敷けた →設定不備・セキュリティ侵害を発見できた
© DMM.com まとめ 92 - DMM の AWS アカウントにガードレールを敷けた →設定不備・セキュリティ侵害を発見できた
- 開発者がセキュリティアラートを自発的にチェック → AWS レイヤーのセキュリティ自給率が高まった
© DMM.com 今後の DMM 93 DMM のセキュリティ部は開発者と共に セキュリティを推進していきます!
© DMM.com おしまい 94