Microsoft Entra ID を使用してオンプレミスのリソースへのパスワードレス セキュリティ キー サインインを有効にする

このトピックでは、Windows 10 バージョン 2004 以降を実行するデバイスを備えた環境で、オンプレミス リソースのパスワードレス認証を有効にする方法について説明します。 デバイスは、"Microsoft Entra 参加済み" または "Microsoft Entra ハイブリッド参加済み" であることができます。 このパスワードレスの認証機能により、Microsoft 互換のセキュリティ キーを使う場合、または Windows Hello for Business クラウドの信頼を使う場合に、オンプレミス リソースへのシームレスなシングル サインオン (SSO) が提供されます。

SSO を使用して FIDO2 キーでオンプレミスのリソースにサインインする

Microsoft Entra ID では、1 つ以上の Active Directory ドメインの Kerberos Ticket Granting Ticket (TGT) を発行できます。 この機能により、ユーザーは FIDO2 セキュリティ キーなどの最新の資格情報で Windows にサインインし、従来の Active Directory ベースのリソースにアクセスできます。 Kerberos サービス チケットと認可は、引き続きオンプレミスの Active Directory ドメイン コントローラー (DC) によって制御されます。

Microsoft Entra Kerberos サーバー オブジェクトがオンプレミスの Active Directory インスタンスに作成され、Microsoft Entra ID に安全に公開されます。 このオブジェクトは、どの物理サーバーにも関連付けられていません。 これは単に、Active Directory ドメインの Kerberos TGT を生成するために Microsoft Entra ID で使用できるリソースです。

Microsoft Entra ID と Active Directory Domain Services から TGT を取得する方法を示す図。

  1. ユーザーは、FIDO2 セキュリティ キーを使用して Windows 10 デバイスにサインインし、Microsoft Entra ID に対して認証を行います。

  2. Microsoft Entra ID によって、ユーザーのオンプレミスの Active Directory ドメインと一致する Kerberos サーバー キーがディレクトリにあるかどうかが確認されます。

    Microsoft Entra ID によって、ユーザーのオンプレミスの Active Directory ドメインの Kerberos TGT が生成されます。 TGT にはユーザーの SID のみが含まれ、認可データは含まれていません。

  3. ユーザーの Microsoft Entra プライマリ更新トークン (PRT) と共に、TGT がクライアントに返されます。

  4. クライアント マシンは、オンプレミスの Active Directory ドメイン コントローラーに接続し、部分的な TGT と引き換えに完全な形式の TGT を入手します。

  5. この時点でクライアント マシンには Microsoft Entra PRT と完全な Active Directory TGT があり、クラウドとオンプレミスの両方のリソースにアクセスできます。

前提条件

この記事の手順を開始する前に、組織では、Windows 10 デバイスへのパスワードレス セキュリティ キー サインインの有効化に関する記事の手順を完了する必要があります。

また、次のシステム要件を満たしている必要があります。

  • デバイスでは、Windows 10 バージョン 2004 以降を実行している必要があります。

  • Windows Server ドメイン コントローラーは、Windows Server 2016 以降を実行し、次のサーバー用のパッチがインストールされている必要があります。

  • [ネットワーク セキュリティ: Kerberos で許可する暗号化の種類を構成する] ポリシーをドメイン コントローラーで構成する場合は、AES256_HMAC_SHA1 を有効にする必要があります。

  • シナリオの手順を完了するために必要な、次の資格情報を用意します。

    • ドメインの Domain Admins グループのメンバーであり、フォレストの Enterprise Admins グループのメンバーである Active Directory ユーザー。 以下、$domainCred と表記します。
    • 全体管理者ロールのメンバーである Microsoft Entra ユーザー。 以下、$cloudCred と表記します。
  • ユーザーは、Microsoft Entra Connect を使用して、次の Microsoft Entra ID 属性を設定する必要があります。

    • onPremisesSamAccountName (Entra Connect の accountName)
    • onPremisesDomainName (Entra Connect の domainFQDN)
    • onPremisesSecurityIdentifier (Entra Connect の objectSID)

    Entra Connect では既定でこれらの属性が同期されます。 同期する属性を変更する場合は、同期のために accountName、domainFQDN、objectSID を選ぶようにしてください。

