はじめに
Microsoft Entra Kerberos 認証(旧名称:Azure AD Kerberos 認証)を検証してみました。
この構成を行う事で Microsoft Entra 参加済みデバイス から、オンプレミスの Active Directory で認証されたファイルサーバーへ SSO でアクセスできるようにもなることを知り、検証して 記事にもまとめておこうと思いました。
なお、これをやってみようと思ったきっかけは他にもありまして、Windows Hello for Business の ハイブリッド(Cloud Kerberos 信頼の展開)を使いたかったのですが、その前提条件になっていたのが 本構成でした。
Windows Hello for Business
- ハイブリッド(Cloud Kerberos 信頼の展開)の前提条件
https://learn.microsoft.com/ja-jp/windows/security/identity-protection/hello-for-business/deploy/hybrid-cloud-kerberos-trust?tabs=intune#deploy-microsoft-entra-kerberos
(抜粋)
上記の赤下線部 を実現するのが、本記事で紹介している手順です。
1. 想定される利用シーン
※上記の図は、以下の公開情報より、抜粋&加筆しています。
https://learn.microsoft.com/ja-jp/entra/identity/authentication/howto-authentication-passwordless-security-key-on-premises#use-sso-to-sign-in-to-on-premises-resources-by-using-fido2-keys
背景
-
組織では、オンプレミス の Active Directory ドメイン と、Microsoft Entra テナントが、Microsoft Entra Connect で同期されています。
-
オンプレミス ドメインに登録されている ユーザーが、"Microsoft Entra 参加済み の PC" を使用して、在宅勤務をしています。
"Microsoft Entra 参加済み PC" とは、Windows 10 / 11 が、Microsoft Entra テナントに 参加 (Join) した状態です。
そのため、オンプレミスの Active Directory には参加して "いない" 状態です。
利用シーン
- VPN や Zscaler などのセキュアな仮想ネットワークを通じて、社内のファイルサーバーを参照します。
- PC 持参でオフィスに出社した際に、PC を 社内 LAN に接続して、社内のファイルサーバーを参照します。
事象
このような時、ファイルサーバーへアクセスした際に、"認証窓" が開きます。
フォルダにアクセスの都度、認証が求められて 利便性が損なわれます。
これは、PC が ドメインコントローラー と認証していないことが原因で発生します。
解決策
"Microsoft Entra Kerberos 認証" を構成すると、認証窓 が開くことなくファイルサーバーに SSO でアクセスさせることが可能になります。
① ドメイン参加 PC の振る舞い
ドメインコントローラーに参加した PC は、サインイン時に Kerberos 認証を行いチケットを取得しますので、ファイルサーバーへのアクセス時に チケットを提示できるため、そのまま アクセスする事ができます。
② WORKGROUP PC の振る舞い
ドメインコントローラーに参加していない PC(WORKGROUP)が、ファイルサーバーにアクセスすると、認証窓 が開きます。これは、経験したことがある人は多いのでは無いでしょうか?
③ Microsoft Entra 参加済み PC の振る舞い
ドメインにログオンしていないため、WORKGROUP と同じ結果となって、認証窓 が開きます。この ③ のパターンで 認証窓を出さずに SSO させる仕組みが、Microsoft Entra Kerberos 認証 です。
オンプレミスへの SSO が適用できるのは、オンプレミスのドメインユーザー(ハイブリッドユーザー)のみ です。
テナント側で 作成されたユーザー(クラウドユーザー)では、利用できません。
これは、ファイルサーバーのアクセス権には オンプレミスのユーザーが割り当てられているためです。クラウドユーザーには権限がありません。
2. 前提事項
- オンプレミス Active Directory ドメインコントローラー と、Microsoft Entra ID が Microsoft Entra Connect で同期されていること
- PC は、Microsoft Entra 参加済み (Join 済み) デバイスであること
- デバイスは、オンプレミスのドメインコントローラーや ファイルサーバーと、プライベートなネットワークで疎通できること
- クライアントや サーバー OS のバージョンなどは、以下の公開情報を参照ください。
公開情報:前提事項
https://learn.microsoft.com/ja-jp/entra/identity/authentication/howto-authentication-passwordless-security-key-on-premises#prerequisites
※公開情報には、[ネットワーク セキュリティ: Kerberos で許可する暗号化の種類を構成する] ポリシー設定について書かれていますが、未構成のままで影響ありませんでした。
3. 構成手順
コマンドを用いて操作しますが、そんなに難しいことはしていません。
以下の2ステップのみです。
3-1. 専用モジュール (AzureADHybridAuthenticationManagement) をインストールする
3-2. オンプレミス側に Kerberos サーバーオブジェクトを作成する
3-1. 専用モジュール を インストールする
以下の公開情報の手順を、画面キャプチャ付きで紹介します。
公開情報: AzureADHybridAuthenticationManagement モジュールをインストールする
https://learn.microsoft.com/ja-jp/entra/identity/authentication/howto-authentication-passwordless-security-key-on-premises#install-the-azureadhybridauthenticationmanagement-module
1.貼り付ける内容(下記の枠内をコピー)
# First, ensure TLS 1.2 for PowerShell gallery access.
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
# Install the AzureADHybridAuthenticationManagement PowerShell module.
Install-Module -Name AzureADHybridAuthenticationManagement -AllowClobber
2.作業用マシン で、PowerShell(管理者)を開いて、貼り付けて実行する
※ 応答を求められたら、"Y" はい で回答します。
私は、ドメインコントローラーと Entar Connect が同居しているサーバー自身 に入れてしまいしたが、公開情報を読む限りは、インターネットにアクセス可能で、ドメインコントローラーとも疎通可能な 別のマシン上でも動作するようです。
但し、通信要件が整っていないと 3-2. 章で失敗する場合もあるようですので、うまく行かない場合は、Entra Connect サーバー にモジュールを導入して リトライしてみてください。
4.エラー無く、プロンプトに戻れば、導入完了です。
3-2. Kerberos サーバー オブジェクトを作成する
以下の公開情報の手順を、画面キャプチャ付きで紹介します。
前章で、専用モジュールを導入したマシン上で 引き続き 作業します。
公開情報:Kerberos サーバー オブジェクトを作成する
https://learn.microsoft.com/ja-jp/entra/identity/authentication/howto-authentication-passwordless-security-key-on-premises#create-a-kerberos-server-object
(2024/8/24 追記)
私の検証時は、上記の記事のうち 「すべての資格情報を要求すプロンプト例1」 のパターンで実施しました。
その他の 例2~4 を実行する場合の説明が 以下の Support Blog で説明されていますので、実行がうまく行かない場合は、その他の例 のパターンも試していただくと良いと思います。
Japan Azure Identity Support Blog:クラウド Kerberos 信頼デプロイ方法
https://jpazureid.github.io/blog/azure-active-directory/how-to-deploy-cloud-kerberos-trust/
1.貼り付ける内容(下記の枠内をコピー)
# Specify the on-premises Active Directory domain. A new Azure AD
# Kerberos Server object will be created in this Active Directory domain.
$domain = $env:USERDNSDOMAIN
$domain
# Enter an Azure Active Directory global administrator username and password.
$cloudCred = Get-Credential -Message 'Microsoft Entra ID の全体管理者のアカウントを入力してください'
# Enter a domain administrator username and password.
$domainCred = Get-Credential -Message 'オンプレミス ドメインのドメイン管理者のアカウントを入力してください'
# Create the new Azure AD Kerberos Server object in Active Directory
# and then publish it to Azure Active Directory.
Set-AzureADKerberosServer -Domain $domain -CloudCredential $cloudCred -DomainCredential $domainCred
上記枠内の項目についての意味
$domain = $env:USERDNSDOMAIN ← 実行する環境のドメイン名を取得
$domain ← 変数の内容を表示($env で取得したドメイン名)
$cloudCred = Get-Credential ← Microsoft Entra ID 全体管理者用 認証窓を表示
$domainCred = Get-Credential ← AD DS ドメイン管理者用 認証窓を表示
Set-AzureADKerberosServer -Domain $domain -CloudCredential $cloudCred -DomainCredential $domainCred ← 指示されたドメイン上に Kerberosサーバーオブジェクトを作成する
2.前章でモジュールをインストールしたマシン上で、PowerShell(管理者)を開いて、貼り付けて実行する
3.認証窓には、Microsoft Entra ID の全体管理者を入力
4.認証窓には、オンプレミス ドメインの ドメイン管理者 を入力
5.多要素認証 (MFA) が求められたら、それに応じます。
6.ドメインコントローラーで、Active Directory ユーザーとコンピューター (ADUC) を開くと Domain Controllers OU に、AzureADKerberos という名前のコンピューターオブジェクトが追加されている事が確認できます。
※興味深いのは、このオブジェクトは、ドメインコントローラー 扱いになっている点です。
拡張機能 の表示を有効にすると、以下のように krbtgt_AzureAD ユーザーが追加されたことも確認できます。
7.ステータスの確認
以下の Get コマンドを実行して確認します。
Get-AzureADKerberosServer -Domain $domain -CloudCredential $cloudCred -DomainCredential $domainCred
4. 動作確認
4-1. 前提
必ず、オンプレミス側に存在し、クラウド側へ同期されているユーザーを使います。
オンプレ側
クラウド側
4-2. 確認
- Microsoft Entra 参加済み デバイスへ、同期された "クラウド側ユーザー" でサインインします。
- 以下のように オンプレミス側のファイル共有を開きます。
下図では、¥¥[ファイルサーバー名] を入力して ドメコンの 共有 を表示させてます。
認証窓が表示されずに、1発で フォルダが表示されれば OK です。
以上で、Microsoft Entra Kerberos 認証 の構成は完了です。
おつかれさまでした。
5. 参考情報
この記事で紹介した手順が記載されている公開情報
実は、上記よりも判りやすく記載されている公開情報(SQL 用ですが)
※上記は、"グループ ポリシー オブジェクト (GPO) を構成する" 以降は、関係無いので無視して大丈夫です。
くらう道さんの記事です。図もあって 判りやすい
※AVD に RDP する際の SSO の構成まで記載されています。
Deep dive - Azure AD Kerberos の仕組み