受信信頼ベースのフローで Microsoft Entra ID の Windows 認証を設定する方法

この記事では、Windows 10、Windows Server 2012、またはそれ以降のバージョンのWindowsを実行している Active Directory (AD) 参加クライアントが、Windows 認証を使用して Azure SQL Managed Instance に認証するための受信信頼ベースの認証フローの実装方法について説明します。

また、この記事では、Microsoft Entra ID (旧 Azure Active Directory) のサービスアカウントと信頼されたドメイン オブジェクト向けに Kerberos Key をローテーションする手順、および必要に応じて、信頼されたドメインオブジェクトとすべての Kerberos 設定を削除する手順についても説明します。

受信信頼ベースの認証フローを有効にするのは、Microsoft Entra ID と Kerberos を使用した Azure SQL Managed Instance の Windows 認証を設定するステップの 1 つです。 最新の対話型フローは、Windows 10 20H1、Windows Server 2022、またはそれ以降のバージョンの Windows を実行している対応クライアントで使用できます。

Note

Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。

アクセス許可

この記事の手順を完了するには、次のものが必要です。

  • オンプレミスの Active Directory 管理者のユーザー名とパスワード。
  • Microsoft Entra グローバル管理者アカウントのユーザー名とパスワード。

前提条件

受信信頼ベースの認証フローを実装するには、まず次の前提条件が満たされていることを確認します。

前提条件 説明
クライアントは、Windows 10、Windows Server 2012、またはそれ以降のバージョンの Windows を実行している必要があります。
クライアントは AD に参加している必要があります。 ドメインの機能レベルは Windows Server 2012 以上である必要があります。 dsregcmd コマンドを実行して、クライアントが AD に参加しているかどうかを確認できます。dsregcmd.exe /status
Azure AD ハイブリッド認証管理モジュール。 この PowerShell モジュールは、オンプレミスのセットアップのための管理機能を提供します。
Azure テナント。
認証に使用する予定の同じ Microsoft Entra テナントにある Azure サブスクリプション。
Microsoft Entra Connect がインストールされていること。 Microsoft Entra ID と AD の両方に ID が存在するハイブリッド環境。

Azure AD Kerberos 信頼されたドメイン オブジェクトの作成と構成

Azure AD Kerberos 信頼されたドメイン オブジェクトを作成し構成するには、Azure AD ハイブリッド認証管理 PowerShell モジュールをインストールします。

次に、Azure AD ハイブリッド認証管理 PowerShell モジュールを使用して、オンプレミスの AD ドメインに信頼されたドメイン オブジェクトを設定し、Microsoft Entra ID に信頼情報を登録します。 これにより、オンプレミスの AD に対する受信方向の信頼関係が作成され、Microsoft Entra ID がオンプレミスの AD を信頼できるようになります。

信頼されたドメイン オブジェクトを設定する

信頼されたドメイン オブジェクトを設定するには、まず Azure AD ハイブリッド認証管理 PowerShell モジュールをインストールします。

Azure AD ハイブリッド認証管理 PowerShell モジュールをインストールします

  1. [管理者として実行] オプションを使用して Windows PowerShell セッションを開始します。

  2. 次のスクリプトを使用して Azure AD ハイブリッド認証管理 PowerShell モジュールをインストールします。 スクリプトは次のようになります。

    • 通信に対して TLS 1.2 を有効にします。
    • NuGet パッケージ プロバイダーをインストールします。
    • PSGallery リポジトリを登録します。
    • PowerShellGet モジュールをインストールします。
    • Azure AD ハイブリッド認証管理 PowerShell モジュールをインストールします。
      • Azure AD ハイブリッド認証管理 PowerShell は、高度なMicrosoft Entra 管理機能を提供する AzureADPreview モジュールを使用します。
      • Azure AD PowerShell モジュールとの不必要なインストールの競合を防ぐために、このコマンドには – AllowClobber option フラグが含まれています。
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Install-PackageProvider -Name NuGet -Force

if (@(Get-PSRepository | ? {$_.Name -eq "PSGallery"}).Count -eq 0){
    Register-PSRepository -DefaultSet-PSRepository -Name "PSGallery" -InstallationPolicy Trusted
}

Install-Module -Name PowerShellGet -Force

Install-Module -Name AzureADHybridAuthenticationManagement -AllowClobber

