はじめに
サーバを Azure Arc にオンボードする際には、Entra ID の資格情報が必要です。オンボードで利用するコマンドの azcmagent connect が証明書ストアに保存されている証明書を利用できるようになっていたので実際に試しました。
azcmagent connectとazcmagent disconnectに Windows 証明書ストアの証明書を使用する認証オプションを追加しました。
証明書の作成
今回の動作確認では自己証明書を利用します。
以下の様に PowerShell を利用して自己証明書を作成します。
PS C:\Windows\system32> New-SelfSignedCertificate -Subject "CN=ArcSPN0805" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256
Windows の証明書ストアに証明書がインポートされるので、秘密鍵を含まない cer 形式と秘密鍵を含む pfx 形式の2つでエクスポートします。前者はサービスプリンシパルに登録、後者はオンボードするサーバに登録します。
サービスプリンシパルの作成
Entra ID のアプリ登録からサービスプリンシパルを作成します。

アプリ登録
作成したサービスプリンシパルに対して cer な証明書を追加します。これでサービスプリンシパル側の準備は完了です。

証明書の追加
権限の付与
サービスプリンシパルを用いてサーバを Azure Arc にオンボードするためには、サービスプリンシパルが Azure サブスクリプションまたはリソースグループに対して権限を持っている必要があります。組み込みの Azure Connected Machine Onboarding(b64e21ea-ac4e-4cdf-9dc9-5b892992bee7)が用意されているので、このロールをサービスプリンシパルに対して付与します。

権限の付与
オンボード
オンボードしたいサーバで PowerShell を管理者権限で起動した上で pfx な証明書をインポートします。表示される証明書の Thumbprint の値が後続作業で必要なので控えておきます。
Import-PfxCertificate –FilePath C:\Users\Administrator\Desktop\arcSPN0805.pfx -CertStoreLocation Cert:\CurrentUser\my -Password (ConvertTo-SecureString -String "YourPassword" -Force –AsPlainText)
Directory: Microsoft.PowerShell.Security\Certificate::CurrentUser\my
Thumbprint Subject
---------- -------
62DD4EC8D1889EDFD2D23B64898FE78FBFC76F55 CN=ArcSPN0805
そして、インストーラで Connected Machine Agent をインストールします。azcmagent コマンドが使えるようになったら、以下の様にコマンドを実行してサーバをオンボードします。–service-principal-cert-thumbprint のオプションで証明書の拇印を指定するのがポイントです。
azcmagent connect --subscription-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" --resource-group "rg-arc-je" --location "japaneast" --service-principal-id "40e168c7-11fb-4af3-aa4c-016ed02bc2d4" --tenant-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" --service-principal-cert-thumbprint "62DD4EC8D1889EDFD2D23B64898FE78FBFC76F55"
設定が正しければ、以下の様にエージェントのステータスが Connected になります。
PS C:\Users\Administrator\Desktop> azcmagent show
Resource Name : WIN-1BKBAVH07V1
Resource Group Name : rg-arc-je
Resource Namespace : Microsoft.HybridCompute
Resource Id : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-arc-je/p
roviders/Microsoft.HybridCompute/machines/WIN-1BKBAVH07V1
Subscription ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Tenant ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
VM ID : 4266a45b-3810-4648-8f96-951fd16d9efa
Correlation ID : 11d2689c-21c0-4e0a-acd2-f486267528d5
VM UUID : unknown
Location : japaneast
Cloud : AzureCloud
Agent Version : 1.54.03105.2362
Agent Logfile : C:\ProgramData\AzureConnectedMachineAgent\Log\himds.log
Agent Status : Connected
Agent Last Heartbeat : 2025-08-05T11:01:11-07:00
なお、Azure ポータルから生成されるオンボードスクリプトをそのまま利用することはできません。オンボードスクリプトはシークレットによる認証を用いているためです。スクリプトを利用したい場合には、スクリプト内の azcmagent connect 部分を自分で修正する必要があります。
まとめ
証明書認証なサービスプリンシパルを利用して、サーバを Azure Arc に登録してみました。つまづくことなくすんなりとオンボードできました。
Note
- 当サイトは個人のブログです。このブログに示されている見解や意見は個人的なものであり、所属組織の見解や意見を表明するものではありません。
- 公開情報を踏まえて正確な情報を掲載するよう努めますが、その内容の完全性や正確性、有用性、安全性、最新性について一切保証しません。
- 添付文章やリンク先などを含む本サイトの内容は作成時点でのものであり、予告なく変更される場合があります。