如何使用傳入信任型流程為 Microsoft Entra 識別碼設定 Windows 驗證

本文說明如何實作傳入信任型驗證流程,以允許加入 Active Directory (AD) 且執行 Windows 10、Windows Server 2012 或更高 Windows 版本的用戶端,使用 Windows 驗證向 Azure SQL 受控執行個體進行驗證。

本文也包括 Microsoft Entra ID (之前稱為 Azure Active Directory) 中服務帳戶和受信任網域物件的 Kerberos 金鑰輪替步驟,以及移除受信任網域物件和所有 Kerberos 設定的步驟 (如有需要)。

啟用傳入信任型驗證流程是使用 Microsoft Entra ID 和 Kerberos 為 Azure SQL 受控執行個體設定 Windows 驗證中的一個步驟。 運行 Windows 10 20H1、Windows Server 2022 或更高版本 Windows 的用戶端,只要啟用了現代互動式流程,就能使用。

注意

Microsoft Entra 標識符 先前稱為 Azure Active Directory (Azure AD)。

權限

若要完成本文所述的步驟,您需要下列項目:

  • 內部部署的 Active Directory 管理員使用者名稱和密碼。
  • Microsoft Entra 全域系統管理員帳戶使用者名稱和密碼。

必要條件

若要實作傳入信任型驗證流程,請先確定已符合下列必要條件:

必要條件 描述
用戶端必須執行 Windows 10、Windows Server 2012 或更新版本的 Windows。
用戶端必須已加入 Azure AD。 網域必須具有 Windows Server 2012 或更新版本的功能等級。 您可以執行 dsregcmd 命令來判斷用戶端是否已加入 AD:dsregcmd.exe /status
Azure AD 混合式驗證管理模組。 此 PowerShell 模組提供內部部署設定的管理功能。
Azure 租用戶。
您打算用於驗證的相同 Microsoft Entra 租用戶下的 Azure 訂用帳戶。
已安裝 Microsoft Entra Connect Microsoft Entra 識別碼和 AD 中同時存在身分識別的混合式環境。

建立及設定 Microsoft Entra Kerberos 受信任網域物件

若要建立及設定 Microsoft Entra 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 會使用 AzureADPreview 模組來提供進階的 Microsoft Entra 管理功能。
      • 若要避免與 AzureAD PowerShell 模組發生不必要的安裝衝突,此命令會包含 –AllowClobber 選項旗標。
[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 雲端。

    注意

    如果您想要將目前 Windows 登入帳戶用於內部部署的 Active Directory 存取,您可以略過指派認證給 $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 Cmdlet 會顯示空白資訊,如下列範例輸出所示:

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

    如果您的網域已經支援 FIDO 驗證,Get-AzureAdKerberosServer Cmdlet 會顯示 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 Cmdlet 以新增受信任的網域物件。 請務必包含 -SetupCloudTrust 參數。 如果沒有 Microsoft Entra 服務帳戶,此命令會建立新的 Microsoft Entra 服務帳戶。 如果有 Microsoft Entra 服務帳戶,此命令只會建立要求的受信任網域物件。

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

    注意

    在多重網域樹系上,為了避免在子網域上執行命令時發生 LsaCreateTrustedDomainEx 0x549 錯誤:

    1. 在根網域上執行命令 (包含 -SetupCloudTrust 參數)。
    2. 在子網域上執行相同命令,但不要包含 -SetupCloudTrust 參數。

    建立受信任的網域物件之後,您可以使用 Get-AzureAdKerberosServer PowerShell Cmdlet 來檢查已更新的 Kerberos 設定,如上一個步驟所示。 如果 Set-AzureAdKerberosServer Cmdlet 已搭配 -SetupCloudTrust 參數成功執行,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 受控執行個體的 Azure 主權雲端部署會使用不同的最上層網域名稱,例如 Azure 美國政府會採用 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 Proxy 伺服器] 原則設定。

    2. 選取 [啟用] 。

    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 Proxy 伺服器設定,如下所示。 以您的 Microsoft Entra 租用戶識別碼取代 your_Azure_AD_tenant_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. 按一下 [確定] 以關閉 [顯示內容] 對話方塊。

    6. 選取 [指定 Kerberos 用戶端的 KDC Proxy 伺服器] 對話方塊上的 [套用]。

輪替 Kerberos 金鑰

您可以定期為所建立的 Microsoft Entra 服務帳戶和受信任的網域物件輪替 Kerberos 金鑰來達到管理目的。

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

輪替金鑰之後,在 Kerberos KDC 伺服器之間傳播已變更的金鑰需要數小時的時間。 由於此金鑰散發時間安排,您在 24 小時內可以輪替金鑰一次。 如果您需要在 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 受控執行個體上為 Microsoft Entra 主體實作 Windows 驗證: