この記事の内容
皆様、こんにちは。Configuration Manager / WSUS サポート チームです。
本記事では、クラウド管理ゲートウェイ (Cloud Management Gateway / CMG) を経由して Microsoft Configuration Manager のクライアントをインストールする際に、[CCMSetup.exe] がどのように管理ポイントを選択し、認証方式を判断し、インストール ファイルを取得するのかを、実際のログに沿ってご案内します。
本記事の対象は、[CCMSetup.exe] のコマンド ラインで CMG を指定した場合の管理ポイントの選択、Microsoft Entra ID を使用した認証、および CMG 経由でのコンテンツ取得です。CMG の構築手順、Azure 側の設計、サイジングやコスト見積は対象外です。また、インストール後のクライアント登録とサイト割り当ては、クライアント自身のネットワーク位置の判定に依存するため対象外とし、留意事項でのみ触れます。
[CCMSetup.exe] によるクライアント インストールの一般的な流れ (マニフェストの読み込み、前提コンポーネントの判定、[client.msi] の起動など) は本記事では繰り返しません。次の記事で説明しておりますので、あわせてご参照ください。
全体の流れ
CMG を指定して [CCMSetup.exe] を実行した場合、処理は次の順序で進みます。
- [CCMSetup.exe] が自身をコピーし、[ccmsetup] サービスとして処理を継続する
- コマンド ラインで指定された Microsoft Entra ID のオンボード情報をクライアントへ保存する
- 使用できる認証手段を判定し、インストール元となる管理ポイントの候補を作成する
- CMG の管理ポイントを選択し、Microsoft Entra ID のトークンとクライアント認証用のトークンを取得する
- CMG 経由で管理ポイントへコンテンツの場所を問い合わせる
- CMG に紐づく Azure Storage からインストール ファイルをダウンロードする
- [client.msi] を起動し、クライアント コンポーネントを構成する
なお、手順 3 で使用できる認証手段がないと判定された場合、CMG の管理ポイントは候補から除外されます。このときの動作は、後述の [認証手段がない場合の動作] でご説明します。
検証環境について
本記事に掲載するログは、弊社検証環境で 2026 年 8 月 28 日に取得したものです。読者環境で同じ行が記録されるとは限りませんので、動作の考え方をご確認いただく目的でご覧ください。コンピューター名、FQDN、サイト コード、テナント ID、アプリケーション ID、共有アクセス署名などは、一貫したプレースホルダーへ置き換えています。長い行は読みやすさのために一部を省略しています。
| 項目 | 内容 |
|---|---|
| サイト | プライマリ サイト 1 つ。サイト バージョン 5.00.9141.1000 |
| 管理ポイント | サイト システム サーバー 1 台。[CMG トラフィックの許可] と [インターネット向け] を有効 |
| CMG | 仮想マシン スケール セット (VMSS) ベース。Microsoft Entra ID のテナントと関連付け済み |
| クライアント | Windows 11。Microsoft Entra ハイブリッド参加済みで、CMG と同じテナントに参加 |
| クライアント ベースライン バージョン | 5.00.9141.1011 |
インターネット上のクライアントを模擬するため、検証ではクライアントからイントラネットの管理ポイントおよび配布ポイントへ到達できない状態を作ったうえで [CCMSetup.exe] を実行しています。
なお、[CCMALWAYSINF] プロパティは使用していません。これは値を 1 に設定すると、クライアントが常にインターネット ベースでありイントラネットには一切接続しないことを指定するプロパティで、クライアントの接続の種類は [常にインターネット] になります。本記事では [CCMSetup.exe] 自身がどの管理ポイントを選択するかを確認することが目的のため、クライアントの接続の種類は既定のまま、経路の到達可否だけを変えています。
CMG を指定するときのコマンド ライン
Microsoft Learn では、Microsoft Entra ID を使用して CMG 経由でクライアントをインストールする際のコマンド ラインが、次の形で示されています。
1 | ccmsetup.exe /mp:<インストール元の管理ポイント> CCMHOSTNAME=<インターネット向け管理ポイント> SMSSITECODE=<サイト コード> SMSMP=<初期管理ポイント> AADTENANTID=<テナント ID> AADCLIENTAPPID=<クライアント アプリの ID> AADRESOURCEURI=<サーバー アプリの ID> |
CMG の URL を確認する
[/mp] と [CCMHOSTNAME] に指定する値は、既にサイトへ登録済みで CMG の情報を受け取っているクライアント上で、管理者として次のコマンドを実行して取得します。
1 | (Get-WmiObject -Namespace Root\Ccm\LocationServices -Class SMS_ActiveMPCandidate | Where-Object {$_.Type -eq "Internet"}).MP |
返される値は、CMG のサービス名とプロキシのパス、および CMG が公開している管理ポイントの ID を連結した次の形式です。
1 | <CMG のサービス名>/CCM_Proxy_MutualAuth/<管理ポイントの ID> |
取得した値は、パラメーターとプロパティで指定の仕方が異なります。
| 指定先 | 指定する値 |
|---|---|
| [/mp] パラメーター | 取得した値の先頭に https:// を付ける |
| [CCMHOSTNAME] プロパティ | 取得した値をそのまま使用し、https:// などのプレフィックスは付けない |
このコマンドは、クライアントが保持しているインターネット向け管理ポイントの一覧を参照します。そのため、CMG を構築し、クライアントがその情報を受け取っている必要があります。詳細は クライアントのインストール パラメーターとプロパティ をご参照ください。
URL に含まれる 2 つのプロキシのパス
CMG は、同じ管理ポイントに対して次の 2 つのパスを公開しています。上記のコマンドで返るのは [CCM_Proxy_MutualAuth] の形式ですが、クライアントのログには [CCM_Proxy_ServerAuth] も現れるため、両方を押さえておくとログを追いやすくなります。
| パス | 主に使用される場面 |
|---|---|
| /CCM_Proxy_MutualAuth/<管理ポイントの ID> | PKI で発行されたクライアント認証証明書による相互認証 |
| /CCM_Proxy_ServerAuth/<管理ポイントの ID> | Microsoft Entra ID のトークン、または一括登録トークンによる認証 |
ただし、後述の [クライアントに Microsoft Entra ID の情報が保存されている場合の動作] のとおり、CMG の管理ポイントを使用できるかどうかは、指定したパスの形式ではなく、クライアントがいずれかの方法で認証できるかどうかで決まります。
認証手段がない場合の動作
はじめに、クライアントを削除した状態から、Microsoft Entra ID 関連のプロパティを付けずに [CCM_Proxy_MutualAuth] のパスを指定して実行しました。
1 | ccmsetup.exe /mp:https://<CMG のサービス名>/CCM_Proxy_MutualAuth/<管理ポイントの ID> CCMHOSTNAME=<CMG のサービス名>/CCM_Proxy_MutualAuth/<管理ポイントの ID> SMSSITECODE=<サイト コード> |
クライアント認証証明書の探索
[CCMSetup.exe] は、コンピューターの [個人] 証明書ストアからクライアント認証に使える証明書を探します。検証環境のクライアントには証明書が複数ありましたが、いずれも [クライアント認証] の拡張キー使用法を持たないなど、Configuration Manager が要求する条件を満たしていませんでした。
1 | The 'MY' of 'Local Computer' store has 4 certificate(s). Using custom selection criteria based on the machine name. |
CMG の管理ポイントが候補から除外される
証明書が見つからず、かつコマンド ラインに Microsoft Entra ID の情報がないため、[CCMSetup.exe] は指定した CMG の管理ポイントを候補から除外しました。
1 | MP 'https://<CMG のサービス名>/CCM_Proxy_MutualAuth/<管理ポイントの ID>' is HTTPS. Client does not allow to use PKI issued cert and is not AAD capable. Ignoring this MP. |
この行は、次の 2 つの条件がどちらも満たされないため、この HTTPS の管理ポイントは使用できないという判定を示しています。
- PKI で発行されたクライアント認証証明書を使用できる
- Microsoft Entra ID のトークンを取得できる (ログ上の [AAD capable])
結果として使用された管理ポイント
CMG の管理ポイントが除外されたため、[Source List] には Active Directory ドメイン サービス (AD DS) から取得したイントラネットの管理ポイントだけが残りました。
1 | Source List: |
この検証ではイントラネットの管理ポイントへ到達できない状態にしていたため、インストールは進まず、再試行が予約されました。
1 | Next retry in 10 minute(s)... |
CMG を指定したはずなのにイントラネットの管理ポイントが使われている、あるいはインストールが進まない場合は、まず [Ignoring this MP] の行の有無をご確認ください。
各ステップとログの追跡方法
ここからは、パスの [CCM_Proxy_MutualAuth] を [CCM_Proxy_ServerAuth] に置き換え、Microsoft Entra ID 関連のプロパティを追加して実行したときのログに沿って、各ステップをご説明します。イントラネットの管理ポイントへ到達できない状態は、前のセクションと同じです。
1 | ccmsetup.exe /mp:https://<CMG のサービス名>/CCM_Proxy_ServerAuth/<管理ポイントの ID> CCMHOSTNAME=<CMG のサービス名>/CCM_Proxy_ServerAuth/<管理ポイントの ID> SMSSITECODE=<サイト コード> AADTENANTID=<テナント ID> AADCLIENTAPPID=<クライアント アプリの ID> AADRESOURCEURI=<サーバー アプリの ID> |
関連ログ
| ログ名 | 既定の保存場所 | 主な用途 |
|---|---|---|
| [ccmsetup.log] | %WinDir%\ccmsetup\Logs\ccmsetup.log | 管理ポイントの選択、認証方式の判定、コンテンツの取得元、[client.msi] の起動と最終結果を確認します。 |
| [client.msi.log] | %WinDir%\ccmsetup\Logs\client.msi.log | [client.msi] が実行した Windows Installer の各アクションと結果を確認します。 |
| [ClientIDManagerStartup.log] | %WinDir%\CCM\Logs\ClientIDManagerStartup.log | インストール後のクライアント登録の成否を確認します。 |
| [LocationServices.log] | %WinDir%\CCM\Logs\LocationServices.log | 管理ポイントの一覧取得と切り替えの契機を確認します。 |
| [ClientLocation.log] | %WinDir%\CCM\Logs\ClientLocation.log | 実際に使用している管理ポイントとサイト割り当てを確認します。 |
サーバー側では、CMG のログのほか、管理ポイントの [CCM_STS.log]、[MP_RegistrationManager.log]、[ClientAuth.log] を確認します。
ステップ 1 : ブートストラップからサービスへの引き継ぎ
[CCMSetup.exe] は、まず自身を %WinDir%\ccmsetup へコピーし、[ccmsetup] サービスとして処理を継続します。このとき、コマンド ラインで指定したプロパティがサービス側へ引き継がれます。
1 | ==========[ ccmsetup started in process <プロセス ID> ]========== |
最初に記録される [CcmSetup is exiting with return code 0] は、ブートストラップ プロセスがサービスへ処理を引き渡して終了したことを示すもので、インストールの最終結果ではありません。続けて、サービスとして起動した後のセッションを追跡します。
1 | ==========[ ccmsetup started in process <プロセス ID> ]========== |
ステップ 2 : Microsoft Entra ID のオンボード情報の保存
[CCMSetup.exe] は、Microsoft Entra ID で認証するために必要な情報をクライアントへ保存します。
1 | Updating AAD onboarding info to ClientAppId '<クライアント アプリの ID>', ResourceUri '<サーバー アプリの ID>', AADAuthUrl 'https://login.microsoftonline.com/', UserAuthReady 1 |
ステップ 3 : 管理ポイントの候補への CMG の採用
前のセクションと同様にクライアント認証証明書は見つかりませんでしたが、今回は Microsoft Entra ID による認証が使えるため、[Ignoring this MP] は記録されず、CMG の管理ポイントが [Source List] の先頭に採用されています。
1 | Domain joined client is in Intranet |
検証環境のクライアントはドメインに参加しているため、AD DS から取得したイントラネットの管理ポイントも候補に加わり、候補は 2 つになりました。
ステップ 4 : 管理ポイントの選択と Microsoft Entra ID のトークン取得
[CCMSetup.exe] は候補を順に確認し、応答が得られた管理ポイントを使用します。今回は [Source List] の先頭にある CMG の URL が確認され、Microsoft Entra ID のデバイス トークンを取得したうえで、CMG 上の [CCM_STS] からクライアント認証用のトークンを取得しました。
1 | Searching for a valid online MP... |
取得したトークンは、以降の要求のヘッダーへ付与されます。[CcmTokenAuth=1] は、トークン認証を使用した要求であることを示します。
1 | ccmsetup: Host=<CMG のサービス名>, Path=/CCM_Proxy_ServerAuth/<管理ポイントの ID>/CCM_Client, Port=443, Protocol=https, CcmTokenAuth=1, Flags=0x44300, Options=0x4e0 |
なお、このトークンは [S-1-5-18] (Local System) に対して発行され、キャッシュの有効期限は取得から 8 時間後でした。
ステップ 5 : コンテンツの場所の問い合わせ
[CCMSetup.exe] は、CMG 経由で管理ポイントへコンテンツの場所を問い合わせます。イントラネット経由の場合と異なり、パスが [ccm_system_tokenauth/request] になっている点にご注目ください。トークン認証で処理される要求であることを示しています。
1 | Searching for DP locations from MP(s)... |
続いて、CMG の [downloadrestservice.svc] へコンテンツの一覧を要求し、これを配布ポイントの場所として採用しています。
1 | Using DP location https://<CMG のサービス名>/downloadrestservice.svc/getcontentxmlsecure?dp=*&pid=<パッケージ ID>&cid=<パッケージ ID>&tid=*&iss=<署名証明書の拇印>&alg=<署名アルゴリズム>&st=<開始日時>&et=<終了日時>&ver=3 |
ステップ 6 : Azure Storage からのダウンロード
CMG をクラウドの配布ポイントとして使用する構成では、実際のファイルは CMG に紐づく Azure Storage から取得されます。ログには、共有アクセス署名 (SAS) を含む BLOB の URL が記録されます。
1 | Downloading 'https://<CMG のストレージ アカウント>.blob.core.windows.net:443/content-<パッケージ ID>/ccmsetup.cab?<SAS トークン>' to 'C:\WINDOWS\ccmsetup\\ccmsetup.cab' |
マニフェストの確認後、必要なファイルも同じ Azure Storage から Background Intelligent Transfer Service (BITS) でダウンロードされます。
1 | Adding file 'https://<CMG のストレージ アカウント>.blob.core.windows.net:443/content-<パッケージ ID>/x64/client.msi?<SAS トークン>' to BITS job, saving as 'C:\WINDOWS\ccmsetup\client.msi'. |
ステップ 7 : client.msi の実行と完了
ダウンロード後の処理はイントラネット経由の場合と同じで、[client.msi] が起動されます。CMG を指定した際のプロパティは [client.msi] へそのまま渡されます。
1 | Installing version 5.00.9141.1000 of the client with product code {<製品コード>} |
この検証では、[CCMSetup.exe] の起動から終了まで約 3 分 40 秒でした。所要時間は回線速度、Azure リージョン、ダウンロード対象によって変わります。
クライアントに Microsoft Entra ID の情報が保存されている場合の動作
前のセクションのインストールが完了した後、同じクライアントに対して、Microsoft Entra ID 関連のプロパティを付けずに [CCM_Proxy_MutualAuth] のパスを指定して実行しました。[認証手段がない場合の動作] と同じコマンド ラインですが、結果は異なります。
サービスとして起動した [CCMSetup.exe] のコマンド ラインには、コマンド ラインで指定していない Microsoft Entra ID の情報が追加されています。これは、直前のインストールで保存された値がクライアントから読み込まれたためです。
1 | Ccmsetup command line: "C:\WINDOWS\ccmsetup\ccmsetup.exe" /runservice "/mp:https://<CMG のサービス名>/CCM_Proxy_MutualAuth/<管理ポイントの ID>" AADAUTHURL="https://login.microsoftonline.com/" AADCLIENTAPPID="<クライアント アプリの ID>" AADRESOURCEURI="<サーバー アプリの ID>" ... |
その結果、[Ignoring this MP] は記録されず、CMG の管理ポイントがそのまま使用されました。
1 | Checking the URL 'http://<管理ポイントの FQDN>/CCM_Client/ccmsetup.cab' |
この検証から、CMG の管理ポイントを使用できるかどうかは、URL のパスが [CCM_Proxy_MutualAuth] か [CCM_Proxy_ServerAuth] かで決まるのではなく、クライアントがいずれかの方法で認証できるかどうかで決まることが確認できます。同じコマンド ラインでも、クライアントの状態によって結果が変わるため、検証結果を比較する際はクライアントの初期状態をそろえてください。
留意事項
CCMSetup.exe の完了はインストールの完了のみを示す
戻り値 0 は、クライアント コンポーネントのインストールが完了したことを示します。その後のクライアント登録、サイト割り当て、ポリシー取得までを保証するものではありません。
インストール後にクライアントがどの管理ポイントを使用するかは、[CCMHOSTNAME] の値だけでなく、クライアント自身がインターネット上にあると判定するかどうかによって決まります。本検証のクライアントはドメインに参加しており、ネットワーク位置がイントラネットと判定されたため、割り当て先はイントラネットの管理ポイントとなりました。
1 | Client is now successfully assigned to site '<サイト コード>' |
このため、インストール後に CMG を経由して登録される流れは本記事の検証範囲外です。実際のインターネット上のクライアントでの動作については、Microsoft Learn の [Microsoft Entra ID を使用してクライアントをインストールする] をご参照ください。
検証時のイントラネット経路の扱い
本検証では、インターネット上のクライアントを模擬するために、クライアントからイントラネットの管理ポイントおよび配布ポイントへ到達できない状態を作りました。この方法は動作確認のための一時的な措置です。実運用の環境で同様の設定を行わないでください。
ログ確認のポイント
CMG が使われたかどうかを判断する行
[ccmsetup.log] では、次の行から CMG が使用されたかどうかを判断できます。
- [Source List] の [MPs:] に CMG の URL が並んでいるか
- [Ignoring this MP] が記録されていないか
- [Found a valid online MP] で選択されたのが CMG の URL か
- [Using DP location] と [Adding file] の URL が CMG または Azure Storage を指しているか
ccmsetup.log のセッション分割に注意する
[CCMSetup.exe] は、ブートストラップ プロセスとサービスの 2 つのセッションを記録します。また、ログが一定のサイズを超えると、ファイル名に日時が付いたファイルへローテーションされます。開始行から終了行までを 1 つの実行として、必要に応じてローテーション後のファイルもあわせて確認してください。
1 | ==========[ ccmsetup started in process <プロセス ID> ]========== |
途中の失敗行だけで判断しない
CMG 経由のインストールでは、クライアントの WMI 名前空間が未作成であることによる [Failed to connect to machine policy namespace. 0x8004100e] や、フォールバック ステータス ポイントが未構成であることによる状態メッセージの送信失敗など、処理の途中に失敗を示す行が記録されます。これらは後続の処理が成功していれば問題ではありません。最終的な [CcmSetup is exiting with return code] まで確認して判断してください。
参考リンク
- Microsoft Entra ID を使用してクライアントをインストールする
- CMG のトークンベースの認証
- クライアント インストールのプロパティについて
- CCMSetup.exe の /mp パラメーター
- クラウド管理ゲートウェイの概要
- CMG のクライアント認証を構成する
- Configuration Manager のログ ファイルについて
- CCMSetup.exe によるクライアント インストールについての動作説明
- クラウド管理ゲートウェイ (CMG) の設計ポイントについて (1)
- クラウド管理ゲートウェイ (CMG) の設計ポイントについて (2)
- クラウド管理ゲートウェイ (CMG) の構築手順例