信頼されたドメイン オブジェクトを作成する

  1. [管理者として実行] オプションを使用して Windows PowerShell セッションを開始します。

  2. 共通のパラメーターを設定します。 実行する前に、以下のスクリプトをカスタマイズします。

    • $domainパラメーターをオンプレミスの Active Directory ドメイン名に設定します。
    • Get-Credentialのダイアログが表示された場合、オンプレミスの Active Directory 管理者のユーザー名とパスワードを入力します。
    • $cloudUserName パラメーターを Microsoft Entra クラウドアクセス用のグローバル管理者特権のあるアカウントのユーザー名に設定します。

    Note

    オンプレミスの Active Directory アクセスに現在の Windows ログインアカウントを使用する場合は、資格情報が $domainCred パラメーターに割り当てられる手順を省略できます。 この方法を使用する場合は、この手順に従う PowerShell コマンドに-DomainCredentialパラメーターを含めないでください。

    $domain = "your on-premesis domain name, for example contoso.com"
    
    $domainCred = Get-Credential
    
    $cloudUserName = "Azure AD user principal name, for example admin@contoso.onmicrosoft.com"
    
  3. 現在の Kerberos ドメイン設定を確認してください。

    次のコマンドを実行して、ドメインの現在の Kerberos 設定を確認します。

    Get-AzureAdKerberosServer -Domain $domain `
        -DomainCredential $domainCred `
        -UserPrincipalName $cloudUserName
    

    Microsoft Entra Kerberos コマンドを初めて呼び出す場合は、Microsoft Entra クラウド へのアクセスを求められます。

    • Microsoft Entra テナントのグローバル管理者アカウントのパスワードを入力します。
    • 組織で Microsoft Entra 多要素認証やスマートカードなどの他の最新の認証方法を使用している場合は、要求された手順に従ってサインインしてください。

    Microsoft Entra Kerberos 設定を初めて構成する場合は、次のサンプル出力に示すように、 Get-AzureAdKerberosServer コマンドレットによって空の情報が表示されます。

    ID                  :
    UserAccount         :
    ComputerAccount     :
    DisplayName         :
    DomainDnsName       :
    KeyVersion          :
    KeyUpdatedOn        :
    KeyUpdatedFrom      :
    CloudDisplayName    :
    CloudDomainDnsName  :
    CloudId             :
    CloudKeyVersion     :
    CloudKeyUpdatedOn   :
    CloudTrustDisplay   :
    

    ドメインが既に FIDO 認証をサポートしている場合は、次のサンプル出力のように、Get-AzureAdKerberosServerコマンドレットによって Microsoft Entra サービス アカウント情報が表示されます。 CloudTrustDisplay フィールドが空の値を返します。

    ID                  : 25614
    UserAccount         : CN=krbtgt-AzureAD, CN=Users, DC=aadsqlmi, DC=net
    ComputerAccount     : CN=AzureADKerberos, OU=Domain Controllers, DC=aadsqlmi, DC=net
    DisplayName         : krbtgt_25614
    DomainDnsName       : aadsqlmi.net
    KeyVersion          : 53325
    KeyUpdatedOn        : 2/24/2022 9:03:15 AM
    KeyUpdatedFrom      : ds-aad-auth-dem.aadsqlmi.net
    CloudDisplayName    : krbtgt_25614
    CloudDomainDnsName  : aadsqlmi.net
    CloudId             : 25614
    CloudKeyVersion     : 53325
    CloudKeyUpdatedOn   : 2/24/2022 9:03:15 AM
    CloudTrustDisplay   :
    
  4. 信頼されたドメイン オブジェクトを追加してください。

    Set-AzureAdKerberosServer PowerShell コマンドレットを実行して、信頼されたドメイン オブジェクトを追加します。 -SetupCloudTrust パラメーターを必ず含めてください。 Microsoft Entra サービス アカウントがない場合、このコマンドは新しい Microsoft Entra サービス アカウントを作成します。 Microsoft Entra サービスアカウントが存在する場合にのみ、このコマンドは要求された信頼されたドメイン オブジェクトを作成します。

    Set-AzureADKerberosServer -Domain $domain -UserPrincipalName $cloudUserName -DomainCredential $domainCred -SetupCloudTrust
    

    Note

    複数ドメイン フォレストで、子ドメインでコマンドを実行するときにエラー LsaCreateTrustedDomainEx 0x549 を回避するには:

    1. ルート ドメインでコマンドを実行します (-SetupCloudTrust パラメーターを含めます)。
    2. 子ドメインで、-SetupCloudTrust パラメーターを指定せずに同じコマンドを実行します。

    信頼されたドメイン オブジェクトを作成した後、前の手順で示したように、Get-AzureAdKerberosServer PowerShell コマンドレットを使用して、更新された Kerberos 設定を確認できます。 -SetupCloudTrustパラメーターを指定したSet-AzureAdKerberosServerコマンドレットが正常に実行された場合、CloudTrustDisplayフィールドは次のサンプル出力のように、Microsoft.AzureAD.Kdc.Service.TrustDisplayを返します。

    ID                  : 25614
    UserAccount         : CN=krbtgt-AzureAD, CN=Users, DC=aadsqlmi, DC=net
    ComputerAccount     : CN=AzureADKerberos, OU=Domain Controllers, DC=aadsqlmi, DC=net
    DisplayName         : krbtgt_25614
    DomainDnsName       : aadsqlmi.net
    KeyVersion          : 53325
    KeyUpdatedOn        : 2/24/2022 9:03:15 AM
    KeyUpdatedFrom      : ds-aad-auth-dem.aadsqlmi.net
    CloudDisplayName    : krbtgt_25614
    CloudDomainDnsName  : aadsqlmi.net
    CloudId             : 25614
    CloudKeyVersion     : 53325
    CloudKeyUpdatedOn   : 2/24/2022 9:03:15 AM
    CloudTrustDisplay   : Microsoft.AzureAD.Kdc.Service.TrustDisplay
    

    注意

    Azure ソブリン クラウドの場合、TopLevelNames プロパティを設定する必要があります。これは既定では windows.net に設定されています。 SQL Managed Instance の Azure ソブリン クラウド デプロイには、Azure US Government の usgovcloudapi.net のように、異なる最上位レベル ドメイン名が使われます。 次の PowerShell コマンドを使って、信頼されるドメイン オブジェクトをその最上位レベル ドメイン名に設定します: Set-AzureADKerberosServer -Domain $domain -DomainCredential $domainCred -CloudCredential $cloudCred -SetupCloudTrust -TopLevelNames "usgovcloudapi.net,windows.net"。 次の PowerShell コマンドを使って設定を確認することができます: Get-AzureAdKerberosServer -Domain $domain -DomainCredential $domainCred -UserPrincipalName $cloudUserName | Select-Object -ExpandProperty CloudTrustDisplay

