Microsoft Security DevOps GitHub Action設定ガイド|Defender for Cloud更新の影響範囲と確認ポイント

Microsoft Security DevOps GitHub actionを使うと、GitHub ActionsのCI内でコード、IaC、コンテナーなどの静的分析を実行し、その結果をMicrosoft Defender for CloudのDevOps Securityに集約できます。結論から言うと、2026年5月29日前後の公式更新で管理者が最初に見るべきポイントは、GitHubリポジトリの接続状態、Workflow権限、id-token: write、スキャン対象、SARIFアップロードの扱いです。新しいツールを入れるだけではなく、「検出結果を誰が、どこで、どう直すか」まで運用に落とし込むことが重要です。

Microsoft Security DevOpsは、開発ライフサイクルに静的分析ツールを組み込むためのコマンドラインアプリケーションで、Bandit、BinSkim、Checkov、ESLint、Template Analyzer、Terrascan、TrivyなどをGitHub Actionsから実行できます。Microsoft Learnでは、GitHubリポジトリをDefender for Cloudに接続したうえで、ワークフロー権限をRead and Writeにし、Defender for Cloudとのフェデレーション用にid-token: writeを設定することが前提条件として示されています。(Microsoft Learn)

目次

Microsoft Defenderのセキュリティ更新で押さえるべきポイント

今回の「Configure the Microsoft Security DevOps GitHub action」は、Microsoft Defender for CloudのDevOps SecurityをGitHub Actionsに組み込むための設定手順です。公式の原稿メタデータではms.date: 05/28/2026に更新され、GitHub上の履歴でも2026年5月28日の複数コミットが確認できます。日本時間やローカライズ反映のタイミングを含め、2026年5月29日前後に確認すべき公式更新として扱うのが実務上は自然です。(GitHub)

観点変更・確認ポイント管理者・開発者への影響
ドキュメントの鮮度2026年5月末時点の手順として更新古いワークフローを使っているリポジトリは、現行サンプルとの差分確認が必要
権限設定contents: readid-token: writeactions: read、必要に応じてsecurity-events: writeを明示権限不足だとDefender for Cloud連携やGitHub Securityタブへの反映でつまずきやすい
スキャン結果の確認先Defender for Cloud > DevOps Securityで確認開発者のCIログだけでなく、セキュリティ管理者もAzure側で横断的に確認できる
GitHub Advanced Security連携GitHub Securityタブに結果を出す場合はSARIFアップロードとGHAS要件を確認GHASがない環境で「Securityタブに出ない」と誤解しやすい
スキャン対象の絞り込みcategorieslanguagestoolsで調整可能モノレポや大規模リポジトリでは実行時間とノイズを抑えられる

重要なのは、今回の更新履歴から「既存ワークフローを直ちに破壊する変更」が読み取れるわけではない点です。実務上の焦点は、古い設定のまま動かしているGitHub Actionsが、現在のDefender for Cloud連携要件を満たしているかを点検することです。

Microsoft Security DevOps GitHub actionでできること

Microsoft Security DevOps GitHub actionは、GitHub Actions上でMicrosoft Security DevOps CLIを実行し、セキュリティ分析ツールのインストール、ポリシー取得、ツール実行、SARIF形式への結果正規化などを行います。GitHub Marketplace側の説明でも、SARIFへの正規化やビルドブレークなどが機能として説明されています。(GitHub)

主なスキャン領域は次のとおりです。

分析対象主なツール例使いどころ
PythonコードBanditPythonアプリの危険な実装やセキュリティ上の問題を早期検出
バイナリBinSkimWindows/ELFバイナリの安全性確認
IaCCheckov、Template Analyzer、TerrascanTerraform、Bicep、ARM、Kubernetes YAMLなどの設定ミス検出
JavaScriptESLintJavaScriptコードの品質・セキュリティ観点のチェック
コンテナー・IaCTrivyコンテナーイメージやIaCの脆弱性・設定不備チェック
マルウェアAntiMalwarewindows-latestエージェントで既定スキャンされ、マルウェア検出時にビルドを中断

セキュリティ担当者にとっての価値は、CI/CDの中で検出した問題をDefender for CloudのDevOps Securityに集め、リポジトリ単位・重大度単位で見られることです。開発者にとっては、レビュー後や本番直前ではなく、pushやPRの段階で修正対象を把握できる点が大きなメリットです。

影響範囲:対象になる環境とならない環境

影響を受けるのは、主にGitHubリポジトリをDefender for Cloudに接続し、GitHub Actionsでmicrosoft/security-devops-actionを実行している、または今後導入する環境です。Defender for CloudのDevOps SecurityはAzure DevOps、GitHub、GitLabを扱えますが、この手順はGitHub Actions向けです。(Microsoft Learn)

対象者確認すべきこと放置した場合のリスク
Azure管理者Defender for Cloudの環境設定にGitHubコネクタがあるかリポジトリがAzure側のDevOps Securityに表示されない
GitHub Organization OwnerDefender for Cloud GitHubアプリのインストール範囲一部リポジトリだけスキャン・可視化から漏れる
リポジトリ管理者.github/workflows/配下のMSDOワークフロー権限不足、スキャン未実行、結果未反映が起きる
開発者CIログと検出結果の修正フロー検出されても誰が直すか曖昧になる
セキュリティ運用担当Defender for Cloud > DevOps Securityの確認手順リポジトリ横断のリスク優先度付けができない
GHAS利用組織SARIFアップロードとSecurityタブ反映GitHub側のCode scanning alertsに出ないと誤認する

GitHub環境をDefender for Cloudに接続するには、GitHub Organization OwnerやAzure側のContributorなど、一定の権限が必要です。また、オンボード後にDevOpsリソースがInventoryやDevOps securityページに表示されるまで最大8時間かかる場合があるため、設定直後に表示されないだけで失敗と判断しないことも重要です。(Microsoft Learn)

管理者が先に確認すべき設定チェックリスト

導入や見直しでは、まず「ワークフローが動くか」ではなく、「Defender for Cloudに正しくつながり、権限が過剰でも不足でもないか」を確認します。

確認項目判断基準実務上の注意点
GitHubコネクタDefender for CloudのEnvironment settingsにGitHub接続がある組織単位で接続されているか、一部リポジトリだけかを確認
GitHubアプリの範囲保護対象リポジトリにDefender for Cloud GitHubアプリが入っている新規リポジトリが自動対象になる設定かも見る
Workflow権限Read and Writeが有効で、YAMLにid-token: writeがあるリポジトリ設定とワークフロー内permissionsの両方を見る
SARIFアップロードGitHub Securityタブに出すならsecurity-events: writeを設定GHAS要件とライセンスを事前に確認
実行ブランチmainだけで十分か、PRでも検査するかPublic repoのフォークPRでは権限設計に注意
実行エージェントwindows-latestまたはLinuxエージェントを選択AntiMalwareの既定スキャンはwindows-latest前提
スキャン範囲categorieslanguagestoolsで過不足がない全ツール実行はモノレポで時間・ノイズが増えやすい
結果確認Azure側のDevOps Securityで確認できるCIログだけを正式な確認先にしない

GitHub Actionsの基本構成例

公式サンプルの要点は、ワークフローに必要なpermissionsを明示し、microsoft/security-devops-action@latestを実行することです。GitHub Securityタブに結果を表示したい場合は、github/codeql-action/upload-sarif@v3でMSDOのSARIFファイルをアップロードします。公式手順では、GitHub Securityタブへの表示にはGitHub Advanced Securityが必要と説明されています。(Microsoft Learn)

name: MSDO

on:
  push:
    branches:
      - main

