【Azure AD】AADCなしでPTA⇔PHSを切り替える方法

IT

この記事にたどり着いた方は当然ご存じかと思いますが、Azure ADとオンプレミスのADをAADC(Azure AD Connect)を使って連携し、オンプレADのIDを使ってAzure ADの認証を行うことができます。

認証の方法は2つ。AzureADで認証させるPHS(パスワードハッシュ同期)とオンプレADで認証させるPTA(パススルー認証)があります。

PTAではなくPHSを採用している企業が多いですが、その理由の一つとして”可用性”が挙げられます。PTAだとオンプレADで認証させる必要があるので、Azure ADが正常稼働していても、オンプレADやPTAエージェント、それらがのっているNWがダウンしてしまうと、Azure ADにサインインすることができなくなってしまいます。

ではPTAを採用している組織は障害発生時に何もできないのかというと、PHSに切り替えれば事業継続が可能になります。ただし、PTA⇔PHSの切り替えはAADCで行うのが基本です。AADCやAADCのNWがコケていたら何もできません。

そこで今回は、AADCがなくてもPTA⇔PHSを切り替える方法をご紹介します。

PTA⇔PHSの切り替え方法

前提

PTA⇔PHSの切り替えは障害が発生してから行いますが、障害が発生する前にやっておかないといけないことがあります。

それは「パスワードハッシュの同期」の有効化です。

これをAzure ADと正常に同期できるうちにやっておかないと、いざPHSに切り替えてもAzure AD側にハッシュ化されたパスワードが存在しないので認証できません。

また、PTAが使えない状態でもAzure ADに管理者アカウントでサインインできる必要があります。そのため、Break GlassアカウントやオンプレADと同期しない管理者用クラウドIDを事前に準備しておいてください。

PTA⇔PHSの切り替え

では実際にPTAとPHSの切り替えをやってみましょう。

想定としては、オンプレAD、AADCが置いてあるデータセンターに障害が発生し、外部と通信が取れないとします。そのため、外部からAADCに接続できないだけでなく、データセンター内部からAADCに接続、PHSへの切り替えができたとしても、その設定変更はAzure ADへ反映されません。(そもそもAADCの設定変更にはAzure ADの認証が必要なので、設定変更すらできないはず)

1.インターネットに接続できるWinodwsを用意する

まずはインターネット(厳密にはAzure AD)に接続できるWindowsを用意します。Windows Serverでなくても良いですが、後述するPTAエージェントがインストールできるPCである必要があります。
※今回はWindows10(21H1)で行います。

2.PTAエージェントをインストール

PTAエージェントとは、Azure ADとオンプレADの認証用通信を仲介してくれるソフトウェアです。PTAを構成するとAADCに自動的にインストールされますが、冗長性を持たせるために複数サーバにインストールすることもできます。

PTAエージェントはAzure Active Directory管理センターの
[Azure Active Directory]-[Azure AD Connect]-[パススルー認証]
のPTAエージェント一覧画面からダウンロードできます。
コチラから直接ダウンロードすることも可能です。

インストーラーのダウンロードが終わったら、1.で用意したPCにインストールしてください。インストールパスの指定等もない単純なインストーラーですが、インストールにはローカルPCの管理者権限が必要なのと、AzureADのグローバル管理者で認証する必要があるので注意してください。

3.PTA→PHSの切り替え

ここまで終われば、あとはPowerShellでコマンドを実行するだけです。

1.PowerShellを起動してPTAエージェントのディレクトリに移動

cd "C:\Program Files\Microsoft Azure AD Connect Authentication Agent"

2.モジュールをインポート

Import-Module .\Modules\PassthroughAuthPSModule

3.現在のPTAの状態を確認

Get-PassthroughAuthenticationEnablementStatus

実行結果からPTAが有効になっていることがわかる。

Initializing Environment: AzureCloud
Please enter your cloud only global admin credentials.
Pass-through authentication enablement status: 'Enabled'

4.PTAを無効にし、PHSに切り替える

Disable-PassthroughAuthentication

もう一度”Get-PassthroughAuthenticationEnablementStatus”コマンドを使うことで、PTAが無効になっていることが確認できる。

