如何使用傳入信任型流程設定 Azure AD 的 Windows 驗證

本文說明如何實作傳入信任型驗證流程,以允許加入 Active Directory (AD) 且執行 Windows 10、Windows Server 2012 或更高 Windows 版本的用戶端,使用 Windows 驗證向 Azure SQL 受控執行個體進行驗證。 本文也會分享 Azure Active Directory (Azure AD) 服務帳戶和受信任網域物件的 Kerberos 金鑰輪替步驟,以及移除受信任網域物件和所有 Kerberos 設定的步驟 (如有需要)。

啟用傳入的信任型驗證流程,是使用 Azure Active Directory 和 Kerberos 為Azure SQL 受控執行個體設定 Windows 驗證的一個步驟。 新式互動式流程適用于執行 Windows 10 20H1、Windows Server 2022 或更新版本的 Windows 的覺察型用戶端。

權限

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

  • 內部部署的 Active Directory 管理員使用者名稱和密碼。
  • Azure AD 全域管理員帳戶的使用者名稱與密碼。

必要條件

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

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

建立及設定 Azure AD Kerberos 受信任網域物件

若要建立及設定 Azure AD Kerberos 受信任網域物件,您將安裝 Azure AD 混合式驗證管理 PowerShell 模組。

接著,您將使用 Azure AD 混合式驗證管理 PowerShell 模組,在內部部署 AD 網域中設定受信任網域物件,並向 Azure AD 註冊信任資訊。 這會在內部部署 AD 中建立輸入信任關係,讓內部部署 AD 能夠信任 Azure 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 模組來提供進階的 Azure AD 管理功能。
      • 若要避免與 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 參數設定為全域管理員特殊權限帳戶的使用者名稱,以存取 Azure AD 雲端。

    注意

    如果您想要將目前 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 
    

    如果這是第一次呼叫任何 Azure AD Kerberos 命令,系統會提示您提供 Azure AD 雲端存取權。

    • 輸入您 Azure AD 全域管理員帳戶的密碼。
    • 如果您的組織使用其他新式驗證方法,例如 MFA (Azure Multi-Factor Authentication) 或智慧卡,請依照登入的要求指示操作。

    如果這是您第一次設定 Azure AD Kerberos 設定,Get-AzureAdKerberosServer Cmdlet 會顯示空白資訊,如下列範例輸出所示:

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

    如果您的網域已經支援 FIDO 驗證,Get-AzureAdKerberosServer Cmdlet 會顯示 Azure AD 服務帳戶資訊,如下列範例輸出所示。 請注意,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 參數。 如果沒有 Azure AD 服務帳戶,此命令將會建立新的 Azure AD 服務帳戶。 如果已經有 Azure AD 服務帳戶,此命令只會建立要求的受信任網域物件。

    Set-AzureAdKerberosServer -Domain $domain ` 
       -DomainCredential $domainCred ` 
       -UserPrincipalName $cloudUserName ` 
       -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
    

設定群組原則物件 (GPO)

  1. 識別 Azure AD 租用戶識別碼

  2. 使用傳入信任型流程,將下列群組原則設定部署至用戶端電腦:

    1. 編輯 [系統管理範本]\[系統]\[Kerberos]\[指定 Kerberos 用戶端的 KDC Proxy 伺服器] 原則設定。

    2. 選取 [啟用] 。

    3. 在 [選項] 底下,選取 [顯示...]。這會開啟 [顯示內容] 對話方塊。

      啟用 [為 Kerberos 用戶端指定 KDC Proxy 伺服器] 對話方塊的螢幕擷取畫面。[顯示內容] 對話方塊允許輸入值名稱和相關值。

    4. 使用對應定義 KDC Proxy 伺服器設定,如下所示。 以您的 Azure AD 租用戶識別碼取代 your_Azure_AD_tenant_id 預留位置。 請注意值對應中 https 之後的空格,以及結尾 / 之前的空格。

      值名稱
      KERBEROS.MICROSOFTONLINE.COM <https login.microsoftonline.com:443:your_Azure_AD_tenant_id/kerberos />

      [定義 KDC Proxy 伺服器設定] 對話方塊的螢幕擷取畫面。資料表允許輸入多個資料列。每個資料列都包含值名稱和值。

    5. 按一下 [確定] 以關閉 [顯示內容] 對話方塊。

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

輪替 Kerberos 金鑰

您可以定期為所建立的 Azure AD 服務帳戶和受信任的網域物件輪替 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 驗證服務所需的 Azure AD 服務帳戶。

移除所有 Kerberos 設定

您可以使用下列命令來同時移除 Azure AD 服務帳戶和受信任的網域物件:

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

下一步

深入了解在 Azure SQL 受控執行個體上為 Azure AD 主體實作 Windows 驗證: