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

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

Wataru Nishiyama
November 11, 2021
7.2k

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

Wataru Nishiyama

November 11, 2021
Tweet

Transcript

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

    セキュリティ部

    CloudSecチーム 西山渉


    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  14. © DMM.com
    DMM Tech Vision
    14

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  19. © DMM.com
    技術選定
    19

    View full-size slide

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

    View full-size slide

  21. © DMM.com
    監視体制
    21

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  26. © DMM.com
    Config Rules の選定
    26

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  36. © DMM.com
    Slackbot ( 作った )
    36

    View full-size slide

  37. © DMM.com
    実際の例
    37

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  40. © DMM.com
    営業資料
    40

    View full-size slide

  41. © DMM.com
    営業
    41

    View full-size slide

  42. © DMM.com
    結果
    42

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  46. © DMM.com
    監視体制
    46

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  55. © DMM.com
    Organizations OU
    55

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  71. © DMM.com
    CICD
    71
    特に CD

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  79. © DMM.com
    アラート対応状況
    79
    ToDo

    レビュー中

    完了
    のフローです

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  90. © DMM.com
    まとめ
    90

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  94. © DMM.com
    おしまい
    94

    View full-size slide