Slide 1

Slide 1 text

生成AI時代のセキュアCI/CDとソース管理: GitHub Advanced Securityと Copilotを活用したDevSecOps 森 友梨映(Yurie Mori) Avanade Japan

Slide 2

Slide 2 text

Agenda  Why DevSecOps?  コードベースをセキュアにするために  CopilotとコラボレーションするためのCI/CDプロセス

Slide 3

Slide 3 text

森 友梨映(Yurie Mori) • DevOps Engineer (Sr.Consultant)@Avanade Japan • Microsoft MVP for Developer Technologies(DevOps) 2024~ • Zennでのブログ執筆 • 各種カンファレンス、勉強会での登壇 • エンタープライズでのDevOpsソリューション(Azure DevOps/GitHub)の導入・構築 • DevOps/DevSecOpsの技術アドバイザリ • 技術スタック • Azure DevOps, GitHub, Azure, .NET, C# • Please follow me

Slide 4

Slide 4 text

Why DevSecOps?

Slide 5

Slide 5 text

「後回しにするほど高くつく」セキュリティリスクの負債 セキュリティ対策を後回しにしてしまうと、リリースの直前にセキュリティの問題が発覚し、修正のために膨大な時間やコストが かかってしまう。そのため、セキュリティ対策を開発プロセスの早期段階で実施する「セキュリティのシフトレフト」が必要 Plan Develop Deliver Test Operate Release! リリースの直前にソースの統合やテストを実行する と、 重大なセキュリティリスクや脆弱性、障害が見つ かったときのリカバリに掛かるコストが膨大になる 直前にバグやコンフリクト、セキュリティ脆弱 性がたくさん 見つかってリリースが遅れる、 リリース後にインシデントが発生する Plan Develop Operate Deliver Release! ソフトウェア開発ライフサイクルの早期にテスト、 セキュリティ対策を組み込んで継続的にチェックす ることによって脆弱性や障害を早期に発見する 継続的なテストやセキュリティ対策により、 早期に品質が保証されるのでリリース時や リリース後のリスクが低下する

Slide 6

Slide 6 text

継続的なセキュリティ DevSecOps=DevOps のスピード感に、自動化プラクティス、運用環境、その他のパイプライン要素にセキュリティを組み込む 画像出典:https://learn.microsoft.com/ja-jp/training/modules/explore-devops-continuous-security- operations/2-explore-continuous-security

Slide 7

Slide 7 text

コードベースをセキュアにするために

Slide 8

Slide 8 text

コードベースに対する脅威とセキュリティ対策 攻撃を受けやすいコード シークレットの流出による 不正アクセス 外部パッケージやOSSに含まれる 脆弱性 コンテナイメージに含まれる 脆弱性 ソースコードの静的解析(SAST) シークレット管理、 シークレットスキャン 依存関係の脆弱性スキャン コンテナイメージのスキャン 対策 ソフトウェア開発中に発生しうる脅威 プラクティス

Slide 9

Slide 9 text

GitHub Advanced Security(GHAS) GitHub Code Security  $30/1 active committer/月  Code Scanning  コードに含まれる脆弱性の検知  Dependabot  OSSの依存関係に含まれる脆弱性の検知  Copilot Autofix  Copilotによる脆弱性を含むコードの自動修正提 案  Security Campaign  これまで蓄積されたセキュリティ的な脆弱性を最 大数1000件規模でトリアージ&修正 GitHub Secret Protection  $19/1 active committer/月  Secret Scanning  Push Protection: シークレットが含まれる変更を pushさせないようにする  AIによるパスワード混入の検出 • *2025年3月まではこれら2つの機能はtwo-in-oneでGitHub Advanced Securityで$49で提供されている • *2025年4月よりこの2つの料金体系で分けて提供される • *DependabotはGHASがなくともPrivate Reposで利用可

Slide 10

Slide 10 text

GitHub Advanced Securityによるコードベースの保護 攻撃を受けやすいコード シークレットの流出による 不正アクセス 外部パッケージやOSSに含まれる 脆弱性 コンテナイメージに含まれる 脆弱性 ソースコードの静的解析(SAST) シークレット管理、 シークレットスキャン 依存関係の脆弱性スキャン コンテナイメージのスキャン 対策 ソフトウェア開発中に発生しうる脅威 プラクティス 使用できるツール • GitHub Code Security • Code Scanning • Azure Key Vault/GitHub Secret • GitHub Secret Protection • Secret Scanning • Push Protection • GitHub Code Security • Dependabot • MS Defender for Containers

Slide 11

Slide 11 text

Copilot Autofix: Copilotによる脆弱性の修正提案  Code Scanningで検出された脆弱性に対して、Copilotが修正案を生成して提案  GitHub Copilotのライセンスは不要、GitHub Code Securityのライセンスに含まれる  Copilot Autofix による脆弱性修正の提案を行うために、Code Scanning の解析結果から GPT-4o に以下の情報 が送信されます  対象ブランチの最新のソースコード  ソース(入力)やシンク(出力)など、データの流れに関係する位置情報  アラートメッセージやデータフロー内で参照された場所の、周辺のコードスニペット関連する各ファイルの冒頭最大10行のコード  問題を検出した CodeQL クエリのヘルプテキスト  修正プログラムを生成するプロセスでは、上記の範囲を超えてユーザーのデータが収集または利用されることはない

Slide 12

Slide 12 text

CodeQLによって検知された脆弱性の確認

Slide 13

Slide 13 text

Copilot Autofixによる修正の提案(1/2)

Slide 14

Slide 14 text

Copilot Autofixによる修正の提案(2/2)

Slide 15

Slide 15 text

Copilotとコラボレーションするため のCI/CDプロセス

Slide 16

Slide 16 text

GitHub Repository PR Check • Build • Unit Test GitHub Actions Dev • Code Scanning • Dependency Check • Secret Scanning • Build • Unit Test • Integration Test • Publish Package • Deploy GitHub Actions GitHub Secret Protection GitHub Code Security CI/CD • Code Scanning • Dependency Check • Secret Scanning GitHub Secret Protection GitHub Code Security Integrate Security & Copilot to CI/CD GitHub Repository Review Provide suggestion for fix Merge to main Create PR Observe Publish build artifacts to Packages GitHub Packages GitHub Secrets Refer secrets Dev

Slide 17

Slide 17 text

GitHub Advanced Securityによるコードベースの保護 • ymlを書かずにGUIベースの設定で基本的なセキュリティチェックを有効化 • コードベースに対する広範なセキュリティリスクに対応 • 攻撃を受けやすいセキュリティ的に脆弱なコード(SQLインジェクションやXSS, パスインジェクション) • シークレットのハードコード • 外部のライブラリに起因する脆弱性やバージョン乖離によるセキュリティリスク • ※より高度な分析や特殊なシナリオでのコードスキャンのためにはCodeQLクエリのカスタムが必要だが、基 本的な脆弱性はデフォルトの設定でコードを書かずに有効化できる • セキュリティリスクの即時検出→Copilotによる修正(Found means fix) • 履歴スキャンによるコードベースの継続的監視による、運用/保守の負担軽減

Slide 18

Slide 18 text

Thank you ☺