Microsoft Defender for CloudのGHAS統合展開ガイド|2026年5月更新の影響範囲と確認ポイント

Microsoft Defender for CloudでGitHub Advanced Security(GHAS)integrationを導入する目的は、GitHub上の脆弱性アラートを「実際にクラウド上で動いているワークロードのリスク」と結び付け、優先順位を付けて修正することです。2026年5月28日更新の公式ドキュメントでは、GitHubリポジトリの準備、Defender for Cloudでの検証、GitHub Campaigns、推奨事項からのGitHub Issue作成まで、展開後に確認すべき流れが整理されています。(Microsoft Learn)

管理者が最初に見るべきポイントは、GHASライセンスの有無、GitHub connector、DCSPMプラン、agentless scanning、GitHub側の権限です。開発者側では、GitHub Issueに渡されるCVE、実行環境のコンテキスト、コードとコンテナイメージの対応関係を確認し、単なるアラート対応ではなく「本番影響のある修正」を優先する運用に切り替えることが重要です。

目次

Microsoft Defender for CloudとGHAS統合で何が変わるのか

今回確認すべきポイントは、新しい脆弱性スキャナーを単体で追加することではありません。Microsoft Defender for Cloudが持つクラウド実行環境の情報と、GitHub Advanced Securityのコードスキャン・Dependabotアラートをつなぎ、セキュリティチームと開発チームが同じ文脈で修正を進められるようにする点です。

従来は、GitHub上のアラートを見ても「その脆弱性が本番に出ているのか」「どのAKSワークロードやコンテナに影響するのか」「どのチームが直すべきか」が分かりにくいケースがありました。GHAS integrationでは、ソースコード、ビルド成果物、コンテナイメージ、実行中のワークロードを関連付け、実行環境のリスクを基に優先度を判断できます。Microsoftの説明でも、この統合はソースコードと実行中のクラウドワークロードを相互にリンクし、実際に本番影響のある脆弱性を優先できる仕組みとして位置付けられています。(Microsoft Learn)

観点従来起きやすい課題GHAS統合後に確認できること
脆弱性の優先順位CVSSや重大度だけで判断し、修正順が現場感とずれるインターネット露出、機密データ、重要リソースなどのRuntime Risk Factorsを踏まえて判断できる
担当チームの特定コンテナやクラウドリソースからリポジトリをたどるのに時間がかかる実行中のワークロードからGitHubの元リポジトリへ戻れる
修正依頼セキュリティチームが別チケットで依頼し、開発側の文脈が不足するDefender for Cloudの推奨事項からGitHub Issueを作成し、CVEや実行環境の情報を渡せる
進捗管理GitHub側とDefender側で状態が分断されるGitHub Issueのステータスや担当状況をDefender for Cloud側でも追跡できる

影響範囲はGitHub、Azure、コンテナ実行環境まで広がる

GHAS integrationの影響範囲は、GitHubのリポジトリだけではありません。Defender for CloudのDevOps security、Azureサブスクリプション、コンテナレジストリ、AKSなどの実行環境、GitHub Campaigns、GitHub Issue運用まで関係します。

特に影響を受けるのは、次のような環境です。

対象確認すべき内容
GitHub OrganizationDefender for Cloud GitHub connectorが作成されているか。対象リポジトリが接続されているか
GitHubリポジトリGHASが有効か。Defender for CloudのDevOps security画面でAdvanced security statusがOnになっているか
AzureサブスクリプションDefender Cloud Security Posture Management、つまりDCSPMプランが有効か
コンテナレジストリコンテナイメージがDefender for Cloudでスキャンされ、実行環境と関連付けられるか
AKSなどの実行環境実行中のワークロードがDefender for Cloudで監視されているか
GitHub CampaignsOrganizationレベルでRuntime Risksフィルターを使ったキャンペーンを作れるか
GitHub Issue運用推奨事項からIssueを生成できる権限と、担当者に渡す運用ルールがあるか

注意したいのは、GHAS integrationは商用クラウドで利用する前提として説明されており、Azure Government、21Vianet運営のAzure、その他のソブリンクラウドは対象外とされています。GitHub connector自体の可用性と、GHAS integrationの可用性を同一視しないようにしてください。(Microsoft Learn)

導入前に満たすべき前提条件

公式手順では、GitHub accountにDefender for Cloudのconnectorが作成されていること、接続リポジトリにGHASライセンスがあること、サブスクリプションでDCSPMプランが有効であることが前提として示されています。AIによる自動修復を使う場合はMicrosoft Security Copilotが任意の要件として挙げられています。(Microsoft Learn)

