Microsoft Intune カスタム コンプライアンス設定の更新ポイント|Linux・Windows管理者向け実務ガイド

Microsoft Intune の「カスタム コンプライアンス設定」は、標準のコンプライアンスポリシーだけでは判定できない Windows / Linux デバイスの状態を、JSON ファイルと検出スクリプトで評価できる機能です。結論から言うと、管理者がまず確認すべきなのは「対象 OS」「JSON とスクリプトの対応関係」「Conditional Access への影響」「レポート値の扱い」「Linux のサポートバージョン」です。

特に、Linux 端末を Intune 管理に含めている組織や、Windows 端末で BIOS、TPM、独自エージェント、社内セキュリティ設定などを条件にアクセス制御したい組織では、今回の公式情報をもとに設計を見直す価値があります。カスタム コンプライアンス設定は「検出」はできますが「修復」は自動で行いません。ユーザーに何を直してもらうか、管理者がどのレポートを信頼するかまで決めておくことが重要です。なお、対象の Microsoft Learn ページ上では最終更新日が 2026年5月20日と表示されているため、本稿では 2026年7月1日時点で確認すべき公式情報として整理します。(Microsoft Learn)

目次

Microsoft Intune のカスタム コンプライアンス設定とは

Microsoft Intune のカスタム コンプライアンス設定は、Intune に標準搭載されているデバイス コンプライアンス項目を補完する仕組みです。標準ポリシーにない設定でも、管理者が用意した検出スクリプトで端末状態を取得し、JSON ファイルで定義した条件と照合して、デバイスを「準拠」または「非準拠」として評価できます。(Microsoft Learn)

たとえば、次のような要件に向いています。

判定したい内容標準ポリシーだけでは足りない理由カスタム コンプライアンスでの考え方
BIOS バージョンが社内基準以上か機種別の細かい基準を標準項目で表現しにくいPowerShell で BIOS バージョンを取得し、JSON で最小バージョンを指定する
TPM が有効か標準項目と社内監査項目を合わせて見たいTPM の状態をスクリプトで返し、Boolean で評価する
特定の社内エージェントが存在するか独自ツールは Intune 標準テンプレートにないファイル、サービス、プロセスなどを検出して準拠条件にする
Linux の特定設定が基準を満たすかLinux の管理項目は Windows より限定されやすいPOSIX 準拠シェルスクリプトなどで値を取得し、JSON でルール化する

重要なのは、カスタム コンプライアンス設定は「設定を適用する機能」ではなく「状態を判定する機能」だという点です。非準拠になった端末を自動修復したい場合は、構成プロファイル、スクリプト配布、Endpoint Privilege Management、社内手順書など、別の仕組みと組み合わせる必要があります。

今回確認すべき主な更新ポイント

今回の公式情報で管理者が押さえるべきポイントは、単に「カスタム項目を追加できる」ことではありません。実務上は、サポート対象、評価タイミング、レポートの読み方、移行が必要な Linux バージョンの有無を確認する必要があります。

確認項目管理者への影響取るべき対応
対象プラットフォームWindows と一部 Linux ディストリビューションが対象管理対象 OS が対応範囲内か棚卸しする
JSON と検出スクリプトが必須どちらか一方だけでは機能しない設定名、データ型、戻り値を事前に設計する
Conditional Access に影響非準拠判定がアクセスブロックにつながる本番適用前にパイロットグループで検証する
レポート値は端末側が報告スクリプトが返した値を Intune が完全検証するわけではないレポート値だけを根拠に強い管理判断をしない
RHEL 8 の扱いLinux 管理環境では移行計画が必要RHEL 9 または RHEL 10 への移行対象を確認する

カスタム コンプライアンス設定は、組織のセキュリティ基準を Intune の標準項目に合わせるのではなく、Intune 側に社内基準を持ち込める点が強みです。一方で、設計を誤ると「本来ブロックすべき端末が準拠になる」「ユーザーが突然アクセスできなくなる」「レポートの値を過信して誤対応する」といった問題につながります。

影響範囲:対象 OS とクラウド要件

公式情報では、カスタム コンプライアンス設定の対象として Windows と Linux が示されています。Windows は Windows Home を除く Windows が対象です。Linux では Ubuntu Desktop 24.04 LTS / 26.04 LTS、Red Hat Enterprise Linux 9 / 10 が対象として示されています。(Microsoft Learn)

区分対象注意点
WindowsWindows Home を除く WindowsPowerShell スクリプトを利用する
LinuxUbuntu Desktop 24.04 LTS / 26.04 LTSLinux 用の検出スクリプトと JSON が必要
LinuxRed Hat Enterprise Linux 9 / 10RHEL 8 利用環境は移行計画を確認する
クラウド参加状態Microsoft Entra joined、Microsoft Entra hybrid joined、Microsoft Entra registered / Workplace joinedWPJ 端末ではユーザーコンテキストの PowerShell スクリプトが無視される点に注意

Windows の BYOD や Workplace Join 端末を含めている組織では、スクリプトの実行コンテキストに注意が必要です。公式情報では、WPJ デバイスではデバイスコンテキストの PowerShell スクリプトは動作する一方、ユーザーコンテキストの PowerShell スクリプトは無視されると説明されています。(Microsoft Learn)

実務では、次のように判断すると安全です。

管理シナリオ推奨判断
会社支給 Windows 端末を厳格に判定したいMicrosoft Entra joined または hybrid joined を前提に、デバイスコンテキストで検出する
BYOD Windows 端末も対象にしたいWPJ でユーザーコンテキストが使えない前提で、取得できる値を限定して設計する
Linux 端末を対象にしたい対応ディストリビューションと Intune アプリの状態を先に確認する
グローバル拠点で利用するRemediationStrings に en_US を必ず含め、日本語や現地語も追加する

設定変更の要点:JSON と検出スクリプトを分けて設計する

カスタム コンプライアンス設定は、主に次の2つで構成されます。

構成要素役割失敗しやすいポイント
検出スクリプトデバイス上で設定値を取得し、Intune に返す戻り値の形式が JSON と一致しない、実行時間が長い、権限不足で値が取れない
JSON ファイルどの値を、どの条件で準拠とするか定義するSettingName の大文字小文字違い、DataType の不一致、ユーザー向け修復メッセージ不足

Windows では PowerShell スクリプトを使い、Linux では POSIX 準拠のシェルスクリプトを使います。公式情報では、各コンプライアンスポリシーが利用できるスクリプトは1つですが、1つのスクリプトで複数の設定を検出できると説明されています。(Microsoft Learn)

JSON で必ず意識すべき項目

JSON ファイルでは、少なくとも次の項目を正しく設計します。

項目内容実務上の注意
SettingName判定対象の設定名大文字小文字が区別されるため、スクリプトの戻り値と完全一致させる
Operator比較条件IsEquals、GreaterEquals など、対応演算子の範囲で設計する
DataType値の型Boolean、String、Version などを実データに合わせる
Operand準拠とみなす値バージョン比較では文字列ではなく Version を検討する
MoreInfoUrlユーザー向け詳細ページ社内ナレッジや修復手順に誘導する
RemediationStrings非準拠時の表示文en_US は必須。日本語環境では ja_JP も用意する

公式情報では、JSON ポリシーは最大 100 KB、ルールは最大 100 個までとされています。また、対応する演算子として IsEquals、NotEquals、GreaterThan、GreaterEquals、LessThan、LessEquals が示され、DataType には Boolean、Int64、Double、String、DateTime、Version が含まれます。(Microsoft Learn)

JSON の簡易例

以下は、BIOS バージョンと TPM の有無を確認する例です。実運用では、機種ごとの BIOS バージョン基準や、ユーザーが参照する社内手順ページを必ず自社環境に合わせてください。

{
  "Rules": [
    {
      "SettingName": "BiosVersion",
      "Operator": "GreaterEquals",
      "DataType": "Version",
      "Operand": "2.3",
      "MoreInfoUrl": "https://intranet.example.com/device/bios-update",
      "RemediationStrings": [
        {
          "Language": "en_US",
          "Title": "BIOS must be updated to version 2.3 or later. Detected value: {ActualValue}.",
          "Description": "Follow the internal BIOS update guide."
        },
        {
          "Language": "ja_JP",
          "Title": "BIOS をバージョン 2.3 以上に更新してください。検出値: {ActualValue}",
          "Description": "社内の BIOS 更新手順に従って対応してください。"
        }
      ]
    },
    {
      "SettingName": "TPMChipPresent",
      "Operator": "IsEquals",
      "DataType": "Boolean",
      "Operand": true,
      "MoreInfoUrl": "https://intranet.example.com/device/tpm",
      "RemediationStrings": [
        {
          "Language": "en_US",
          "Title": "TPM must be enabled.",
          "Description": "Enable TPM according to your device model guide."
        },
        {
          "Language": "ja_JP",
          "Title": "TPM を有効化してください。",
          "Description": "端末モデル別の手順に従って TPM を有効化してください。"
        }
      ]
    }
  ]
}