Initializing Environment: AzureCloud
Please enter your cloud only global admin credentials.
Pass-through authentication enablement status: 'Disabled'

管理画面上でもパススルー認証が無効になっていることが確認できます。

PTAが無効になっていると、PHSで認証することができるようになります。

なお、PTAエージェントインストールの理由はこのPowerShellモジュールを使いたかっただけなので、モジュールさえインストールできればPTAエージェントのインストールは不要かもしれません。(未検証)

PHS→PTAへの戻し方

では障害が復旧したらどうすればいいのかという、先ほど同じようにPowerShellでPTAを有効にします。

PTAを有効にするには次のコマンドを実行してください。

Enable-PassthroughAuthentication

確認コマンドで状態を確認すると、PTAが有効に戻ってることが分かります。

Initializing Environment: AzureCloud
Please enter your cloud only global admin credentials.
Pass-through authentication enablement status: 'Enabled'

GUIでもパススルー認証の項目が有効になっています。

注意点

これはあくまで私見ですが、PowerShellでPTAを無効にしたのであれば、障害復旧後もAADCではなくPowerShellでPTAを有効にすべきだと思います。

というのも、いくらPowerShellでPTA⇔PHSを切り替えても、その状態はAADCに反映されないように見受けられるからです。以下の画像はPowerShellでPTAを無効にした状態で、AADCでユーザーのサインイン方式を確認している画面です。

見ての通り、PTAが選択されたままになっています。そのため、PowerShellで設定を切り替えた箇所はPowerShellで元に戻すのがベターかと思いました。

また、復旧してPTAに戻した後は速やかにPTAエージェントを作業PCから削除すべきだと思います。
作業用PCがPTAエージェントとして動作し、認証の失敗を引き起こす可能性があるかもしれません。

この記事を書いた理由

そもそもなんでこの記事を書いたのかというと、MSのサポートが情報を提供してくれず、私と同じように困ったことがある人が少なからずいるのではないかと思ったからです。

MSのDocsの次のページには以下の記載があります。

原文

Enabling Password Hash Synchronization gives you the option to failover authentication if your on-premises infrastructure is disrupted. This failover from Pass-through Authentication to Password Hash Synchronization is not automatic. You’ll need to switch the sign-in method manually using Azure AD Connect. If the server running Azure AD Connect goes down, you’ll require help from Microsoft Support to turn off Pass-through Authentication.

日本語訳

パスワード ハッシュ同期を有効にすると、オンプレミスのインフラストラクチャが中断された場合に認証をフェールオーバーするオプションが提供されます。 パススルー認証からパスワード ハッシュ同期へのこのフェールオーバーは自動的には行われません。 Azure AD Connect を使用して手動でサインイン方法を切り替える必要があります。 Azure AD Connect を実行しているサーバーで障害が発生した場合、パススルー認証をオフにするには、Microsoft サポートに対処方法をお問い合わせください。

この記載の指示に従いサポートに問い合わせたら、返ってきた回答は「AADCを再構築してください。AADCを再構築する方法を案内します。」でした。
そりゃAADC再構築できる状態ならAADC再構築するかもだけど、その間AzureAD認証できないし、AADC以外のNW等の障害が発生してたらどうすんの?とかいろいろな考えが頭を過りました。

当初、外れの担当者を引いたのかと思いましたが、O365の管理センターから問い合わせても、AzureADのサポートリクエストから問い合わせても結果は同じでした。

そこで今回紹介した方法を自力で見つけ出し、MSに問い合わせたところ「この方法でも動作するので問題ない」という話だったため、この方法を使うことにしました。

そもそも、PTAとPHSのFailoverの話をネットで探すと、MSにチケット出したら対応してくれるみたいなニュアンスの話がいくつか出てきますが、あれは嘘?というか少なくとも日本では対応してくれません。Docsの記載が曖昧で多くの人を勘違いさせているようですが、MSは復旧までの道のりを示してくれるだけなので注意が必要です。

最後になりますが、MSのサポートにはいつも大変お世話になっており、攻撃する意図がある訳ではないということをご理解ください。

コメント

タイトルとURLをコピーしました