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

GMO Developer Day 2021 - DevSecOps 推進の取り組みの紹介.pdf

mrtc0
September 16, 2021

GMO Developer Day 2021 - DevSecOps 推進の取り組みの紹介.pdf

mrtc0

September 16, 2021
Tweet

More Decks by mrtc0

Other Decks in Technology

Transcript

  1. DevSecOps 推進の取り組みの紹介
    GMO Pepabo, Inc. / Kohei Morita @mrtc0
    GMO Developer Day 2021 #GMOdevday

    View full-size slide

  2. whoami
    Kohei Morita / @mrtc0
    GMO Pepabo, Inc. セキュリティ対策室 シニアエンジニア
    OWASP Fukuoka Chapter Leader
    セキュリティ・キャンプ 講師 / ステアリングコミッティメンバー
    blog.ssrf.in / container-seucrity.dev

    View full-size slide

  3. About
    • ペパボにおける DevSecOps への最近の取り組みについてお話しします
    About this talk
    1. 脅威モデリング
    2. Inventory Management
    3. SAST
    4. セキュリティモニタリング
    5. コミュニケーション ペパボテックカンファレンス #14 でお話した内容も含め、最近の取り組みについてお話します。
    https://tech.pepabo.com/pdf/pepabo-tech-conference-14-security-team-slide.pdf

    View full-size slide

  4. DevSecOps
    シフトレフトと自動化によって開発サイクルにセキュリティ対策を組み込んでいく
    DevSecOps
    「DevSecOps」で検索すると ∞ な表現をイメージした図が出てきます

    View full-size slide

  5. DevSecOps
    DevSecOps
    手戻りのコストを小さくする
    協力によりサイロ化を防いで
    人材育成にも寄与

    View full-size slide

  6. DevSecOps
    継続的なセキュリティ強化を行うために
    ...
    Security as Code
    ● DevOps プロセスにセキュリティツールを統合する
    ● 「あるべき状態」をコードやポリシーで定義する
    ● 自動化する
    Security as Code, Policy as Code, Test Driven Security で継続的かつ確実なセキュリティ対策を実施
    セキュリティエンジニアリングとしての領域として発展させていくミッションの一つ

    View full-size slide

  7. DevSecOps
    セキュリティ対策室
    各事業部がセキュリティ対策を実施
    2018年 🔥
    セキュリティ・インシデントが発生
    2018年 3月
    セキュリティ対策室発足
    2018年 12月
    セキュリティインシデントの
    再発防止策完了
    2019年
    インシデントハンドリング手法の
    標準化
    DevSecOps へのマインド切り替え
    2021年
    DevSecOps を実現するための
    ツールや仕組みを開発
    事業部横断のセキュリティ対策を実施する組織として活動

    View full-size slide

  8. DevSecOps
    ペパボでも「セキュリティを対策を意識しなくても実施されている状態」を目指している
    DevSecOps Cycle in Pepabo
    Code
    • 脅威モデリング
    • セキュアコーディングトレーニング
    • SAST, DAST
    Test
    Monitoring
    • 各種インベントリ情報の管理
    • ポートやファイル改竄などの監視
    Incident Response
    • sssbot による支援
    • Slack reacji 等による情報共有の工夫
    例えば...
    詳しくはペパボテックカンファレンス
    #14 のスライドをご覧ください
    https://tech.pepabo.com/pdf/pepabo-tech-conference-14-security-team-slide.pdf

    View full-size slide

  9. DevSecOps
    ● OpenStack ベースのプライベートクラウド Nyah 上で稼働
    ○ 一部 AWS や GCP を利用し、ハイブリッドクラウドになっているサービスもある
    ● ソースコード管理は GitHub Enterprise Server
    ○ CI も GitHub Actions Self-hosted Runner を使用
    ○ コンテナレジストリも GitHub Packages を使用
    ペパボのサービスとセキュリティ対策基盤
    マネージドサービスは利用せず、セキュリティ基盤を自前で構築しているのが特徴

    View full-size slide

  10. Threat Modeling

    View full-size slide

  11. Threat Modeling
    • 潜在的な脅威を特定しサービスのセキュリティを向上させるために、脅威モデリングをサービスの開
    発者 + セキュリティ対策室で実施
    • 事前に Dataflow を書いてもらい、STRIDE を使って評価。リスクの深刻度を判断して、対策や緩和策
    を実施
    Threat Modeling
    Dataflow の例. draw.io を利用. 脅威モデリングを実施する上で必要な情報が記載されているか確認のためのチェックリスト

    View full-size slide

  12. Threat Modeling
    • 特定した脅威は「脅威」「手法」「前提」「攻撃元」「攻撃先」をまとめて記録
    • リスク評価を行い、対策 /緩和策をアクションアイテムとして追加
    Threat Modeling
    脅威は S.T.R.I.D ごとに Notion にまとめ
    特定した脅威の対策を実施

    View full-size slide

  13. Inventory Management

    View full-size slide

  14. Inventory Management
    • 既知の脆弱性のトリアージなどを目的に、様々なインベントリを管理している
    Inventory Management
    アプリケーションの依存ライブラリ
    cyclone-dx で SBOM にして Dependency-Track で管理
    OS のバージョンやパッケージなど
    Wazuh の syscollector で収集、別 DB で管理
    オンプレ/VM 含めたサーバー一覧
    Wazuh がインストールされているかを
    確認するためにも収集、リポジトリで管理

    View full-size slide

  15. SAST
    ● ペパボではコードレビュー時にセキュリティチェックを必ず行うことにしている
    ● セキュリティレビューを支援するために「脆弱性の可能性のある」箇所を自動で指摘する GitHub
    Actions を活用している
    ○ Semgrep + 各言語の SAST ツール
    コードレビュー時のセキュリティ支援
    PHP のセキュリティレビュー支援 Bot による指摘の例
    検出した内容とチェック項目に加えて、
    その脆弱性に関するガイドライン等へのポインタを記載

    View full-size slide

  16. SAST
    ● https://semgrep.dev/
    ● Tree-sitter でパースした構文木に対して grep ができるツール
    Semgrep
    関数としての exec() の使用を検出し、文字
    列としての exec() は検出しない

    View full-size slide

  17. SAST
    ● ルールは YAML で定義し`message` の文字列をレビューコメントとして投稿
    Semgrep + GitHub Actions
    # php-xss-echo.yaml
    rules:
    - id: xss-echo
    patterns:
    - pattern: |
    echo $X;
    - pattern-not: |
    echo "...";
    - pattern-not: |
    htmlspecialchars(..., ENT_QUOTES, "UTF-8");
    ...
    message: |
    :warning: Found XSS! See https://security-guide...
    languages: ["php"]
    severity: WARNING

    View full-size slide

  18. Security Monitoring

    View full-size slide

  19. Security Monitoring
    ● Agent / Manager で構成される OSS のセキュリティプラットフォーム
    ○ FIM や Log Analysis, Vulnerability Detection など機能が多彩
    例えば SSH のログを拾って、ルールに基づいてアラートを上げ、アラートによっては自動でトリ
    アージを行うことが可能
    Wazuh
    ● ペパボでは全サーバーへの導入を目標としており、現在 1500台以上のサーバーを監視している

    View full-size slide

  20. Security Monitoring
    Wazuh による監視の仕組み (logcollector)
    Wazuh Agent のコンポーネントの例
    ● syscheck … FIM
    ● syscollector … Inventory の収集
    ● logcollector … ログやコマンド実行結果の収集

    View full-size slide

  21. Security Monitoring
    • デプロイなどの正常な変更についてもアラートが発砲されてしまい、狼少年状態に...
    異常なアラートのみ通知するために、正常なアラートを自動トリアージする
    Auto triage Wazuh alerts
    ● 通知モデルの変更 (ossec integration → kafka + WebApp)
    ● 流量の制限とサマリ化
    ● 動的/静的な Mute ポリシーの実装
    ● シグネチャ収集によるアラート削減
    ● プロビジョニングツールによるデプロイ前後のコンテキスト取得
    ● Annotation によるトリアージ支援
    ● ルールをテストできる環境の整備

    View full-size slide

  22. Security Monitoring
    • プライベートクラウド Nyah 上に Kubernetes クラスタを構築するツール
    • 各サービスのセキュリティレベルを揃えるためにデフォルトでセキュアになるようにしている
    NKE (Nyah Kubernetes Engine)
    kube-apiserver の監査ログの取得
    Secret などへのアクセスログを取得し、有事の際に対応できるように
    Falco による監視
    Wazuh など既存のツールではコンテナ上のイベント監査ができないため
    Gatekeeper の導入
    PSS を定義し、準拠しない Pod の作成をモニタリング & ブロック

    View full-size slide

  23. Communication

    View full-size slide

  24. Communication
    「DevOps」vs「Sec」 の対立にならないようにする
    DevSecOps の推進
    コミュニケーションが「セキュリティを当たり前とする文化」を育てるレバレッジとなる
    • セキュリティを組織文化として育む
    • 小さな異変や気づきを気軽に共有できる組織
    • 平時・緊急を問わず、迅速・正確な対応につなげる
    ツールを導入して終わり! ではなく、コミュニケーションを通して組織のセキュリティマインドを育てる

    View full-size slide

  25. Commincation
    CO3 ( Communication / Completeness / Continuous )
    セキュリティ対策室の方針
    • Communication … コミュニケーションを取る。「みんなと仲良くする」。
    • Completeness … インシデントを収束させる。対策を完了する。
    • Continuous … 対策を継続する。継続にレバレッジする技術を使う。

    View full-size slide

  26. Communication
    • セキュアコーディング研修や新卒研修でのトレーニング
    • SSS Tuesday (中途入社者向けのセキュリティオンボーディング )
    • 社内イベント(ペパボテックフライデー )で宣伝と啓蒙
    コミュニケーションの取り組み
    DevSecOps モデルの理解を得てもらうために様々な取り組みをしている
    研修での「sss」絵文字リアクションの様子
    インシデント訓練や研修時でも sssbot を利用

    View full-size slide

  27. Communication
    自動化(基盤構築)とコミュニケーションが DevSecOps 推進のポイント 💡
    DevSecOps の推進
    ● ツールの導入、自動化でセキュリティ対策を "継続" する
    ● セキュリティ文化を醸成するために "コミュニケーション" に力を入れる
    ● 上記を実施することで迅速・正確な対策を "完了" できる
    もちろん、組織によっては、これだけでは足りないこともあると思います。
    DevSecOps やシフトレフトへの切り替えは、組織ごとにアプローチが変わってきますが、参考になれば幸いです。

    View full-size slide

  28. We are hiring !
    以下、一つでもマッチする方を募集しています!!1
    我々のミッションや取り組みに共感、興味を持って頂いた方へ
    • 技術力、コミュニケーションで DevSecOps の推進に貢献したい方
    • プロダクトのセキュリティエンジニアリングに関わりたい方
    • この発表を聞いて「面白そう!」となった方
    「ペパボ 採用」[ 検索 ]
    https://recruit.pepabo.com/

    View full-size slide