設定手順:本番適用前にスクリプトを登録してからポリシーを作成する

カスタム コンプライアンス設定は、いきなりコンプライアンスポリシー画面だけで完結するわけではありません。先に検出スクリプトを Intune に登録し、その後でコンプライアンスポリシーからスクリプトと JSON を選択します。

手順作業内容確認ポイント
1検出したい項目を決める標準コンプライアンス項目で代替できないか確認する
2検出スクリプトを作成するWindows は PowerShell、Linux は対応するスクリプトを用意する
3スクリプトの戻り値を確認するJSON の SettingName、DataType と一致しているか確認する
4JSON ファイルを作成するen_US の修復メッセージ、日本語環境なら ja_JP も追加する
5Intune 管理センターにスクリプトを登録するEndpoint security > Device compliance > Scripts から追加する
6コンプライアンスポリシーを作成するCustom Compliance を有効化し、スクリプトと JSON を指定する
7パイロットグループに割り当てるいきなり全社展開せず、数十台単位で検証する
8レポートと Conditional Access 影響を確認する非準拠時に本当にブロックされる範囲を確認する

Windows の場合は Custom Compliance を Require にし、事前に登録した検出スクリプトを選択して JSON ファイルをアップロードします。Linux の場合は Settings picker で Custom Compliance を追加し、Require Custom Compliance を True にしたうえで、検出スクリプトとルールファイルを指定します。Linux のコンプライアンスポリシーはユーザーグループではなくデバイスグループへの割り当てが前提になる点も確認が必要です。(Microsoft Learn)

スクリプト設計で失敗しやすいポイント

カスタム コンプライアンス設定で最も多い失敗は、JSON ではなくスクリプト側にあります。スクリプトが正しい値を返せない、値の型が違う、出力が長すぎる、実行権限が足りないといった問題です。

失敗例原因対策
JSON は正しいのに非準拠になるSettingName とスクリプトの戻り値名が一致していない大文字小文字を含めて完全一致させる
エラー 65009 が出る不正な JSON として評価されているスクリプト出力を短くし、JSON 形式を検証する
Linux で値が取得できないユーザーコンテキストで動作し、昇格が必要な値を読めない取得可能な範囲に絞るか、別の管理方式を検討する
Windows で期待した値にならない32bit / 64bit PowerShell、実行ユーザー、署名要件の違いスクリプト登録時の実行設定を明示する
一部端末だけ評価が遅いチェックインや評価サイクルのタイミング即時反映を前提にせず、運用手順に待ち時間を含める

公式情報では、スクリプトは Intune に事前登録し、Windows では PowerShell、Linux では環境に応じたインタープリターを利用できると説明されています。制限として、スクリプトサイズと出力はそれぞれ 1 MB 以下、実行時間は Linux で 5 分以内、Windows で 10 分以内とされています。(Microsoft Learn)

さらに、コンプライアンスポリシー作成に関する公式情報では、検出スクリプトの出力が 2048 文字を超えると切り詰められ、不正な JSON としてエラー 65009 につながる可能性があるとされています。複数項目を1本のスクリプトで検出できるとはいえ、戻り値は必要最小限に絞るべきです。(Microsoft Learn)

Conditional Access への影響:本番適用前に必ず段階展開する

カスタム コンプライアンス設定の結果は、標準のコンプライアンス設定と同じように、デバイスのコンプライアンス状態に影響します。Microsoft Learn では、カスタム コンプライアンス設定を Conditional Access の判断に使えると説明されています。つまり、JSON の条件を満たさない端末は、設計次第でメール、Teams、SharePoint、業務アプリへのアクセスを失う可能性があります。(Microsoft Learn)

そのため、次の順序で展開するのが現実的です。

フェーズ対象実施内容
検証IT 管理者のテスト端末スクリプト戻り値、JSON 検証、レポート表示を確認する
パイロット情報システム部門、限定ユーザー非準拠時の表示文、修復手順、問い合わせ数を確認する
条件付き展開一部拠点、特定デバイス種別Conditional Access の影響を限定して確認する
全体展開全対象デバイス例外グループ、緊急解除手順、監査ログ確認を用意して適用する

特に避けたいのは、初回から Conditional Access の「準拠デバイスを要求」と組み合わせて全社展開することです。スクリプトの小さな不具合でも、アクセス障害として表面化します。最初は「レポートで検知する」運用に近い形で開始し、非準拠理由と修復手順が安定してからアクセス制御に組み込むと安全です。

レポートの見方:端末が報告した値を過信しない

カスタム コンプライアンス設定の結果は、Intune 管理センターのデバイス コンプライアンス レポートで確認できます。非準拠デバイスと設定のレポートでは、OS プラットフォームを選び、対象デバイスや設定単位で状態を確認できます。(Microsoft Learn)

ただし、レポートに表示される「Setting」列などの値は、端末側のスクリプトやアプリケーションが報告した値です。Microsoft Learn では、これらの値は Intune によって検証・強制されるものではなく、文脈情報として扱うべきだと説明されています。外部 URL、ファイルパス、自由記述の値が含まれる可能性もあるため、レポート値だけを根拠に管理操作を行わないよう注意が必要です。(Microsoft Learn)

実務では、次のように扱うと安全です。

レポート情報使い方避けるべき対応
準拠 / 非準拠の状態Conditional Access 影響の確認に使う例外理由を確認せず一括ブロックする
検出された ActualValueトラブルシューティングの手がかりにする端末が返した URL をそのまま開く
非準拠の設定名修復手順の案内に使うスクリプトの正当性確認なしにユーザー責任にする
最終チェックイン日時反映遅延の判断に使う直近変更が即時反映されないことを障害扱いする

また、レポートは端末のチェックインやポリシー更新タイミングに依存します。ポリシーを変更した直後にすべての画面が同時に更新されるとは限らないため、運用手順では「確認する画面」と「待機する時間」を明確にしておく必要があります。

評価サイクルと反映タイミング

Windows デバイスがカスタム コンプライアンス設定を含むポリシーを受け取ると、Intune Management Extension の有無を確認し、必要に応じてインストールします。その後、PowerShell スクリプトのダウンロード、実行、結果のアップロードが行われます。公式情報では、新規または更新された PowerShell スクリプトの確認と、検出スクリプトの実行は 8 時間ごととされています。ユーザーがデバイスで Check Compliance を選択した場合はスクリプト実行が行われますが、その時点で新規または更新されたスクリプトを確認するわけではありません。プッシュ通知でカスタム コンプライアンスをオンデマンド実行することもできません。(Microsoft Learn)

この仕様を踏まえると、管理者は次のような説明をユーザーやヘルプデスクに用意しておくべきです。

状況想定される原因案内例
修復したのにまだ非準拠評価サイクル待ち「反映まで時間がかかる場合があります。同期後も改善しない場合は連絡してください」
スクリプトを更新したのに結果が変わらない端末が新しいスクリプトをまだ取得していない「次回のチェックイン後に再評価されます」
Linux ユーザーが改善を確認したいIntune アプリ側で更新操作が必要「Intune アプリで Refresh を実行してください」
Windows ユーザーが改善を確認したいCompany Portal から同期できる「Company Portal で同期を実行してください」

「設定を直したのにすぐアクセスできない」という問い合わせは発生しやすいため、非準拠時の修復メッセージには、作業手順だけでなく「反映に時間がかかる場合がある」ことも含めると混乱を減らせます。

トラブルシューティング:まず見るべきエラーコード

カスタム設定が評価されない場合、Microsoft Learn では次のエラーコードが示されています。(Microsoft Learn)

エラーコード意味管理者が確認すべきこと
65007Script returned failureスクリプトがエラー終了していないか、例外処理が不足していないか
65008Setting missing in the script resultJSON に定義した SettingName がスクリプト出力に含まれているか
65009Invalid json for the discovered settingスクリプト出力が正しい JSON 形式か、出力が長すぎないか
65010Invalid datatype for the discovered settingJSON の DataType と実際の戻り値の型が一致しているか

Windows では、PowerShell スクリプトの最後に return $hash | ConvertTo-Json -Compress のような形で圧縮された JSON を返す設計が重要です。途中でログや余計な文字列を標準出力に出してしまうと、Intune が戻り値を正しい JSON として解釈できなくなる可能性があります。

Linux では、スクリプトがユーザーコンテキストで実行される点に注意します。公式情報では、Linux の検出スクリプトはユーザーコンテキストで実行され、昇格が必要なシステムレベル設定を確認できない例が示されています。(Microsoft Learn)

移行期限と Linux 管理で確認すべきこと

今回の「カスタム コンプライアンス設定」自体について、公式情報上で新たな強制移行期限が示されているわけではありません。既存の Windows / Linux 向けカスタム コンプライアンス設計をすぐに作り直す必要がある、という内容ではありません。

一方で、Linux 管理環境では RHEL のサポートバージョンを確認する必要があります。Microsoft Intune の新機能情報では、RHEL 9 LTS と RHEL 10 LTS のサポートが示され、RHEL 8 LTS のサポートは 2026年7月に終了すると説明されています。既に登録済みの RHEL 8 デバイスは登録状態を維持するとされていますが、管理者には対応バージョンへのアップグレード通知が推奨されています。(Microsoft Learn)

対象期限・状態管理者の対応
カスタム コンプライアンス設定そのもの公式情報上、新たな移行期限は確認できない既存ポリシーの JSON、スクリプト、割り当てを点検する
RHEL 8 LTS2026年7月に Intune サポート終了予定RHEL 9 / 10 への移行計画を作成する
RHEL 9 / 10サポート対象新規 Linux 管理の標準候補にする
Ubuntu Desktop 24.04 / 26.04 LTSサポート対象端末棚卸しで対象外バージョンを洗い出す

グローバル企業では、国や拠点ごとに Linux ディストリビューションが異なることがあります。Intune のポリシーを作る前に、デバイス インベントリで OS 名、バージョン、登録状態、利用者、拠点を一覧化し、対応対象と例外対象を分けておくと移行が進めやすくなります。

管理者がすぐ確認すべきチェックリスト

カスタム コンプライアンス設定を導入済み、またはこれから導入する管理者は、次の順番で確認すると効率的です。

優先度確認項目判断基準
高対象 OS がサポート範囲内かWindows Home、対象外 Linux、RHEL 8 が残っていないか
高Conditional Access と連動しているか非準拠時にどのアプリがブロックされるか把握できているか
高JSON とスクリプトの対応が取れているかSettingName、DataType、戻り値が一致しているか
高非準拠時の修復文が具体的かユーザーが読んで次に何をすべきか分かるか
中スクリプト出力が短く安定しているか余計なログ、長い配列、自由記述を返していないか
中レポート値を過信していないか端末報告値を補助情報として扱っているか
中Linux ポリシーの割り当てが正しいかデバイスグループに割り当てているか
低多言語対応ができているかen_US に加え、ja_JP や各拠点言語を用意しているか

特に優先度が高いのは、Conditional Access との関係です。カスタム コンプライアンス設定は、単なる監査項目ではなく、アクセス制御の入口になり得ます。非準拠判定の影響を把握しないまま全社展開すると、業務アプリへのアクセス障害として表面化します。

実務でのおすすめ設計

カスタム コンプライアンス設定は便利ですが、何でも詰め込むほど運用が難しくなります。おすすめは、1つのポリシーに「同じ目的のルール」だけをまとめることです。

たとえば、次のように分けると、レポート確認や障害切り分けがしやすくなります。

ポリシー例含める項目分ける理由
Windows firmware complianceBIOS、TPM、Secure Boot 関連ハードウェア起因の非準拠として扱いやすい
Windows security agent complianceEDR、VPN、社内エージェントソフトウェア配布・修復チームと連携しやすい
Linux baseline compliance対応ディストリビューション、暗号化、パスワード要件Linux 管理者がまとめて確認しやすい
Regional exception policy特定拠点や特殊端末向け条件グローバル標準と例外を混在させない

逆に、BIOS、EDR、ネットワーク、ユーザー設定、拠点例外を1つのスクリプトと JSON に詰め込むと、非準拠時の原因特定が難しくなります。最初は小さく始め、安定したら範囲を広げる方が安全です。

まとめ:まずは「影響する端末」と「ブロック条件」を確認する

Microsoft Intune のカスタム コンプライアンス設定は、Windows / Linux デバイスに対して、標準項目では表現しにくい社内セキュリティ基準を適用できる強力な仕組みです。JSON ファイルで準拠条件を定義し、検出スクリプトで実際の端末状態を返すことで、BIOS、TPM、社内エージェント、Linux 固有設定などをコンプライアンス判定に組み込めます。

一方で、カスタム コンプライアンスは Conditional Access に影響するため、設計ミスがそのままアクセス障害につながります。管理者は、対象 OS、RHEL 8 の移行要否、JSON とスクリプトの整合性、評価サイクル、レポート値の扱いを確認したうえで、必ずパイロット展開から始めるべきです。

次に取るべき行動は明確です。まず Intune 管理センターで Windows / Linux の対象デバイスを棚卸しし、RHEL 8 や対象外 Linux が残っていないか確認してください。そのうえで、既存または新規のカスタム コンプライアンス ポリシーについて、スクリプト出力、JSON のルール、非準拠時のユーザー案内、Conditional Access のブロック範囲を順番に点検しましょう。

この記事を書いた人

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

コメント

コメントする

目次