権限面では、Azure側でSecurity Admin権限、サブスクリプション上のセキュリティ検出結果を参照できる権限、GitHub側でOrganization Owner権限が必要です。特にGitHub Campaignsの作成やリポジトリ接続は、個別リポジトリの開発者権限だけでは不足する場合があります。

管理者向けの事前チェック

チェック項目判断基準よくある失敗
GitHub connectorDefender for CloudのEnvironment settingsにGitHub connectorが存在する別テナントや別サブスクリプションに作成しており、対象リポジトリが見えない
GHASDevOps security画面でAdvanced security statusがOnGHASライセンスはあるが、対象リポジトリで有効化されていない
agentless scanningGitHub connectorでagentless scanningが有効コネクタは作成済みだがスキャンが動いていない
DCSPM対象サブスクリプションでDCSPMプランが有効推奨事項やRuntime Risk Factorsが期待通り出ない
GitHub権限Organization Ownerまたは必要な管理権限があるCampaign作成やIssue生成ができない
対象クラウド商用クラウドで利用しているソブリンクラウド環境で同じ手順を前提にしてしまう

展開手順は「接続して終わり」ではなく、検証まで行う

公式ドキュメントの展開フローでは、まずAzure portalでMicrosoft Defender for CloudのDevOps securityを開き、対象リポジトリが監視対象のOrganizationに属しているか、検出結果があるか、Advanced security statusがOnかを確認します。リポジトリが見つからない場合は、GitHub connectorのオンボーディングやトラブルシューティングを確認する流れです。(Microsoft Learn)

ここで重要なのは、リポジトリが見えているだけでは不十分という点です。Defender for Cloudがコード、ビルド成果物、コンテナイメージ、実行中のワークロードを結び付けられる状態にしなければ、GHAS統合の本来の価値は出ません。

展開後の確認フロー

手順確認する場所成功の目安
リポジトリ確認Microsoft Defender for Cloud > DevOps security対象リポジトリが表示され、Organizationが正しい
GHAS確認DevOps securityのAdvanced security statusOnになっている
agentless scanning確認GitHub connector設定agentless scanningが有効
コードから実行環境の検証Cloud Security Explorerパイプライン成果物やワークロードに関連するクエリ結果が返る
リスク要因の確認Defender for Cloud Inventory、Settings > Resource criticality重要リソースとして分類され、期待するリスクが付与されている
GitHub Campaign確認GitHub Organization > Security > CampaignsRuntime Risksフィルターでキャンペーンを作成できる
修正連携確認Defender for Cloud RecommendationsGitHub alertやGitHub Issue生成の導線が確認できる

検証結果がすぐ出ない場合もあります。公式ドキュメントでは、前段の設定後に結果が表示されるまで最大24時間かかる場合があること、重要リソースに分類した後にDefender for CloudからGitHubへデータが送られるまで最大12時間かかる場合があることが示されています。(Microsoft Learn)

そのため、展開直後に「何も出ないから失敗」と判断するのは早計です。まずは対象リポジトリでビルド成果物が作られているか、コンテナが実行されているか、AKSやコンテナレジストリ側のスキャンが成立しているかを確認してください。

GitHub CampaignsはOrganizationレベルで設計する

GHAS統合では、GitHub Campaignsを使って、実行環境のリスクを踏まえたセキュリティ修正キャンペーンを作れます。公式手順では、GitHub OrganizationのSecurity > Campaignsから「From code scanning filters」を選び、Runtime Risksフィルターを使ってキャンペーンを作成する流れが示されています。なお、この操作はOrganizationレベルで行うもので、個別リポジトリレベルの体験としては提供されていません。(Microsoft Learn)

実務では、いきなり全社リポジトリを対象にするよりも、外部公開サービスや決済・認証・個人情報を扱うサービスから始める方が安全です。最初のキャンペーンで大量のアラートを出しすぎると、開発チームが「また全部Critical扱いか」と受け止め、優先順位付けの信頼性が下がります。

Campaigns設計の判断基準

判断軸優先して対象にすべき例
外部公開インターネットから到達可能なWeb API、公開フロントエンド
データ重要度顧客情報、決済情報、認証情報、業務機密を扱うサービス
実行中の有無すでにAKSや本番環境で稼働しているコンテナ
修正可能性CODEOWNERSや担当チームが明確なリポジトリ
運用負荷まず1〜3チームで試験展開し、Issue運用を固められる範囲