グループ ポリシー オブジェクト (GPO) を構成する

  1. Microsoft Entra テナント ID を確認します。

  2. 受信信頼ベースのフローを使用して、次のグループポリシー設定をクライアントマシンにデプロイします。

    1. 管理用テンプレート\システム\KERBEROS\Kerberos クライアントのKDC プロキシ サーバーの指定」ポリシー設定を編集します。

    2. [Enabled] を選択します。

    3. [オプション][表示] を選択すると、[内容の表示] ダイアログ ボックスが開きます。

      Screenshot of dialog box to enable 'Specify KDC proxy servers for Kerberos clients'. The 'Show Contents' dialog allows input of a value name and the related value.

    4. 次のように、マッピングを使用して KDC プロキシサーバーの設定を定義します。 your_Azure_AD_tenant_idプレースホルダーを Microsoft Entra テナント ID に置き換えます。 値のマッピングにおいて、https に続くスペースと末尾の / の前のスペースに注意してください。

      値の名前
      KERBEROS.MICROSOFTONLINE.COM <https login.microsoftonline.com:443:your_Azure_AD_tenant_id/kerberos />

      Screenshot of the 'Define KDC proxy server settings' dialog box. A table allows input of multiple rows. Each row consists of a value name and a value.

    5. [OK] を選択して [内容の表示] ダイアログ ボックスを閉じます。

    6. [Kerberos クライアントの KDC プロキシサーバーを指定する] ダイアログボックスで [適用] を選択します。

Kerberos Key のローテーション

管理目的で、作成した Microsoft Entra サービス アカウントと信頼されたドメイン オブジェクトの Kerberos キーを定期的にローテーションすることができます。

Set-AzureAdKerberosServer -Domain $domain `
   -DomainCredential $domainCred `
   -UserPrincipalName $cloudUserName -SetupCloudTrust `
   -RotateServerKey

キーがローテーションされると、Kerberos KDC サーバー間で変更されたキーが伝達されるまでに数時間かかります。 このキー配布のタイミングにより、24時間以内に 1 回のみキーをローテーションすることができます。 信頼されたドメイン オブジェクトを作成した直後など、何らかの理由で24時間以内にキーをもう一度ローテーションする必要がある場合は、-Force パラメーターを追加します。

Set-AzureAdKerberosServer -Domain $domain `
   -DomainCredential $domainCred `
   -UserPrincipalName $cloudUserName -SetupCloudTrust `
   -RotateServerKey -Force

信頼されたドメイン オブジェクトを削除する

次のコマンドを使用して、追加された信頼されたドメイン オブジェクトを削除できます。

Remove-AzureADKerberosTrustedDomainObject -Domain $domain `
   -DomainCredential $domainCred `
   -UserPrincipalName $cloudUserName

このコマンドは、信頼されたドメインオブジェクトのみを削除します。 ドメインが FIDO 認証をサポートしている場合は、FIDO 認証サービスに必要な Microsoft Entra サービス アカウントを維持したまま、信頼されたドメイン オブジェクトを削除できます。

すべての Kerberos 設定を削除する

次のコマンドを使用して、Microsoft Entra サービス アカウントと信頼されたドメイン オブジェクトの両方を削除できます。

Remove-AzureAdKerberosServer -Domain $domain `
   -DomainCredential $domainCred `
   -UserPrincipalName $cloudUserName

次のステップ

Azure SQL Managed Instance で Microsoft Entra プリンシパルの Windows 認証を実装する方法の詳細については、次を参照してください。