「開発を加速するGitHub x Azure 最新開発ベストプラクティス vol.3」でお話した資料です。
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固める DevSecOps開発を加速するGitHub x Azure 最新開発ベストプラクティスvol.3
View Slide
岩永かづみ / Kazumi IWANAGA• Microsoft MVP for Azure• ZEN Architects 所属• GitHub公認トレーナー• 得意な領域• Infrastructure as Code• GitHub Actions による自動化• 技術コミュニティ• Code Polaris / Hack Everything.• @dz_• @dzeyelid• @dzeyelid• dzeyelid
ぶっちゃけ、セキュリティに割いている時間はないの。
シフトレフトで早めにセキュリティに対応することが有用なのは、めちゃくちゃ賛同!だけど、その時間がないんだよなぁ~
セキュリティのための時間とお金時間 お金
GitHub 使ってますか?
GitHub 使ってますか?GitHub ですぐできるセキュリティ対策、教えちゃいます
GitHub でできるセキュリティ対策Code scanningプルリクエストDependabotGitHub ActionsSecret scanning Secret scanningデフォルトブランチ作業ブランチpushpush
参考• GitHub セキュリティを備えた DevSecOps - Azure ArchitectureCenter | Microsoft Learn• コードとしてのインフラストラクチャ (IaC) 向け DevSecOps -Azure Architecture Center | Microsoft Learn
GitHubで始めるゼロ"コスト" セキュリティ対策Dependabot
DependabotGitHubで始める ゼロ"コスト" セキュリティ対策
DependabotCode scanningプルリクエストDependabotGitHub ActionsSecret scanning Secret scanningデフォルトブランチ作業ブランチpushpush
Dependabot は無料ですぐ使える• 依存関係のスキャン、脆弱性の検出を行う• パブリック、プライベートリポジトリで無料で使える• 検出の対象は、デフォルトブランチ
Dependabot 関連機能一覧機能(無料で使える) 説明Dependency graph 依存関係の一覧を表示するDependabot alerts 依存関係の中に脆弱性を検出した場合、通知するDependabot security updates 検出された脆弱性のある依存関係を対処するための提案を行う(プルリクエストが作成される)Dependabot version updates 依存関係のうち、新しいバージョンがあれば通知し、提案を行う(プルリクエストが作成される)機能(※) 説明Dependency review 依存関係をスキャンし、脆弱性を検出する機能が GitHub Actions のアクションとして提供されている= デフォルトブランチにマージする前に脆弱性を検出できる※ パブリックリポジトリ、または GitHub Advanced Security(GHAS)が適用されたプライベートリポジトリでしか利用できない
Dependabot デモ• Dependency graph を確認してみる• Dependabot alerts, security updates の有効化• Dependebot alerts を確認してみる• Dependabot security updates によるプルリクエストを確認してみる• Dependabot version updates の有効化、設定
Dependabot 参考• サプライ チェーンのセキュリティについて - GitHub Docs• 依存関係グラフについて - GitHub Docs• Dependabot アラートについて - GitHub Docs• Dependabot のセキュリティ アップデート - GitHub Docs• GitHub Dependabot のバージョンアップデートについて -GitHub Docs• 依存関係レビューの構成 - GitHub Docs
GitHubで始めるゼロ"タイム" セキュリティ対策Secret scanning, Code scanning: CodeQL
Secret scanningGitHubで始める ゼロ"タイム" セキュリティ対策
Secret scanningCode scanningプルリクエストDependabotGitHub ActionsSecret scanning Secret scanningデフォルトブランチ作業ブランチpushpush
Secret scanning(パブリックリポジトリ)• パートナープログラムで提供されているシークレットパターンが検出される• シークレットが検出されると、そのパートナーに通知され、シークレットの無効化などが対応される• リポジトリ管理者への通知は設定で有効化できる• 検出の契機は、push 時(どのブランチでも)• パブリックリポジトリの場合は無料で利用できる
Secret scanning 機能一覧パブリックリポジトリ プライベートリポジトリ プライベートリポジトリ(GHASあり)パートナーへの通知(防御実施) 必ず行われる 利用不可 有効 or 無効GitHub上での通知表示 有効 or 無効 利用不可 有効 or 無効Push protection 利用不可 利用不可 有効 or 無効カスタムパターン 利用不可 利用不可 追加できる(最大100)※ GHAS = GitHub Advanced Security
Secret scanning(GHASあり)• プライベートリポジトリで Secret scanning を利用したい場合は、GHAS が必要• パブリックリポジトリでできることに加え、Push protectionやカスタムパターンによる検出を行える
Secret scanning(GHASあり)Code scanningプルリクエストDependabotGitHub ActionsSecret scanning Secret scanningデフォルトブランチ作業ブランチpushpushPush protection
Secret scanning - Push protection
Secret scanning デモ• Secret scanning alerts を確認してみる• パブリックリポジトリでの設定• GitHub Enterprise 配下の設定
Secret scanning 参考• シークレット スキャンについて - GitHub Docs• secret scanning パターン - GitHub Docs• Secret scanning partner program - GitHub Docs• シークレット スキャンによるプッシュの保護 - GitHub EnterpriseCloud Docs(GitHub Enterprise)• シークレット スキャンのカスタム パターンの定義 - GitHubEnterprise Cloud Docs(GitHub Enterprise)
Code scanningGitHubで始める ゼロ"タイム" セキュリティ対策
GitHubが提供する静的解析をすぐ使える• 設定から静的解析をすぐ適用できる• より柔軟に設定したい場合は、GitHub Actions のワークフローを出力し、カスタマイズができる• パブリックリポジトリの場合は無料で利用できる• プライベートリポジトリで利用したい場合は、GitHub AdvancedSecurity(GHAS) が必要• 解析は GitHub が提供する CodeQL を用いており、様々な言語やフレームワークに対応しており、クエリを自作することもできる
CodeQL analysis 導入デモ• Setup の操作• Advanced を選択した場合のワークフロー• 検出されたアラートを確認してみる
CodeQL のセットアップは簡単
CodeQL デフォルト設定は自動判別リポジトリにあるコードの言語を検出して、対応した言語を設定してくれる
検出結果をGitHub上で確認できる
検出結果詳細コードの位置や、関連する脆弱性などの情報を確認できる
アプリケーションだけでなく、インフラの脆弱性もCode scanning: Overview
サードパーティツールの結果を取り込める• Code Scanning は、SARIF 形式の解析結果をアップロードするとOverview で統合して扱える
サードパーティーツールによる解析 デモ• tfsec アクションの紹介• microsoft/security-devops-action アクションの紹介• github/codeql-action/upload-sarif によるアップロード
tfsec• Terraform のコードを解析をしてくれる• Azure などの主要なプラットフォームプロバイダのインフラ構成の解析もサポートしている• aquasecurity/tfsec: Security scanner for your Terraformcode (github.com)
microsoft/security-devops-action• オープンソースの解析ツールを統合してスキャンを実行してくれる• Bandit, BinSkim, Eslint – Python, バイナリ, JavaScript など解析• Template Analyzer - ARMテンプレート、Bicep の解析• Terrascan – Terraform やコンテナ周りの解析• Trivy – コンテナ周りの解析• microsoft/security-devops-action: Microsoft SecurityDevOps for GitHub Actions.
GitHub でのセキュリティ対策、漏れはない?Microsoft Defender for GitHub
Microsoft Defender for DevOps
Defender for DevOps 資料• Microsoft Defender for DevOps - 利点と機能 | MicrosoftLearn• Microsoft Security DevOps GitHub アクションを構成する |Microsoft Learn
まとめ
GitHubセキュリティ関連の利用可否まとめパブリックリポジトリ プライベートリポジトリ プライベートリポジトリ(GHASあり)Dependency graph 〇 〇 〇Dependabot alerts 〇 〇 〇Dependabot securityupdates〇 〇 〇Dependabot versionupdates〇 〇 〇Dependency review 〇 × 〇Secret scanning 〇 × 〇Secret scanning(Pushprotection, カスタムパターン)× × 〇Code scanning 〇 × 〇
GitHub Advanced Security とは• GitHub Enterprise Cloud または Server のライセンスに付与する追加ライセンス• 前述のように、プライベートリポジトリでセキュリティ関連の機能をフルに利用するために必要
Thank you so much🍩.