☁️

GitHub Advanced SecurityとMicrosoft Defender for Cloudの統合【調査編】

2024/09/01に公開

AZ-400の学習ガイド(おそらく2024年7月26日の更新?)に、表題の内容が追加されていたので、今回はこちらの内容について実施ステップまで調べた結果を備忘がてら書いておきます。
実装編は後日どこかで発表するかも!

GitHub Advanced Security

GitHub Advanced Security(長いので以下GHASとします)は、GitHubが提供している、コードの品質向上およびセキュリティリスク軽減のためのツールセットです。

GHASを使うために必要な条件は以下となります。

  • GitHub Enterprise Cloud または GitHub Enterprise Server のエンタープライズアカウントを持っていること
  • (プライベートリポジトリに対するGHASの使用について)GHASのライセンスが必要です
    ※パブリックリポジトリでは一部の機能が無料で利用できます。

主な機能は以下の通り。

機能 説明
コードスキャン ソースコード内の脆弱性やセキュリティリスクを自動で検出し、開発者が問題を修正できるよう支援します。
シークレットスキャン リポジトリに誤ってコミットされたAPIキーやパスワードなどのシークレット情報を検出し、速やかに警告します。
Dependabot プロジェクトで使用される外部ライブラリやパッケージに既知の脆弱性がないかをチェックし、セキュリティリスクを低減します。
プッシュ保護 機密情報やセキュリティ上のリスクがあるコードのプッシュを防止し、リポジトリへの影響を未然に防ぎます。
  • 依存関係のレビュー
    PRをマージするときに、依存関係の変更がプロジェクトに与える影響を評価

https://docs.github.com/ja/get-started/learning-about-github/about-github-advanced-security?wt.mc_id=MVP_376528

GitHub Advanced Security for Azure DevOps

ちなみに、GHASをAzure DevOpsのAzure Reposに対して使える、GitHub Advanced Security for Azure DevOps(長いので以下GHAzDOとします)というサービスもあります。
これは書いてある通りAzure DevOps環境でGitHub Advanced Securityの機能が使えるよ!というものです。利用の条件としては、

  • Azure DevOps Services(クラウド版)を使っていること(オンプレ版のAzure DevOps Serverでは使えないようです)
  • GitリポジトリのAzure Reposがあること(GHAzDOはGitリポジトリでのみ機能する)
  • 導入する人がProject Collection Administratorの権限を持っていること

※GHAzDOの利用に際して、GitHubのアカウントは不要です

Instead of registering to get your organization onboarded to Advanced Security, we’ve done away with the registration process entirely. Any Azure DevOps Project Collection Administrator (PCA) can now enable Advanced Security protections for their orgs/projects/repos through the Azure DevOps configuration settings.

https://devblogs.microsoft.com/devops/now-generally-available-github-advanced-security-for-azure-devops-is-ready-for-you-to-use/?wt.mc_id=MVP_376528

こちらの記事に書いてあるように、Azure DevOpsのリポジトリレベル/プロジェクトレベル/組織レベルでGHAzDOを導入することができます。

Microsoft Defender for Cloud

Microsoft Defender for Cloudは、Microsoftが提供するクラウド環境全体のセキュリティ管理のプラットフォームです。セキュリティ的な脅威、脆弱性からクラウドアプリケーションを保護するためのサービスです。提供されている主な機能は以下の通り。

機能 概要
クラウドセキュリティ態勢管理 (CSPM) クラウド環境全体のセキュリティ体制を評価し、改善するための推奨事項を提供
クラウドワークロード保護プラットフォーム (CWPP) 仮想マシン、コンテナ、データベースなどのクラウドワークロードを保護
脅威検出と対応 リアルタイムで脅威を検出し、自動的に対応する
セキュリティスコア クラウド環境のセキュリティ状態をスコアで表示し、改善点を示す
コンプライアンス管理 各種規制や標準に対するコンプライアンス状態を監視し、レポートを生成
DevSecOps 統合 開発プロセスにセキュリティを組み込み、CI/CD パイプラインでのセキュリティチェックを自動化
脅威インテリジェンス 最新の脅威情報を提供し、潜在的な攻撃に対する防御策を強化
アラート管理 セキュリティアラートを一元管理し、優先順位をつける

こんな感じで、クラウド環境上の現状のセキュリティ状況の確認、コンプライアンスポリシーの構成等々、クラウドセキュリティ管理を一元的にできるサービスです。
GHAS、GHAzDOがコードベースに対するセキュリティ機能を提供する一方、Microsoft Defender for Cloudはクラウドインフラ全体のセキュリティ管理ができる、という感じです。

https://learn.microsoft.com/ja-jp/azure/defender-for-cloud/defender-for-cloud-introduction?wt.mc_id=MVP_376528?wt.mc_id=MVP_376528

両者の統合によるメリット

コードベース-クラウド環境を含めた包括的なDevSecOps

GHASまたはGHAzDOをMS Defernder for Cloudと組み合わせることによる利点は、コードベースに対するセキュリティチェックだけでなくデプロイ先の環境など、クラウド環境を含めて包括的にセキュリティを強化できるということだと思います。