サポートされるシナリオ

この記事のシナリオでは、次の両方のインスタンスで SSO がサポートされています。

  • Microsoft 365 や他の Security Assertion Markup Language (SAML) 対応アプリケーションなどのクラウド リソース。
  • オンプレミスのリソースと、Web サイトに対する Windows 統合認証。 リソースには、IIS 認証を必要とする Web サイトおよび SharePoint サイトや、NTLM 認証を使用するリソースを含めることができます。

サポートされていないシナリオ

以下のシナリオはサポートされていません。

  • Windows Server Active Directory Domain Services (AD DS) 参加済みの (オンプレミス専用デバイスの) デプロイ。
  • セキュリティ キーを使用したリモート デスクトップ プロトコル (RDP)、仮想デスクトップ インフラストラクチャ (VDI)、Citrix のシナリオ。
  • セキュリティ キーを使用した S/MIME。
  • セキュリティ キーを使用した [別のユーザーとして実行]
  • セキュリティ キーを使用したサーバーへのログイン。

AzureADHybridAuthenticationManagement モジュールをインストールする

AzureADHybridAuthenticationManagement モジュールでは、管理者に FIDO2 管理機能が提供されます。

  1. [管理者として実行] オプションを使用して、PowerShell プロンプトを開きます。

  2. AzureADHybridAuthenticationManagement モジュールをインストールします。

    # 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
    

Note

  • AzureADHybridAuthenticationManagement モジュールでは、高度な Microsoft Entra 管理機能を提供するために AzureADPreview PowerShell モジュール が使用されます。 Azure Active Directory PowerShell モジュールがローカル コンピューターに既にインストールされている場合、競合が原因で、ここで説明するインストールが失敗する可能性があります。 インストール時の競合を防ぐために、"-AllowClobber" オプション フラグを必ず含めてください。
  • AzureADHybridAuthenticationManagement モジュールは、Microsoft Entra Connect ソリューションに依存せずに、オンプレミスの Active Directory ドメイン コントローラーにアクセスできる任意のコンピューターにインストールできます。
  • AzureADHybridAuthenticationManagement モジュールは、PowerShell ギャラリーを介して配布されます。 PowerShell ギャラリーは、PowerShell コンテンツの中央リポジトリです。 ここには、PowerShell コマンドと Desired State Configuration (DSC) リソースを含む、便利な PowerShell モジュールがあります。

Kerberos サーバー オブジェクトを作成する

管理者は、AzureADHybridAuthenticationManagement モジュールを使用して、オンプレミスのディレクトリに Microsoft Entra Kerberos サーバー オブジェクトを作成します。

Microsoft Entra ユーザーを含む組織内の各ドメインおよびフォレストで、次の手順を実行してください。

  1. [管理者として実行] オプションを使用して、PowerShell プロンプトを開きます。
  2. 次の PowerShell コマンドを実行して、オンプレミスの Active Directory ドメインと Microsoft Entra テナントの両方に新しい Microsoft Entra Kerberos サーバー オブジェクトを作成します。

Azure クラウドの選択 (既定値は Azure Commercial)

既定では、Set-AzureADKerberosSever コマンドレットには商用クラウド エンドポイントを使用します。 別のクラウド環境で Kerberos を構成している場合は、指定されたクラウドを使用するようにコマンドレットを設定する必要があります。

使用できるクラウドの一覧と変更が必要な数値を取得するには、次のコマンドを実行します。
Get-AzureADKerberosServerEndpoint

出力例:

Current Endpoint = 0(Public)
Supported Endpoints:
   0 :Public
   1 :China
   2 :Us Government

目的のクラウド環境の横にある数値に注意してください。

次に、目的のクラウド環境を設定するには、次を実行します。
"(例: 米国政府のクラウドの場合)"
Set-AzureADKerberosServerEndpoint -TargetEndpoint 2

すべての資格情報を要求すプロンプト例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

