はじめに
昨日までご機嫌よく動いていたAzAcount処理が急に接続エラーとなり少々困る事態となりました。色々調査しましたが現時点では根本的原因は不明な状態ですが、試行続けた結果、代替方法を見つけましたので、やったこと含めてまとめます。
2025/10/28追記:根本対応策が見つかりました!
前提・症状
- サービスプリンシパル(アプリケーション)を用いたクライアントシークレットでの非対話認証
- サービスプリンシパルに閲覧権限を付与
- Connect-AzAccountで要求エラーが発生
- 接続エラー発生のマシンはWindowsServer2022AzureEdition
- MgGraph、ExchangeOnline、PNP.Powershellが同居
- マシンはAzureVM
(最新)解消するためにやったこと
根本解決のための重要ポイント
おそらく我が社と同じように、プライベートDNSサーバを構築されているかと思いますが、そのDNSサーバの構築場所が重要です。
プライマリーのプライベートDNSサーバはAzure内かAzure外(オンプレ)かをまず確認してください。Azure内に構築してから接続できなくなった場合は、当方法でおそらく解決できると思います。
プライベートDNSサーバで条件付フォワーダの設定
Azure内にプライベートDNSサーバを構築していることが前提です。逆を言うと、Azure外にDNSサーバがある場合は、当設定をするとおそらく接続エラーになると思います。
結論から申しますと、Azure内にDNSサーバを構築した場合、management.azure.comに関しては、条件付きフォワーダの設定で特別なIPアドレスを解決先に指定する必要がありました。
設定は以下のとおりです。
DNSドメイン:management.azure.com
IPアドレス:168.63.129.16
このActiveDirectoryに条件付きフォワーダ―を保存し、次の方法でレプリケート:任意
※上記のAzure外にDNSサーバがあり、それをプライマリーDNSとして使っているかつそのDNSを見てAzurePowershell等の処理をする場合はおそらく接続エラーとなると思われます。
私の簡単な理解ですが、168.63.129.16はどうやらAzure内専用のDNSのようで、Azure内からの通信なのに、プライベートDNSでは内部解決できずAzure外から問い合わせが来たことにより、想定外の動きになりエラーになったため接続できなくなったのだと思われます。
また条件付フォワーダ設定時、検証エラーになりますが、必ずエラーになる仕様のようですので無視して登録してOKです。
(~2025/10/27まで)解消するためにやったこと
VMの再起動
定番の再起動を実施しました。
サービスプリンシパルの正常性の確認
初歩的なことですが、クライアントシークレットor証明書の有効期限が切れていないか確認しました。
OSバージョンの異なる他マシンで接続検証
他OSバージョンの異なるマシンから同じコマンドレットで接続できるか確認しました。
- クライアント端末から実行
- 物理サーバから実行
- 異なるOSのAzureVMから実行(azureマイグレーションでWindowsServer2019)
ここで他バージョンのOSマシンから接続できるなら現時点では最良の解決策だと思います。後述する方法を試しましたが、残念ながら解決に至らず時間と手間だけかかりました。
Azバージョンアップ・ダウングレード
正常稼働するAzバージョンにアップグレード・ダウングレードします。Azは包括的なモジュールのためAzAccounts単体もバージョンを確認し、アップグレード・ダウングレード実行してみてください
- Azのアップグレード・ダウングレード
- AzAccountsのアップグレード・ダウングレード
##ポリシーの変更
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
##Azのアップグレード・ダウングレード、バージョンは正常稼働するバージョンを指定
Uninstall-Module -Name Az
Install-Module -Name Az -RequiredVersion 5.1.1
##AzAccountsのアップグレード・ダウングレード、バージョンは正常稼働するバージョンを指定
Uninstall-Module -Name AzAccounts
Install-Module -Name AzAccounts -RequiredVersion 5.1.1
明示的にTLS1.2を指定
OSバージョンによっては明示的に指定が必要になるようです。
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
PowerShell7のインストール
WindowsPowerShell5.1がWindowsにはデフォルトでインストールされてますが、PowerShell7で正常動作する可能性もあるようですので試してみてました。
WindowsPowerShellとは全くの別物ですのでご安心ください。
最終的な弊社の結論
色々試しましたが、結果的に他AzureVMの異なるバージョンOS上なら接続できましたので、それを利用するようにしました。
個人的には唐突に使えなくなったので、AzureEditionの特徴である再起動不要でパッチがあたっているのが影響しているのではと邪推しております。
まとめ
以上で、『【原因不明】Connect-AzAccountが急に使えなくなった時の対策』でした。
我が社のようにAzure内にプライベートDNSサーバを構築した場合、根本手順を実行することで解消できるのではと思います。


