Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

Threat Modeling

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

Inventory Management

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

SAST

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

Security Monitoring

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Communication

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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