# Enter an Azure Active Directory global administrator username and password.
$cloudCred = Get-Credential -Message 'An Active Directory user who is a member of the Global Administrators group for Azure AD.'

# Enter a domain administrator username and password.
$domainCred = Get-Credential -Message 'An Active Directory user who is a member of the Domain Admins group.'

# 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

クラウドの資格情報を要求すプロンプト例2

注意

ドメイン管理者特権があるアカウントでドメイン参加済みマシンを操作している場合は、"-DomainCredential" パラメーターを省略できます。 "-DomainCredential" パラメーターが指定されていない場合、オンプレミスの Active Directory ドメイン コントローラーにアクセスする際に、現在の Windows ログイン資格情報が使用されます。

# 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

# Enter an Azure Active Directory global administrator username and password.
$cloudCred = Get-Credential

# Create the new Azure AD Kerberos Server object in Active Directory
# and then publish it to Azure Active Directory.
# Use the current windows login credential to access the on-premises AD.
Set-AzureADKerberosServer -Domain $domain -CloudCredential $cloudCred

例3先進認証を使用してすべての資格情報を要求するプロンプト

注意

組織でパスワードベースのサインインを保護し、多要素認証、FIDO2、スマート カード テクノロジなどの最新の認証方法を適用している場合は、-UserPrincipalName パラメーターに全体管理者のユーザー プリンシパル名 (UPN) を指定する必要があります。

  • 次の例の contoso.corp.com を、オンプレミスの Active Directory ドメイン名に置き換えます。
  • 次の例の administrator@contoso.onmicrosoft.com を、全体管理者の UPN に置き換えます。
# 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

# Enter a UPN of an Azure Active Directory global administrator
$userPrincipalName = "administrator@contoso.onmicrosoft.com"

# Enter a domain administrator username and password.
$domainCred = Get-Credential

# Create the new Azure AD Kerberos Server object in Active Directory
# and then publish it to Azure Active Directory.
# Open an interactive sign-in prompt with given username to access the Azure AD.
Set-AzureADKerberosServer -Domain $domain -UserPrincipalName $userPrincipalName -DomainCredential $domainCred

例4:先進認証を使用したクラウドの資格情報を要求するプロンプト

注意

組織でパスワードベースのサインインを保護し、多要素認証、FIDO2、スマート カード テクノロジなどの最新の認証方法を適用している場合は、-UserPrincipalName パラメーターに全体管理者のユーザー プリンシパル名 (UPN) を指定する必要があります。 また、"-DomainCredential" パラメーターを省略できます。 > - 次の例の administrator@contoso.onmicrosoft.com を、全体管理者の UPN に置き換えます。

# 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

# Enter a UPN of an Azure Active Directory global administrator
$userPrincipalName = "administrator@contoso.onmicrosoft.com"

# Create the new Azure AD Kerberos Server object in Active Directory
# and then publish it to Azure Active Directory.
# Open an interactive sign-in prompt with given username to access the Azure AD.
Set-AzureADKerberosServer -Domain $domain -UserPrincipalName $userPrincipalName

Microsoft Entra Kerberos サーバーを表示して確認する

新しく作成された Microsoft Entra Kerberos サーバーは、次のコマンドを使用して表示および確認できます。

 # When prompted to provide domain credentials use the userprincipalname format for the username instead of domain\username
Get-AzureADKerberosServer -Domain $domain -UserPrincipalName $userPrincipalName -DomainCredential (get-credential)

このコマンドで、Microsoft Entra Kerberos サーバーのプロパティが出力されます。 プロパティを確認して、すべてが適切な順序であることを確認できます。

Note

ドメイン\ユーザー名の形式で資格情報を指定して別のドメインに対して実行すると、NTLM を使って接続され、失敗します。 ただし、ドメイン管理者に userprincipalname 形式を使うと、Kerberos を正しく使って DC への RPC バインドが試行されます。 ユーザーが Active Directory の Protected Users セキュリティ グループに属している場合は、これらの手順を実行して問題を解決します: ADConnect で別のドメイン ユーザーとしてサインインします。"-domainCredential" を指定しないでください。 現在サインインしているユーザーの Kerberos チケットが使用されます。 whoami /groups を実行することで、前のコマンドを実行するために必要な Active Directory のアクセス許可がユーザーにあるかどうかを検証できます。