推奨事項からGitHub Issueを作成し、修正の流れを閉じる

Defender for CloudのRecommendationsでは、実行中のコンテナに関する脆弱性推奨事項から、関連するCVEやDependabot security alertsを確認できます。Related GitHub Alerts列に「View on GitHub」リンクがある場合は、該当するGHASアラートをGitHubで開けます。ただし、GitHub側で対象リポジトリへのアクセス権がなければ、アラート内容は表示できません。(Microsoft Learn)

重要なのは、GHASが検出した依存関係の脆弱性だけでなく、Defender for Cloudが実行環境から見つけたリスクもIssue化できる点です。公式ドキュメントでは、GHASが直接拾わない可能性があるベースイメージ、OS、NGINXなどのソフトウェアに関するCVEも、Defender for Cloud側で検出される場合があると説明されています。(Microsoft Learn)

開発チームにとっては、GitHub Issueに「なぜこのCVEを今直すべきか」という実行環境の文脈が入ることが大きなメリットです。単に「Highだから直してください」ではなく、「このコンテナは本番で稼働しており、インターネット露出があり、該当イメージにCVEが含まれている」という説明が付けば、スプリント内での優先順位を決めやすくなります。

Issue生成で確認すべきポイント

確認項目実務上の見方
Remediation Insights実行中コンテナ、コンテナイメージ、元リポジトリの対応関係が自然か
既存Issueの有無同じワークロードやCVEで重複Issueを作っていないか
Generate GitHub issueボタンや選択肢が表示されるか。表示されない場合は権限不足を疑う
Issueの作成先期待するソースコードリポジトリにIssueが作成されているか
CVEの範囲直接依存関係だけでなく、ベースイメージやOS由来のCVEも含まれていないか
ステータス同期GitHub側の担当者・状態変更がDefender for Cloudに反映されるか

Generate GitHub issueの選択肢が表示されない場合、GitHubまたはリポジトリ側の権限が不足している可能性があります。セキュリティ管理者だけで解決しようとせず、GitHub Organization Ownerやリポジトリ管理者と事前に権限設計を確認してください。(Microsoft Learn)

agentless code scanningの制限を理解して展開する

GHAS統合の展開手順では、GitHub connectorでagentless scanningが有効になっていることを確認します。Defender for Cloudのagentless code scanningは、CI/CDパイプラインを変更せずにコード、オープンソース依存関係、IaCをスキャンできる仕組みです。GitHub connectorやAzure DevOps connectorを通じて動作し、結果はDefender for Cloudの推奨事項として表示されます。(Microsoft Learn)

ただし、agentless code scanningは万能ではありません。公式ドキュメントではPublic Previewの制限として、バイナリスキャンは行わないこと、スキャン頻度は有効化時と1日1回であること、1GB未満のリポジトリが対象であること、対象ブランチは通常mainなどのデフォルトブランチのみであることが示されています。(Microsoft Learn)

そのため、次のような環境では追加対策が必要です。

状況推奨される考え方
リリースブランチで長期保守しているagentless scanningだけでなく、リリースブランチ側のGHAS設定やパイプラインスキャンを検討する
ビルド時にブロックしたいagentless scanningはビルドを止められないため、CI/CD内のスキャンやポリシー運用を併用する
大規模モノレポを使っている1GB制限やスキャン時間を確認し、分割や対象範囲設定を検討する
コンテナイメージやバイナリも厳密に見たいコンテナレジストリスキャンやパイプライン内スキャンと役割分担する
新規リポジトリが頻繁に増えるinclusion modeでは自動検出されない点に注意し、スコープ設計を見直す

agentless scanningとin-pipeline scanningは競合するものではありません。公式ドキュメントでも、agentless scanningは広い範囲を少ない負荷でカバーする用途、in-pipeline scanningはパイプラインに統合して詳細に制御する用途として整理されています。特に、ビルド失敗条件を設けたい場合はin-pipeline scanningの検討が必要です。(Microsoft Learn)

管理者が移行・展開時に注意すべきこと

既にGHASを使っている組織では、GHAS統合の導入を「既存アラートの置き換え」と考えない方が安全です。正しくは、既存のGHASアラートに実行環境の優先順位を重ねる運用変更です。

