Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DevSecOps入門:Security Development Lifecycleによる開発...
Search
yuriemori
January 25, 2025
Technology
0
130
DevSecOps入門:Security Development Lifecycleによる開発プロセスのセキュリティ強化
2025/01/25の.NETラボで登壇させて頂いたときの資料です。
yuriemori
January 25, 2025
Tweet
Share
More Decks by yuriemori
See All by yuriemori
DevOps Beyond Azure DevOps~Azureサービスで広がるDevOpsの可能性~
yuriemori
0
170
DevOpsに関するあるあるな誤解
yuriemori
0
130
GitHubで実現する開発ライフサイクルの効率化
yuriemori
1
150
Azure Pipelinesを使用したCICDベースラインアーキテクチャ実践
yuriemori
0
580
マルチテナントでのサービスコネクションを使用したAzure DevOps⇔Azure でのデプロイ実践
yuriemori
0
330
全てのエンジニアに伝えたいDevSecOpsのお話(入門)
yuriemori
0
190
Azure DevOpsを活用したマルチチーム開発: ソース管理とセキュアプラクティス
yuriemori
0
280
エンジニアのキャリア開発と自己研鑽について
yuriemori
0
460
忙しい人のためのClean Architecture
yuriemori
1
270
Other Decks in Technology
See All in Technology
商品レコメンドでのexplicit negative feedbackの活用
alpicola
2
500
embedパッケージを深掘りする / Deep Dive into embed Package in Go
task4233
1
240
信頼性を支えるテレメトリーパイプラインの構築 / Building Telemetry Pipeline with OpenTelemetry
ymotongpoo
8
2.4k
Mocking your codebase without cursing it
gaqzi
0
110
dbtを中心にして組織のアジリティとガバナンスのトレードオンを考えてみた
gappy50
0
370
Site Reliability Engineering on Kubernetes
nwiizo
6
2.1k
PaaSの歴史と、 アプリケーションプラットフォームのこれから
jacopen
7
1.7k
第27回クラウド女子会 ~re:Invent 振り返りLT会~ 宣言型ポリシー、使ってみたらこうだった!
itkr2305
0
220
Building Scalable Backend Services with Firebase
wisdommatt
0
110
iPadOS18でフローティングタブバーを解除してみた
sansantech
PRO
1
180
カップ麺の待ち時間(3分)でわかるPartyRockアップデート
ryutakondo
0
160
2025-01-24-SRETT11-OpenTofuについてそろそろ調べてみるか
masasuzu
0
110
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
39
1.9k
Side Projects
sachag
452
42k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
98
18k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
A better future with KSS
kneath
238
17k
How to train your dragon (web standard)
notwaldorf
89
5.8k
Done Done
chrislema
182
16k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Code Review Best Practice
trishagee
65
17k
Transcript
DevSecOps入門: Security Development Lifecycleに よる開発プロセスのセキュリティ強化 2025/01/25 Yurie Mori
INTRODUCTION
今日話すこと • DevSecOpsで対応すべき脅威と対応策 • セキュリティを開発プロセスに組み込む • セキュリティ戦略の設計 • GitHub Advanced
Securityの機能の仕組みの概要 • 考え方とか概要の紹介が中心(デモ見たかった人はすいません)
AGENDA • Introduction • DevSecOpsとSDL(Security Development Lifecycle) • SDLのプロセスとセキュリティ対策のプラクティス •
GitHub Advanced Securityによるセキュリティ脅威への対応 • まとめ • References
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
DevSecOpsとSDL (Security Development Lifecycle)
WHY DEVSECOPS NOW? DevOps • Dev(開発)とOps(運用)がコラボレーションによる無駄 のない(Lean)ソフトウェア開発 • 継続的に顧客に価値を届けるための人、プロセス、テクノ ロジーの集合
DevSecOps • DevOpsの取り組みにおいてセキュリティをどのように担保 するか • DevOpsの実践はソフトウェア開発、デリバリーを高速 化するがその中でどのようにセキュリティを担保するか が重要になってくる Security/Complianceの担保 +
セキュリティのシフトレフト セキュリティ対策を後回しにしてしまうと、リリースの直前にセキュリティの問題が発覚し、修正のために膨大な時 間やコストがかかってしまう
継続的なセキュリティ DevOps のスピード感に、自動化プラクティス、運用環境、その他のパイプライン要素にセキュリティを組み込む 画像出典:https://learn.microsoft.com/ja-jp/training/modules/explore-devops-continuous- security-operations/2-explore-continuous-security
SDLのプロセスとセキュリティ対策のプ ラクティス
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を活用し、不審なアクティビ ティを監視/アラート通知ができるよ うにしておく
• 出荷されるソースコードは安全か? • 外部のパッケージやライブラリを使用している場合、それは安全か? • コンテナは安全? • いかに即座に脆弱性を検知できるか • 特定された脆弱性はいかに即座に修正できるか(MTTR:
Mean Time to Recovery) DevSecOpsにおける検討事項
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
脅威モデリングによるセキュリティ戦略の設計 構築しようとしているシステムに対して予測される攻撃、脅威、リスクを特定し、セキュリティ戦略を検討する Design Break Fix Verify • 構築しようとしているシステムの目 的、実行環境、シナリオなどシステ ムに関する情報をベースにデータフ
ローダイアグラムを作成 • データフローダイアグラムをベースに、 STRIDEフレームワーク等を使用してシ ステムに対する潜在的な脅威を特定 • 特定した脅威に対して、対策を検 討 • 考えた対策がセキュリティ要件をク リアしているかを確認 Step1:データフローの可視化 Step2:脅威の特定 Step3:脅威への対策を識別 Step4:対策の有効性の検証 Design
STRIDEによる脅威の分解と特定 システムに対する脅威を5つのカテゴリの頭文字を合わせたもの。各カテゴリごとに脅威を分類し、それに対する対 策を考える 脅威の種類 具体例 対策例 Spoofing (なりすまし) 攻撃者が他のユーザーやシステムになりす ます
• 多要素認証 • 強力なパスワードポリシー • 証明書の使用 Tampering (改ざん) データが不正に変更される • 通信暗号化 Repudiation (否認) 攻撃者がログの削除や改ざんを行ってユー ザーが行った操作を否認する • ログの監査 Information disclosure (情報漏洩) 個人情報や資格情報などの機密情報が 不正に取得される • データのアクセス制御 • 暗号化による保護 • セキュアな通信プロトコル Denial of service (サービス拒否) サービスに過剰な負荷を与えて利用不可 状態にする • Rate limit • WAF(Web Application Firewall) Elevation of privilege (権限昇格) 攻撃者が不正に強力な権限(管理者権 限など)を取得して操作する • 最小特権の原則 • RBAC Design
Microsoft Threat Modeling Toolによる 脅威モデリング データフロー↓ STRIDEベースの脅威の 検出→ https://learn.microsoft.com/ja-jp/azure/security/develop/threat-modeling-tool
GitHub Advanced Security によるセキュリティ脅威への対応
GitHub Advanced Securityのセキュリティ機能 • コードスキャン • シークレットスキャン • 依存関係の脆弱性スキャン
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
CodeQLによる分析を外部から使いたい CodeQL CLIを使うことによってCodeQLの機能を使用できる
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を使ったがいいかも(別途課金が必要)
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
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のレベルで有効化が可能
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
GHAS/GHAzDOとMS Defender for Cloudの統合(2/3) Response
GHAS/GHAzDOとMS Defender for Cloudの統合(3/3) DevOps上のセキュリティ的な脆弱性がいくつあるか、コードスキャンによって何件の脆弱性が確認されたかなど、 DevOpsプラットフォーム上(GitHub、Azure DevOpsなど)で確認されたセキュリティの状態を確認するこ とができる Response
Universe2024で発表されたアップデート: Found Means FIX( 見つけたら即修正) Copilot Autofix for CodeQL Code
scanning alertがGA Security Campaign • CodeQLで検出された脆弱性をCopilotが自動で修正してくれる • 全パブリックリポジトリで無料で利用可能 • 一度に最大数千件のセキュリティアラートをトリアージして、タイプ、重大度、 リポジトリ、チームごとにフィルタリング→Copilot Autofix による修正提案 • セキュリティ負債の一括返済
まとめ
• ソフトウェア開発の早期段階でセキュリティ対策を実施することでセキュリティ負債の増大、リリース前 の手戻り発生、インシデント発生などの悲しい事故を回避 • SDLなどの方法論の整備・発展とGitHub Advanced Securityなどのツールによって以前より比 較的容易にセキュリティを開発プロセスに組み込みやすくなっている(一生懸命YAMLを書かなくて も最低限のチェックができる。。。) •
ので、積極的にDevSecOpsを実践していきましょうね٩(`・ω・´)و まとめ
• 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
THANK YOU ☺ Yurie Mori X: @1115_lilium