プロパティ 説明
id AD DS DC オブジェクトの一意の ID。 この ID は、"スロット" または "ブランチ ID" と呼ばれることもあります。
DomainDnsName Active Directory ドメインの DNS ドメイン名。
ComputerAccount Microsoft Entra Kerberos サーバー オブジェクト (DC) のコンピューター アカウント オブジェクト。
UserAccount Microsoft Entra Kerberos サーバーの TGT 暗号化キーを保持する、無効なユーザー アカウント オブジェクト。 このアカウントのドメイン名は CN=krbtgt_AzureAD,CN=Users,<Domain-DN> です。
KeyVersion Microsoft Entra Kerberos サーバーの TGT 暗号化キーのキー バージョン。 バージョンは、キーの作成時に割り当てられます。 バージョンは、キーがローテーションされるたびに増やされます。 増分はレプリケーション メタデータに基づいており、ほとんどの場合、1 より大きい値です。 たとえば、初期の KeyVersion192272 だったとします。 キーが最初にローテーションされると、バージョンは 212621 に進む可能性があります。 確認すべき重要な点は、オンプレミスのオブジェクトの KeyVersion とクラウド オブジェクトの CloudKeyVersion が同じであることです。
KeyUpdatedOn Microsoft Entra Kerberos サーバーの TGT 暗号化キーが更新または作成された日時。
KeyUpdatedFrom Microsoft Entra Kerberos サーバーの TGT 暗号化キーが最後に更新された DC。
CloudId Microsoft Entra オブジェクトの ID。 この表の最初の行の ID と一致している必要があります。
CloudDomainDnsName Microsoft Entra オブジェクトの DomainDnsName。 この表の 2 番目の行の DomainDnsName と一致している必要があります。
CloudKeyVersion Microsoft Entra オブジェクトの KeyVersion。 この表の 5 番目の行の KeyVersion と一致している必要があります。
CloudKeyUpdatedOn Microsoft Entra オブジェクトの KeyUpdatedOn。 この表の 6 番目の行の KeyUpdatedOn と一致している必要があります。

Microsoft Entra Kerberos サーバー キーをローテーションする

Microsoft Entra Kerberos サーバー暗号化の krbtgt キーは定期的にローテーションする必要があります。 Active Directory DC の他のすべての krbtgt キーのローテーションに使用するものと同じスケジュールに従うことをお勧めします。

警告

krbtgt キーをローテーションできるツールはほかにもあります。 ただし、Microsoft Entra Kerberos サーバーの krbtgt キーのローテーションには、このドキュメントに記載されているツールを使用する必要があります。 これにより、オンプレミスの Active Directory と Microsoft Entra ID の両方でキーが確実に更新されます。

Set-AzureADKerberosServer -Domain $domain -CloudCredential $cloudCred -DomainCredential $domainCred -RotateServerKey

Microsoft Entra Kerberos サーバーを削除する

シナリオを元に戻し、オンプレミスの Active Directory と Microsoft Entra ID の両方から Microsoft Entra Kerberos サーバーを削除する場合は、次のコマンドを実行します。

Remove-AzureADKerberosServer -Domain $domain -CloudCredential $cloudCred -DomainCredential $domainCred

マルチフォレストとマルチドメインのシナリオ

Microsoft Entra Kerberos サーバー オブジェクトは、Microsoft Entra ID 内では KerberosDomain オブジェクトとして表されます。 オンプレミスの各 Active Directory ドメインは、Microsoft Entra ID 内では 1 つの KerberosDomain オブジェクトとして表されます。

たとえば、contoso.comfabrikam.com の 2 つのドメインを含む Active Directory フォレストが組織にあるとします。 Microsoft Entra ID でフォレスト全体の Kerberos TGT を発行することを許可した場合は、Microsoft Entra ID 内に 2 つの KerberosDomain オブジェクトがあります。1 つは contoso.com 用の KerberosDomain オブジェクトで、もう 1 つは fabrikam.com 用です。 複数の Active Directory フォレストがある場合は、各フォレスト内のドメインごとに 1 つの KerberosDomain オブジェクトがあります。