jobs:
  sample:
    name: Microsoft Security DevOps
    runs-on: windows-latest

    permissions:
      contents: read
      id-token: write
      actions: read
      security-events: write

    steps:
      - uses: actions/checkout@v3

      - name: Run Microsoft Security DevOps
        uses: microsoft/security-devops-action@latest
        id: msdo

      - name: Upload alerts to Security tab
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: ${{ steps.msdo.outputs.sarifFile }}

このまま使う場合でも、組織のGitHub Actionsセキュリティ基準に合わせた調整は必要です。たとえば、公式サンプルは@latestを使っていますが、変更管理を厳格にしたい組織では、検証済みのタグやコミットSHAに固定する運用を検討します。GitHub Docsでは、Actionを完全なコミットSHAにピン留めすることが、Actionを不変のリリースとして使う唯一の方法だと説明されています。(GitHub Docs)

スキャン対象を絞る設定の考え方

Microsoft Security DevOps GitHub actionは、withでスキャンの範囲を調整できます。小規模リポジトリでは既定値で始めてもよいですが、大規模リポジトリやモノレポでは、最初から全スキャンを有効にするとCI時間が伸び、開発者が警告を無視しやすくなります。

パラメーター役割使う判断基準
config.gdnconfigなどのMSDO設定ファイルを指定組織標準のルールや例外管理を使う場合
policyGitHubmicrosoftnoneなどの既知ポリシーを指定まず標準ポリシーで始め、必要に応じて調整
categoriescodeartifactsIaCcontainersを指定IaCリポジトリならIaC、コンテナー中心ならcontainersを優先
languages分析対象言語を指定JavaScript/TypeScriptなど、対象が明確な場合に絞る
tools実行するアナライザーを指定ノイズが多いツールを一時的に外す、または特定ツールだけ検証する場合

実務では、最初に「検出できる最大範囲」を狙うより、開発チームが修正できる粒度に絞る方が定着しやすくなります。たとえばTerraform中心のインフラリポジトリなら、最初はcategories: IaCから始め、検出結果の棚卸し後にコンテナーやコード分析へ広げる方が現実的です。

展開・移行時の進め方

既存環境に導入する場合は、全リポジトリへ一括展開するより、リスクが高く運用協力を得やすいリポジトリから段階的に進めます。

  1. GitHub組織とリポジトリを棚卸しする
    Defender for Cloudに接続済みのGitHub組織、保護対象リポジトリ、既存の.github/workflows/を確認します。
  2. 既存ワークフローとの差分を確認する
    microsoft/security-devops-actionの有無、permissionsruns-on、SARIFアップロード、実行ブランチを比較します。
  3. パイロット対象を決める
    本番影響が比較的小さく、IaCやコンテナーなど検出価値が高いリポジトリを選びます。
  4. まずは結果確認を優先する
    初期段階からビルド失敗を厳しくしすぎると、開発チームが回避策を探し始めます。最初は結果の妥当性、重複、誤検知、修正担当を確認します。
  5. 重大度ごとの対応基準を決める
    Critical/Highは期限付きで修正、Mediumはスプリント内で判断、Lowはバックログ化など、運用ルールを明文化します。
  6. Defender for Cloud側で横断確認する
    DevOps Securityでリポジトリ別、重大度別、検出種別別に確認し、CIログだけに依存しない運用にします。
  7. 自動化と例外管理を整える
    継続運用では.gdnconfigや組織標準テンプレートを使い、例外を個別リポジトリの暗黙ルールにしないことが重要です。

よくある失敗と回避策

