$30 off During Our Annual Pro Sale. View Details »

GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps

GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps

「開発を加速するGitHub x Azure 最新開発ベストプラクティス vol.3」でお話した資料です。

Kazumi IWANAGA

June 05, 2023
Tweet

More Decks by Kazumi IWANAGA

Other Decks in Technology

Transcript

  1. GitHub と Azure でアプリ
    ケーションとインフラストラクチャ
    の守りを固める DevSecOps
    開発を加速するGitHub x Azure 最新開発ベストプラクティス
    vol.3

    View Slide

  2. 岩永かづみ / Kazumi IWANAGA
    • Microsoft MVP for Azure
    • ZEN Architects 所属
    • GitHub公認トレーナー
    • 得意な領域
    • Infrastructure as Code
    • GitHub Actions による自動化
    • 技術コミュニティ
    • Code Polaris / Hack Everything.
    • @dz_
    • @dzeyelid
    • @dzeyelid
    • dzeyelid

    View Slide

  3. ぶっちゃけ、セキュリティに割いて
    いる時間はないの。

    View Slide

  4. シフトレフトで早めにセキュリティに対応することが有用なのは、
    めちゃくちゃ賛同!
    だけど、その時間がないんだよなぁ~

    View Slide

  5. セキュリティのための時間とお金
    時間 お金

    View Slide

  6. GitHub 使ってますか?

    View Slide

  7. GitHub 使ってますか?
    GitHub ですぐできるセキュリティ対策、
    教えちゃいます

    View Slide

  8. GitHub でできるセキュリティ対策
    Code scanning
    プルリクエスト
    Dependabot
    GitHub Actions
    Secret scanning Secret scanning
    デフォルトブランチ
    作業ブランチ
    push
    push

    View Slide

  9. 参考
    • GitHub セキュリティを備えた DevSecOps - Azure Architecture
    Center | Microsoft Learn
    • コードとしてのインフラストラクチャ (IaC) 向け DevSecOps -
    Azure Architecture Center | Microsoft Learn

    View Slide

  10. GitHubで始める
    ゼロ"コスト" セキュリティ対策
    Dependabot

    View Slide

  11. Dependabot
    GitHubで始める ゼロ"コスト" セキュリティ対策

    View Slide

  12. Dependabot
    Code scanning
    プルリクエスト
    Dependabot
    GitHub Actions
    Secret scanning Secret scanning
    デフォルトブランチ
    作業ブランチ
    push
    push

    View Slide

  13. Dependabot は無料ですぐ使える
    • 依存関係のスキャン、脆弱性の検出を行う
    • パブリック、プライベートリポジトリで無料で使える
    • 検出の対象は、デフォルトブランチ

    View Slide

  14. Dependabot 関連機能一覧
    機能(無料で使える) 説明
    Dependency graph 依存関係の一覧を表示する
    Dependabot alerts 依存関係の中に脆弱性を検出した場合、通知する
    Dependabot security updates 検出された脆弱性のある依存関係を対処するための提案を行う(プルリ
    クエストが作成される)
    Dependabot version updates 依存関係のうち、新しいバージョンがあれば通知し、提案を行う(プルリク
    エストが作成される)
    機能(※) 説明
    Dependency review 依存関係をスキャンし、脆弱性を検出する機能が GitHub Actions の
    アクションとして提供されている
    = デフォルトブランチにマージする前に脆弱性を検出できる
    ※ パブリックリポジトリ、または GitHub Advanced Security(GHAS)
    が適用されたプライベートリポジトリでしか利用できない

    View Slide

  15. Dependabot デモ
    • Dependency graph を確認してみる
    • Dependabot alerts, security updates の有効化
    • Dependebot alerts を確認してみる
    • Dependabot security updates によるプルリクエストを確認して
    みる
    • Dependabot version updates の有効化、設定

    View Slide

  16. Dependabot 参考
    • サプライ チェーンのセキュリティについて - GitHub Docs
    • 依存関係グラフについて - GitHub Docs
    • Dependabot アラートについて - GitHub Docs
    • Dependabot のセキュリティ アップデート - GitHub Docs
    • GitHub Dependabot のバージョンアップデートについて -
    GitHub Docs
    • 依存関係レビューの構成 - GitHub Docs

    View Slide

  17. GitHubで始める
    ゼロ"タイム" セキュリティ対策
    Secret scanning, Code scanning: CodeQL

    View Slide

  18. Secret scanning
    GitHubで始める ゼロ"タイム" セキュリティ対策

    View Slide

  19. Secret scanning
    Code scanning
    プルリクエスト
    Dependabot
    GitHub Actions
    Secret scanning Secret scanning
    デフォルトブランチ
    作業ブランチ
    push
    push

    View Slide

  20. Secret scanning(パブリックリポジトリ)
    • パートナープログラムで提供されているシークレットパターンが検出さ
    れる
    • シークレットが検出されると、そのパートナーに通知され、シークレット
    の無効化などが対応される
    • リポジトリ管理者への通知は設定で有効化できる
    • 検出の契機は、push 時(どのブランチでも)
    • パブリックリポジトリの場合は無料で利用できる

    View Slide

  21. Secret scanning 機能一覧
    パブリックリポジトリ プライベートリポジトリ プライベートリポジトリ
    (GHASあり)
    パートナーへの通知(防御実施) 必ず行われる 利用不可 有効 or 無効
    GitHub上での通知表示 有効 or 無効 利用不可 有効 or 無効
    Push protection 利用不可 利用不可 有効 or 無効
    カスタムパターン 利用不可 利用不可 追加できる(最大100)
    ※ GHAS = GitHub Advanced Security

    View Slide

  22. Secret scanning(GHASあり)
    • プライベートリポジトリで Secret scanning を利用したい場合は、
    GHAS が必要
    • パブリックリポジトリでできることに加え、Push protectionやカスタ
    ムパターンによる検出を行える

    View Slide

  23. Secret scanning(GHASあり)
    Code scanning
    プルリクエスト
    Dependabot
    GitHub Actions
    Secret scanning Secret scanning
    デフォルトブランチ
    作業ブランチ
    push
    push
    Push protection

    View Slide

  24. Secret scanning - Push protection

    View Slide

  25. Secret scanning デモ
    • Secret scanning alerts を確認してみる
    • パブリックリポジトリでの設定
    • GitHub Enterprise 配下の設定

    View Slide

  26. Secret scanning 参考
    • シークレット スキャンについて - GitHub Docs
    • secret scanning パターン - GitHub Docs
    • Secret scanning partner program - GitHub Docs
    • シークレット スキャンによるプッシュの保護 - GitHub Enterprise
    Cloud Docs(GitHub Enterprise)
    • シークレット スキャンのカスタム パターンの定義 - GitHub
    Enterprise Cloud Docs(GitHub Enterprise)

    View Slide

  27. Code scanning
    GitHubで始める ゼロ"タイム" セキュリティ対策

    View Slide

  28. GitHub でできるセキュリティ対策
    Code scanning
    プルリクエスト
    Dependabot
    GitHub Actions
    Secret scanning Secret scanning
    デフォルトブランチ
    作業ブランチ
    push
    push

    View Slide

  29. GitHubが提供する静的解析をすぐ使える
    • 設定から静的解析をすぐ適用できる
    • より柔軟に設定したい場合は、GitHub Actions のワークフローを出力し、カ
    スタマイズができる
    • パブリックリポジトリの場合は無料で利用できる
    • プライベートリポジトリで利用したい場合は、GitHub Advanced
    Security(GHAS) が必要
    • 解析は GitHub が提供する CodeQL を用いており、様々な言語や
    フレームワークに対応しており、クエリを自作することもできる

    View Slide

  30. CodeQL analysis 導入デモ
    • Setup の操作
    • Advanced を選択した場合のワークフロー
    • 検出されたアラートを確認してみる

    View Slide

  31. CodeQL のセットアップは簡単

    View Slide

  32. CodeQL デフォルト設定は自動判別
    リポジトリにあるコードの言語を検出して、対応した言語を設定してくれる

    View Slide

  33. 検出結果をGitHub上で確認できる

    View Slide

  34. 検出結果詳細
    コードの位置や、関連する脆弱性などの情報を確認できる

    View Slide

  35. アプリケーションだけでなく、
    インフラの脆弱性も
    Code scanning: Overview

    View Slide

  36. サードパーティツールの結果を取り込める
    • Code Scanning は、SARIF 形式の解析結果をアップロードすると
    Overview で統合して扱える

    View Slide

  37. サードパーティーツールによる解析 デモ
    • tfsec アクションの紹介
    • microsoft/security-devops-action アクションの紹介
    • github/codeql-action/upload-sarif によるアップロード

    View Slide

  38. tfsec
    • Terraform のコードを解析をしてくれる
    • Azure などの主要なプラットフォームプロバイダのインフラ構成の解
    析もサポートしている
    • aquasecurity/tfsec: Security scanner for your Terraform
    code (github.com)

    View Slide

  39. microsoft/security-devops-action
    • オープンソースの解析ツールを統合してスキャンを実行してくれる
    • Bandit, BinSkim, Eslint – Python, バイナリ, JavaScript など解析
    • Template Analyzer - ARMテンプレート、Bicep の解析
    • Terrascan – Terraform やコンテナ周りの解析
    • Trivy – コンテナ周りの解析
    • microsoft/security-devops-action: Microsoft Security
    DevOps for GitHub Actions.

    View Slide

  40. GitHub でのセキュリティ対策、
    漏れはない?
    Microsoft Defender for GitHub

    View Slide

  41. Microsoft Defender for DevOps

    View Slide

  42. Defender for DevOps 資料
    • Microsoft Defender for DevOps - 利点と機能 | Microsoft
    Learn
    • Microsoft Security DevOps GitHub アクションを構成する |
    Microsoft Learn

    View Slide

  43. まとめ

    View Slide

  44. GitHubセキュリティ関連の利用可否まとめ
    パブリックリポジトリ プライベートリポジトリ プライベートリポジトリ
    (GHASあり)
    Dependency graph 〇 〇 〇
    Dependabot alerts 〇 〇 〇
    Dependabot security
    updates
    〇 〇 〇
    Dependabot version
    updates
    〇 〇 〇
    Dependency review 〇 × 〇
    Secret scanning 〇 × 〇
    Secret scanning(Push
    protection, カスタムパターン)
    × × 〇
    Code scanning 〇 × 〇

    View Slide

  45. GitHub Advanced Security とは
    • GitHub Enterprise Cloud または Server のライセンスに付与す
    る追加ライセンス
    • 前述のように、プライベートリポジトリでセキュリティ関連の機能をフル
    に利用するために必要

    View Slide

  46. Thank you so much🍩.

    View Slide