Microsoft Entra ユーザーを含む組織内の各ドメインとフォレストで、「Kerberos サーバー オブジェクトを作成する」の手順に従います。

既知の動作

パスワードの有効期限が切れている場合、FIDO を使用したサインインはブロックされます。 ユーザーは、FIDO を使用してログインする前に、パスワードをリセットしておく必要があります。 この動作は、Windows Hello for Business クラウド kerberos トラストを使用したハイブリッド オンプレミスの同期されたユーザー サインインにも適用されます。

トラブルシューティングとフィードバック

このパスワードレス セキュリティ キー サインイン機能について問題が発生した場合や、フィードバックを共有したい場合は、次の手順を実行して、Windows フィードバック Hub アプリ経由で共有します。

  1. フィードバック Hub を開き、サインインしていることを確認します。
  2. 次のカテゴリを選択してフィードバックを送信します。
    • カテゴリ:セキュリティとプライバシー
    • サブカテゴリ: FIDO
  3. ログをキャプチャするには、 [Recreate my Problem](問題の再現) オプションを使用します。

パスワードレス セキュリティ キー サインインに関する FAQ

ヒント

この記事の手順は、開始するポータルによって若干異なる場合があります。

パスワードレス サインインについてよく寄せられる質問とその回答を次に示します。

パスワードレス セキュリティ キー サインインはオンプレミス環境で機能しますか?

この機能は、純粋なオンプレミス AD DS 環境では機能しません。

私の組織では、リソースにアクセスするために 2 要素認証が必要です。 この要件をサポートするにはどうすればよいですか。

セキュリティ キーは、さまざまなフォーム ファクターで提供されています。 2 番目の要素として PIN または生体認証を使用してデバイスを有効にする方法については、デバイスの製造元にお問い合わせください。

管理者はセキュリティ キーを設定できますか?

Microsoft は、この機能の一般提供 (GA) リリースに向けてこの機能に取り組んでいます。

準拠しているセキュリティ キーはどこで見つけることができますか。

準拠しているセキュリティ キーについては、「FIDO2 セキュリティ キー」を参照してください。

セキュリティ キーを紛失した場合はどうすればよいですか?

登録されたセキュリティ キーを削除するには、myaccount.microsoft.com にサインインし、[セキュリティ情報] ページに移動します。

ハイブリッド Microsoft Entra 参加済みマシンを作成した直後に FIDO セキュリティ キーを使用できない場合はどうすればよいですか?

ハイブリッド Microsoft Entra 参加済みマシンをクリーンインストールした場合、ドメイン参加および再起動プロセスの後、FIDO セキュリティ キーを使用してサインインするには、パスワードを使用してサインインし、ポリシーが同期されるまで待つ必要があります。

  • コマンド プロンプト ウィンドウで dsregcmd /status を実行して現在の状態を確認し、dsregcmd /statusDomainJoined の両方の状態に [YES] と表示されていることを確認します。
  • 同期のこの遅延は、ドメイン参加済みデバイスの既知の制限であり、FIDO に固有のものではありません。

FIDO を使用してサインインし、資格情報プロンプトが表示された後、NTLM ネットワーク リソースにシングル サインオンできない場合はどうなりますか?

時間内に応答してリソース要求を処理できるように、十分な数の DC に修正プログラムが適用されていることを確認してください。 DC で機能が実行されているかどうかを確認するには、nltest /dsgetdc:contoso /keylist /kdc を実行し、出力を確認します。

注意

nltest コマンドの /keylist スイッチは、Windows 10 v2004 以降のクライアントで使用できます。

ハイブリッド環境に RODC が存在する Windows ログインで FIDO2 セキュリティ キーは機能しますか?

FIDO2 Windows ログインでは、ユーザー TGT を交換するために書き込み可能 DC が検索されます。 サイトごとに少なくとも 1 つの書き込み可能 DC があれば、ログインは正常に機能します。

次の手順

パスワードレス認証の詳細を確認する