具体的なシーンを考えると、例えばGitHub Actions/Azure Pipelinesを利用してCI/CDを構成し、GHAS/GHAzDOを入れてセキュリティスキャン等を行っているとしましょう。
ですが、GHAS/GHAzDOのセキュリティチェックの守備範囲はリポジトリのコードベースが対象となっているので、デプロイ先のAzure上にあるApp Serviceなどクラウド環境にあるコンポーネントの安全性をチェックすることはできません。それらの安全性のチェック、組織で定義されているセキュリティポリシーやコンプライアンスのチェックは、Microsoft Defender for Cloudで可能になります。
また、Microsoft Defender for CloudはAuzreだけでなく、AWSなど他のクラウドサービスもサポートしているため、マルチクラウド環境全体のセキュリティの一元管理も可能です。

セキュリティ状況を一元で確認できる

例えば、MS DefenderをAzure DevOpsの組織と接続すると、Azure Portal上のMicrosoft Defender for CloudのDevOpsセキュリティの画面で、こんな感じで現在のDevOps環境のセキュリティ状況が確認できます。

ここでは、DevOps上のセキュリティ的な脆弱性がいくつあるか、コードスキャンによって何件の脆弱性が確認されたかなど、DevOpsプラットフォーム上(GitHub、Azure DevOpsなど)で確認されたセキュリティの状態を確認することができます。

統合のステップ

GHAS/GHAzDO - Microsoft Defender for Cloudの統合のステップはたぶんこんな感じかな?

GitHubの場合

■前提

  • Azureアカウントはある
  • GHASを使うための条件はクリアしている
  • GHASはまだ有効にしていない

step1:GHASを有効化する

https://docs.github.com/ja/enterprise-server@3.11/admin/managing-code-security/managing-github-advanced-security-for-your-enterprise/enabling-github-advanced-security-for-your-enterprise?wt.mc_id=MVP_376528

GHASの使用には、1アクティブコミッターあたり$49/月の課金が発生します。この料金は、GitHub の請求に統合されます。

GitHub Enterpriseのライセンス料とは別で上記のお金を払う必要があります。
ここのライセンスごとの料金表のページで、たしかにADD-ONとしてGHASが記載されていますね。

step2: Microsoft Defender for Cloudを有効にする

https://learn.microsoft.com/ja-jp/azure/defender-for-cloud/connect-azure-subscription?wt.mc_id=MVP_376528

step3: GitHub環境とMS Defender for Cloudを接続

https://learn.microsoft.com/ja-jp/azure/defender-for-cloud/quickstart-onboard-github?wt.mc_id=MVP_376528

Azure DevOpsの場合

■前提

  • GHAzDOは有効化していない
  • GHAzDOを有効化するための条件はクリアしている
  • Azureアカウントはある
  • AzDO組織、プロジェクト、Azure Repos(Git)はすでにある
  • 実行者はAzDOのProject Collection Admin権限を持っている

step1: GHAzDOを有効にする

Azure DevOpsに対してGitHub Advanced Security for Azure DevOpsを有効にする。
https://learn.microsoft.com/ja-jp/azure/devops/repos/security/configure-github-advanced-security-features?view=azure-devops&tabs=yaml#enable-github-advanced-security?wt.mc_id=MVP_376528

注意!
Auzre Pipelinesでの静的スキャンを実施する方法として、Azure DevOps用のシークレットスキャンであるMicorosft Security DevOps(MSDO)という拡張機能が提供されていましたが、2023年9月20日より非推奨となり、代わりにGHAzDOに置き換えられます。

現状AzDOのAzure PipelinesでMSDOをお使いの方は、リプレイスを検討してください。
https://learn.microsoft.com/ja-jp/azure/defender-for-cloud/azure-devops-extension?wt.mc_id=MVP_376528

ちなみに、GHAzDOの使用に発生するお金は、GHASと同様に1アクティブコミッターあたり$49/月です。
Visual Studio Subscriptionをお持ちの場合でも、別途で料金が発生します。
GHAzDO の料金はAzure サブスクリプションに対して請求されます。既に Azure アカウントをお持ちの場合、そのサブスクリプションに料金が追加されます
https://learn.microsoft.com/ja-jp/azure/devops/repos/security/github-advanced-security-billing?view=azure-devops?wt.mc_id=MVP_376528

step2: Microsoft Defender for Cloudを有効にする

※GitHubの場合と同じなので省略

step3: Azure DevOps環境とMS Defender for Cloudを接続

https://learn.microsoft.com/ja-jp/azure/defender-for-cloud/quickstart-onboard-devops?wt.mc_id=MVP_376528

まとめ

GHAS/GHAzDOとMS Defender for Cloudを統合する利点としては、以下2点かなと。

  • コードベースに対するセキュリティチェックとクラウド環境に対するセキュリティチェックを統合することによって、より包括的なDecSecOps環境を構成できること
  • セキュリティ情報の一元管理

GHAS/GHAzDOの有効化には追加でお金が掛かるということと、有効化するためにいくつか前提条件をクリアするということが注意点ですね。

Discussion