Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DMMでAWSセキュリティガードレールを作ったので、開発者がAWSセキュリティをチェックする文化を広げていきたい

79ed15144b6e2e6fdd242e62b238bd38?s=47 Wataru Nishiyama
November 11, 2021
5.5k

 DMMでAWSセキュリティガードレールを作ったので、開発者がAWSセキュリティをチェックする文化を広げていきたい

79ed15144b6e2e6fdd242e62b238bd38?s=128

Wataru Nishiyama

November 11, 2021
Tweet

Transcript

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

    西山渉

  2. © DMM.com 自己紹介 2 - 名前 : 西山渉 - 所属

    : 合同会社DMM.com セキュリティ部 • クラウドセキュリティの推進 • WAF 導入支援 • PCIDSS セキュリティ監視
  3. © DMM.com 今日話すこと 3 1. DMM で AWS セキュリティガードレールを構築 2.

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

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

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

  7. © DMM.com 対象はDMM 7 - チーム数 : 67 - AWS

    アカウント : 300 以上 ( 17リージョン )
  8. © DMM.com ガードレールの要件 8

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

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

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

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

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

    ひええええええええ ) 」
  14. © DMM.com DMM Tech Vision 14

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

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

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

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

  19. © DMM.com 技術選定 19

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

  21. © DMM.com 監視体制 21

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

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

  24. © DMM.com 利用サービス 24 - AWS Config - AWS CloudTrail

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

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

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

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

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

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

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

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

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

  34. © DMM.com JIRA? 34 - DMM で採用されているチケット管理システム - DMM 入社時にアカウント発行

    - 他部署へのタスクの依頼に利用 → DMM の人は全員使える。。。はず
  35. © DMM.com Slackbot ( 作った ) 35 - Slack と

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

  37. © DMM.com 実際の例 37

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

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

  40. © DMM.com 営業資料 40

  41. © DMM.com 営業 41

  42. © DMM.com 結果 42

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

    43
  44. © DMM.com 結果 44 セキュリティ設定完了したアカウント : 約300 承認もらえたチーム : 80

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

    承認もらえたチーム : 80 → Slack チャンネルの通知先は 67
  46. © DMM.com 監視体制 46

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

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

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

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

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

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

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

  54. © DMM.com つまり管理者の運用の話 54 - Organizations OU - サービスマネージド型 CloudFormation

    StackSets - アカウントごとの例外設定 - CICD
  55. © DMM.com Organizations OU 55

  56. © DMM.com どの OU にアカウント入れるのかわからない問題 56 - OU の数は 80

    以上 ( 基本は事業部ごとに分けてる ) →どの OU にどのアカウントを入れる?
  57. © DMM.com どの OU にアカウント入れるのかわからない問題 57 - 【未】解決方法 • OU

    名に Slack チャンネル ID を入れる → ID は開発者に報告してもらう
  58. © DMM.com どの OU にアカウント入れるのかわからない問題 58 - 現在 OU は事業部ごとに分かれているため、Slack

    チャン ネル ID で分け直す必要あり - OU 名で検索できない ( ブラウザ検索 )
  59. © DMM.com 余談:AWSセキュリティプラン 59

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

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

  62. © DMM.com 「自動デプロイ」に寄せきれていない問題 62 - 「自動デプロイ」は OU に AWS アカウントを所属

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

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

    グローバルリソース ) • EventBridge ( リージョナルリソース ) • SNS ( リージョナルリソース ) Chatbot は東京リージョン時のみ、かつ全リージョンで EventBridge + SNS が作成された後に作成開始したい
  65. © DMM.com 「自動デプロイ」に寄せきれていない問題 65 - 【未】解決方法 • Chatbot を利用せず Lambda

    で Slack へ通知 • 自動デプロイを利用せず CICD でがんばる • 自動デプロイで実行順序を指定できるよう AWS へリクエスト
  66. © DMM.com アカウントごとの例外設定 66

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

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

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

    →例外のために OU の作成が必要となり大変
  70. © DMM.com ※組織変更多すぎ問題 70 - ユースケース - AWS アカウントを Root

    へ移動 ( アカウント停止前 ) - AWS アカウントを Root へ移動 ( アカウント停止後 ) - AWS アカウントを別の既存 OU へ移動 - AWS アカウントを別の新規 OU へ移動 - AWS アカウントを別の新規 OU へ移動 ( 現在の OU 配下 ) - etc...
  71. © DMM.com CICD 71 特に CD

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

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

  74. © DMM.com 手動でアップデートつらい問題 74 - 【未】解決方法 ( 日和ってる ) •

    UpdateStackSetAPI 同時実行制限 ( 1 req/s ) → サービスクォータに項目がないため、 CD 側の 制御で直列実行などにする必要あり • Stack instance operations per administrator account → 3500 ( 一つのテンプレート更新に 300 * 17 = 5100 ) • CloudFormation テンプレートの数だけアップデート先 も増える
  75. © DMM.com 第3話 75 開発者がセキュリティ チェックする文化

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

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

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

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

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

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

  82. © DMM.com 80, 443 port パブリック公開の検知 82 Q. Web 会社なんだから

    80, 443 port 公開するの当たり前 じゃん!想定内ですよ! A. DEV/STG 環境や Jenkins などを誤ってパブリック  公開していないかの確認のため、80, 443 port の  パブリック検知を実施しています。
  83. © DMM.com セキュリティ設定するタイミング 83 Q. サービスリリースしてからでいいんじゃないの? A. クラウドセキュリティの場合、クラウドを利用し始めた タイミングからリスクが発生します。そのため、AWS アカウントが払い出されたタイミングで、セキュリティ

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

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

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

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

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

    - その先は、各社の方針が関わってくる ex) DMM では開発者にやってもらう ここが文化
  89. © DMM.com Landing Zone 構築のその先 89 - このプロジェクト1年ぐらいやってたが、作ってたのは Landing Zone

    でなく、開発者が AWS セキュリティを チェックする文化だったかもしれない
  90. © DMM.com まとめ 90

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

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

    - 開発者がセキュリティアラートを自発的にチェック → AWS レイヤーのセキュリティ自給率が高まった
  93. © DMM.com 今後の DMM 93 DMM のセキュリティ部は開発者と共に セキュリティを推進していきます!

  94. © DMM.com おしまい 94