失敗しやすいポイント症状回避策
id-token: writeを入れていないDefender for Cloudとの連携やフェデレーションで問題が起きるサンプルどおりpermissionsに明示する
GitHubのWorkflow permissionsがRead onlySARIFアップロードやSecurityタブ反映が失敗するリポジトリ設定でRead and Writeを確認
GHASなしでSecurityタブ表示を期待するCIは動くがGitHub側のCode scanning alertsに出ないDefender for Cloud側のDevOps Security確認とGHAS要件を切り分ける
全ツールを一括実行するCI時間が伸び、警告が多すぎて運用されないcategoriestoolsで段階導入する
@latestを無検証で本番適用するAction側の変更が意図せず入る本番環境では検証済み参照に固定する運用を検討
Azure側にすぐ表示されない設定失敗と誤認して再作業するオンボード後の反映時間を考慮し、最大8時間程度は確認時間を置く
修正責任者が決まっていない検出だけ増え、改善が進まないリポジトリオーナー、期限、例外承認者を決める

GitHub Advanced Securityとの関係を誤解しない

Microsoft Security DevOps GitHub actionは、GitHub Actions上でセキュリティ分析を実行し、Defender for Cloud側で結果を確認するための重要な部品です。一方、GitHubのSecurityタブにCode scanning alertsとして表示するには、SARIFアップロードの設定やGitHub Advanced Securityの利用条件が関係します。

つまり、次のように整理すると混乱しにくくなります。

やりたいこと主に必要なもの
GitHub ActionsでMSDOを実行するmicrosoft/security-devops-action
Defender for Cloudで結果を横断確認するGitHubコネクタ、DevOps Security
GitHub Securityタブに結果を表示するSARIFアップロード、security-events: write、GHAS要件の確認
組織全体のリスクを優先度付けするDefender CSPMやDevOps Securityの運用設計

特に管理者は、「CIでスキャンが成功した」ことと「セキュリティ運用に必要な場所へ結果が集約された」ことを分けて確認する必要があります。前者だけでは、開発者個人のログに検出結果が閉じてしまい、組織としてのリスク管理につながりません。

管理者と開発者で役割を分ける

Microsoft Defender for CloudとGitHub Actionsの連携は、セキュリティ部門だけでも開発部門だけでも定着しません。導入前に役割を分けておくと、検出後の対応が進みやすくなります。

役割担当すること
Azure管理者Defender for Cloudの有効化、GitHubコネクタ、権限設計
GitHub管理者GitHubアプリのインストール、Workflow permissions、Actionsポリシー
セキュリティ担当検出ルール、重大度基準、例外承認、横断レビュー
開発リード修正優先度、スプリントへの組み込み、誤検知のフィードバック
リポジトリオーナーワークフローの保守、スキャン対象の調整、CI失敗時の一次対応

この役割分担がないまま導入すると、「セキュリティチームは検出しただけ」「開発チームは何を直せばよいか分からない」という状態になりがちです。MSDOの導入はツール設定ではなく、DevSecOpsの運用設計として扱うべきです。

まず実施すべき次のアクション

Microsoft Security DevOps GitHub actionを使う環境では、まず既存ワークフローを確認し、現在の公式サンプルに含まれるpermissionsと結果確認先を満たしているかを点検します。次に、スキャン対象をリポジトリ特性に合わせて絞り、Defender for Cloud > DevOps Securityで検出結果を横断的に確認できる状態にします。

最初の作業としては、次の順番が現実的です。

  1. Defender for CloudにGitHub組織が接続されているか確認する。
  2. 対象リポジトリの.github/workflows/にMSDOワークフローがあるか確認する。
  3. id-token: writecontents: readactions: read、必要に応じてsecurity-events: writeを確認する。
  4. 小規模なリポジトリで実行し、CIログとDefender for Cloud側の表示を照合する。
  5. 検出結果の修正ルールを決めてから、対象リポジトリを広げる。

Microsoft Defender for CloudのGitHub action連携は、設定すれば終わりではありません。スキャン結果を開発者が直せる形に整理し、管理者が横断的に見られる状態にして初めて、セキュリティ更新の効果が出ます。まずは権限、接続、スキャン範囲、結果表示の4点を確認し、段階的に展開してください。

この記事を書いた人

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

コメント

コメントする

目次