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

DevSecOps入門:Security Development Lifecycleによる開発...

yuriemori
January 25, 2025

DevSecOps入門:Security Development Lifecycleによる開発プロセスのセキュリティ強化

2025/01/25の.NETラボで登壇させて頂いたときの資料です。

yuriemori

January 25, 2025
Tweet

More Decks by yuriemori

Other Decks in Technology

Transcript

  1. 今日話すこと • DevSecOpsで対応すべき脅威と対応策 • セキュリティを開発プロセスに組み込む • セキュリティ戦略の設計 • GitHub Advanced

    Securityの機能の仕組みの概要 • 考え方とか概要の紹介が中心(デモ見たかった人はすいません)
  2. AGENDA • Introduction • DevSecOpsとSDL(Security Development Lifecycle) • SDLのプロセスとセキュリティ対策のプラクティス •

    GitHub Advanced Securityによるセキュリティ脅威への対応 • まとめ • References
  3. YURIE MORI(森 友梨映) • DevOps Engineer(Sr.Consultant)@Avanade • Microsoft MVP for

    Developer Technologies(DevOps) 2024~ • Zennでの記事執筆(Azure DevOpsを使ったAgile/DevOpsの実践, エンタープライズでGiHub を使うとか) • TFSUGでの登壇 • 書籍執筆(AZ-400の試験対策本) • お仕事 • AgileとDevOpsの実践の支援 • エンタープライズでのDevOpsソリューション( Azure DevOps/GitHub )の導入・構築 • 技術スタック • Azure DevOps, GitHub, Azure, .NET, C# • Please follow me
  4. WHY DEVSECOPS NOW? DevOps • Dev(開発)とOps(運用)がコラボレーションによる無駄 のない(Lean)ソフトウェア開発 • 継続的に顧客に価値を届けるための人、プロセス、テクノ ロジーの集合

    DevSecOps • DevOpsの取り組みにおいてセキュリティをどのように担保 するか • DevOpsの実践はソフトウェア開発、デリバリーを高速 化するがその中でどのようにセキュリティを担保するか が重要になってくる Security/Complianceの担保 +
  5. Security Development Lifecycle(SDL) MicrosoftのMichael Howard、Steave Lipner によって提唱されたセキュリティをソフトウェア開発の初期段 階からリリース後の運用・保守に至るまでの各段階でセキュリティ対策を実践するためのフレームワーク • セキュリティ要件を明確化

    • 開発/運用するソフトウェアが満たす べきコンプライアンスやデータプライバ シー要件、データ保護方針、業界 標準へのセキュリティ規格の参照 • セキュリティに対する脅威、対 応策について学ぶ • 脅威モデリングを活用し、どこにセ キュリティリスクが潜んでいるかを洗 い出し、それに応じたアーキテクチャ 上の対策を検討 Implementation Design Requirement Training Response Release Verification • 定められたセキュリティ要件を満た すように、設計した対策を実装 • 開発環境をセキュリティで保護 • 出荷するコードの検証を行う • 静的コード解析 • シークレットスキャン • 構成の検証 • ペネトレーションテスト • 依存関係の脆弱性スキャン • 一気にリリースしない • 影響度ごとに展開範囲を定義し、影響度 が低い範囲(リング)から徐々に展開を 広げる • リング0: 開発チーム • リング1: 内部ユーザー • リング2: 外部の特定のユーザー • リング3: 全ユーザー • セキュリティインシデントが発生した 場合の対応手順を予め定義してお く • MS Defender for Cloud/for Identityを活用し、不審なアクティビ ティを監視/アラート通知ができるよ うにしておく
  6. DevSecOpsにおける脅威とセキュリティ対策 攻撃を受けやすいコード シークレットの流出による 不正アクセス 外部パッケージやOSSに含まれる 脆弱性 コンテナイメージに含まれる 脆弱性 ソースコードの静的解析(SAST) シークレット管理、

    シークレットスキャン 依存関係の脆弱性スキャン コンテナイメージのスキャン 対策 ソフトウェア開発中に発生しうる脅威 プラクティス 使用できるツール • GitHub Advanced SecurityのCodeQLス キャン • SonarQube/Cloud • MS Defender for DevOps • HashiCorp Vault • Gitleaks • Azure Key Vault • GitHub Advanced Security • OWASP Dependency-Check • MendBolt(旧Whitesource Bolt) • Snyk • GitHub Advanced Security • MS Defender for Containers • Docker Scout • Clair
  7. 脅威モデリングによるセキュリティ戦略の設計 構築しようとしているシステムに対して予測される攻撃、脅威、リスクを特定し、セキュリティ戦略を検討する Design Break Fix Verify • 構築しようとしているシステムの目 的、実行環境、シナリオなどシステ ムに関する情報をベースにデータフ

    ローダイアグラムを作成 • データフローダイアグラムをベースに、 STRIDEフレームワーク等を使用してシ ステムに対する潜在的な脅威を特定 • 特定した脅威に対して、対策を検 討 • 考えた対策がセキュリティ要件をク リアしているかを確認 Step1:データフローの可視化 Step2:脅威の特定 Step3:脅威への対策を識別 Step4:対策の有効性の検証 Design
  8. STRIDEによる脅威の分解と特定 システムに対する脅威を5つのカテゴリの頭文字を合わせたもの。各カテゴリごとに脅威を分類し、それに対する対 策を考える 脅威の種類 具体例 対策例 Spoofing (なりすまし) 攻撃者が他のユーザーやシステムになりす ます

    • 多要素認証 • 強力なパスワードポリシー • 証明書の使用 Tampering (改ざん) データが不正に変更される • 通信暗号化 Repudiation (否認) 攻撃者がログの削除や改ざんを行ってユー ザーが行った操作を否認する • ログの監査 Information disclosure (情報漏洩) 個人情報や資格情報などの機密情報が 不正に取得される • データのアクセス制御 • 暗号化による保護 • セキュアな通信プロトコル Denial of service (サービス拒否) サービスに過剰な負荷を与えて利用不可 状態にする • Rate limit • WAF(Web Application Firewall) Elevation of privilege (権限昇格) 攻撃者が不正に強力な権限(管理者権 限など)を取得して操作する • 最小特権の原則 • RBAC Design
  9. GitHub Advanced SecurityのCodeQLによるコードの静的解析 Repository 分析対象のソースコード my-custom-suite.qls より高度な解析を行う場合、カスタ ムのクエリスイートファイルを作成して 解析に使用 GitHub

    Actions github/codeql-action/init@v2 CodeQL データベースを作成 リレーショナル データと ソース参照を生成 データベースに対してCodeQL クエリを実行(脆弱性の特定) 分析結果の出力 クエリ実行結果の解釈 SARIFファイル エクストラクタ CodeQLによるソーススキャンはGitHub Actionsによって実行される クエリの参照 参照 出力 SQL/path injection, XSSなど一般的なセキュリティ脆弱性を検知する。 分析対象のソースコードを言語ごとにDB化(codeql dbの作成)して、クエリを実行することによって ソースの解析を行う。 高度な分析をしたい場合は自分でカスタムクエリを書くことも可 Verification バリアント分析: 既知のセキュリティ脆弱性をシードとして、 類似の脆弱性を検出する Response
  10. CodeQLの様々なユースケース • ケース1: • ソースコードはGitHubにある。 • リポジトリはPublic • →CodeQL CLIは使わなくていい。リポジトリのcode

    securityから有効化できる • →GitHubのパブリックリポジトリではCodeQLが無料で使用できる • ケース2: • ソースコードはGitHub外(Azure DevOpsとか) • コードスキャンでCodeQL使いたい • GitHubのリポジトリは持っていない • →CodeQL CLIを使用することでローカルでCodeQLによる分析を実行できる。 • →ただ、分析結果をAzure DevOps上でレンダリングするとかは無理なので、分析結果の SARIFファイルのviewerが必要 • →Azure DevOpsでCodeQLが使いたいなら、いっそのことGitHub Advanced Security for Azure DevOpsを使ったがいいかも(別途課金が必要)
  11. GitHub Advisory Database CVE*1に基づいて脆弱性を一意に識別 CWE *2に基づいて脆弱性を分類 CVCC *3に基づいて 脆弱性をスコアリング Repository

    分析対象のソースコード Package.jsonなど依存関係を定義し たマニフェストファイル Dependency Graph ①リポジトリの依存関係の定義ファイル、 GitHub Advisoryに更新が入ると 依存関係グラフが更新される Dependabotアラート Dependabot セキュリティアップデート Dependabot バージョンアップデート セキュリティ的な脆弱性 バージョン乖離による脆弱性 自動アップデート Pull Request アラート生成 ③検知された脆弱性の種類により、自 動アップデートのPRが自動で作成される Dependabotによる 自動アップデートのPR作成 Dependency Review ②依存関係由来の脆弱性が検知さ れるとDependabotアラートが生成 ↑PRの変更適用による 依存関係変更の表示 GitHub Advanced Securityによる依存関係の 脆弱性の検知と対応 Verification • CVE(Common Vulnerability and Exposures)*1: • ソフトウェアの脆弱性やセキュリティリスクを一意に管 理する識別子 • CWE (Common Weakness Enumeration)*2: • ソフトウェアにおける脆弱性を分類・整理した体系 • CVCC (Common Vulnerability Scoring System)*3: • 脆弱性の深刻度を評価するためのスコアリングシステム Response
  12. GitHub Advanced SecurityをAzure DevOpsで使う • GitHub Advanced SecurityがAzure DevOpsでも使えるGitHub Advanced

    Security for Azure DevOps(GHAzDO)という機能がある • GitHubアカウントは不要 • 以下の条件をクリアすることで有効にできる • 導入する人がProject Collection Administratorsの権限を持っている • 導入対象のReposのソース管理方式がGitであること • Azure DevOpsの使用料とは別でお値段が掛かるのでご注意($49/月 ※1ア クティブコミッター) • Organization/Project/Reposのレベルで有効化が可能
  13. GHAS/GHAzDOとMS Defender for Cloudの統合(1/3) GitHub Advanced Security(GHAS)またはGitHub Advanced Security for

    Azure DevOpsとMS Defender for Cloudを 統合することによって、コードベース/DevOps Platformのセキュリティ状況とデプロイ先のセキュリティ状況を監視することができる。 DevOps Platformだけでなくクラウド環境も含めた包括的なDevSecOpsの実現が可能 Response
  14. Universe2024で発表されたアップデート: Found Means FIX( 見つけたら即修正) Copilot Autofix for CodeQL Code

    scanning alertがGA Security Campaign • CodeQLで検出された脆弱性をCopilotが自動で修正してくれる • 全パブリックリポジトリで無料で利用可能 • 一度に最大数千件のセキュリティアラートをトリアージして、タイプ、重大度、 リポジトリ、チームごとにフィルタリング→Copilot Autofix による修正提案 • セキュリティ負債の一括返済
  15. • DevSecOps • https://learn.microsoft.com/ja-jp/devops/operate/security-in-devops • 継続的セキュリティ • https://learn.microsoft.com/ja-jp/training/modules/explore-devops-continuous-security-operations/2-explore-continuous- security •

    SDL(Security Development Lifecycle) • https://learn.microsoft.com/ja-jp/compliance/assurance/assurance-microsoft-security-development-lifecycle • 脅威モデリング • https://learn.microsoft.com/ja-jp/training/modules/tm-introduction-to-threat-modeling/1b-threat-modeling-phases?ns-enrollment- type=learningpath&ns-enrollment-id=learn.security.tm-threat-modeling-fundamentals • https://learn.microsoft.com/ja-jp/azure/well-architected/security/threat-model • Microsoft Threat Modeling Tool • https://learn.microsoft.com/ja-jp/azure/security/develop/threat-modeling-tool-getting-started#analyzing-threats • GitHub Advanced SecurityのCodeQL/依存関係管理(以下blogに出典まとまってます) • https://zenn.dev/yuriemori/articles/45fee4f19a9184 • GHAS/GHAzDOとMS Defender for Cloudの統合(以下blogに出典まとまってます) • https://zenn.dev/yuriemori/articles/0d7ef5b16c9655 • https://zenn.dev/yuriemori/articles/0d7ef5b16c9655 • Found Means FIX • https://github.blog/news-insights/product-news/universe-2024-previews-releases/ References