まずは、現行のGHAS運用で使っているルール、Dependabot alerts、CODEOWNERS、既存Issue管理、SLAを棚卸ししてください。そのうえで、Defender for Cloudから作成されるGitHub Issueをどのラベルで扱うか、誰がトリアージするか、重複Issueをどう閉じるかを決めておく必要があります。

移行時に決めておくべき運用ルール

項目決めるべき内容
優先度の基準GHAS重大度、CVSS、Runtime Risk Factors、外部公開有無のどれを上位基準にするか
Issueの担当CODEOWNERS、サービスオーナー、SRE、AppSecのどこに初期割り当てするか
重複管理既存Dependabot alert、既存GitHub Issue、Defender生成Issueの重複をどう扱うか
修正期限Critical、High、インターネット露出ありなどの条件別にSLAを決めるか
例外承認修正できないCVE、誤検知、互換性問題を誰が承認するか
終了条件GitHub Issueを閉じるだけでよいのか、Defender for Cloudの推奨事項解消まで見るのか

特に失敗しやすいのは、セキュリティチームがIssueを大量に作成し、開発チームが背景を理解しないまま放置するパターンです。最初の展開では、1つの本番サービスを対象に、Defender for Cloudの推奨事項、GitHub alert、GitHub Issue、修正、再検出までを通しで確認するのが現実的です。

開発者が確認すべき修正ポイント

開発者は、GitHub Issueに記載されたCVEだけを見て修正を始めるのではなく、どの実行環境に出ている問題なのかを確認する必要があります。Remediation Insightsのコードから実行環境までの対応関係を見れば、修正対象がアプリケーションコード、依存パッケージ、Dockerfile、ベースイメージ、Kubernetesマニフェストのどこにあるのかを判断しやすくなります。

たとえば、Dependabot alertでライブラリ更新が提案されている場合は、manifestやlockfileの更新で済むことがあります。一方、Defender for Cloud側でベースイメージ由来のCVEが示されている場合は、アプリケーションのpackage.jsonやpom.xmlを直しても解消しません。DockerfileのFROM行、OSパッケージ、ベースイメージのタグ、再ビルドと再デプロイまで確認する必要があります。

GitHub Copilotライセンスがある場合、GitHub側でcoding agentをIssueに割り当て、生成された修正案をレビューして適用する流れも公式手順に含まれています。ただし、生成された修正をそのまま適用するのではなく、依存関係の互換性、テスト結果、コンテナ再ビルド後のスキャン結果を確認してからマージするべきです。(Microsoft Learn)

導入後に見るべき実務チェックリスト

GHAS統合を展開したら、次の項目を順番に確認してください。

タイミング確認項目完了の目安
導入直後GitHub connector、GHAS、DCSPM、agentless scanning対象リポジトリがDevOps securityに表示される
数時間後Inventory、Cloud Security Explorerコード、成果物、実行環境の関連が見える
最大24時間後Recommendationsコンテナやリポジトリに関する推奨事項が表示される
リスク分類後Resource criticality、GitHub側のRuntime Risks重要リソースの情報がGitHubの優先順位付けに反映される
Campaign作成時GitHub OrganizationのSecurity > CampaignsRuntime Risksフィルターでキャンペーンを公開できる
修正依頼時Remediation Insights、GitHub Issue元リポジトリにIssueが作成され、CVEと実行環境の文脈が入っている
修正後Defender for CloudとGitHub双方の状態Issue状態と推奨事項の解消状況が追跡できる

まずは小さく展開し、優先順位付けの精度を検証する

Microsoft Defender for CloudとGitHub Advanced Securityの統合は、アラート数を増やすための仕組みではなく、修正すべき脆弱性を実行環境の文脈で絞り込むための仕組みです。管理者は、GHASライセンス、GitHub connector、DCSPM、agentless scanning、権限、商用クラウド要件を確認してください。開発者は、GitHub Issueに渡されるCVEだけでなく、コンテナイメージ、実行中ワークロード、ベースイメージ、依存関係のどこを直すべきかを見極める必要があります。

最初の一歩としては、全リポジトリへの一括展開ではなく、外部公開されている重要サービスを1つ選び、リポジトリ表示、Cloud Security Explorerの検証、GitHub Campaign、Issue生成、修正後のステータス同期までを通しで確認するのがおすすめです。そこで運用ルールを固めてから、対象Organizationやリポジトリを広げると、セキュリティチームと開発チームの摩擦を抑えながら実効性のあるDevSecOps運用に移行できます。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次