共用方式為


設定內部部署 AD DS 與 Microsoft Entra 識別碼之間的雲端信任,以存取 Azure 檔案儲存體

許多組織想要在跨越 內部部署的 Active Directory Domain Services (AD DS) 和 Microsoft Entra ID(先前稱為 Azure Active Directory)的環境中,針對 SMB Azure 檔案共用使用身分識別型驗證,但不符合必要的操作系統或網域必要條件

在這種情況下,客戶可以啟用混合式使用者身分識別的 Microsoft Entra Kerberos 驗證,然後在內部部署 AD DS 和 Microsoft Entra ID 之間建立雲端信任,以使用其內部部署認證存取 SMB 檔案共用。 本文說明雲端信任的運作方式,並提供設定和驗證的指示。 它也包含在 Microsoft Entra ID 和 Trusted Domain Object 中輪替服務帳戶的 Kerberos 密鑰的步驟,以及視需要移除信任的網域物件和所有 Kerberos 設定的步驟。

本文著重於驗證混合式使用者身分識別,這些身分識別是使用 Microsoft Entra Connect 或 Microsoft Entra Connect 雲端同步,同步至 Microsoft Entra ID 的內部部署 AD DS 身分識別。 Azure 檔案儲存體 目前不支援僅限雲端身分識別。

適用於

檔案共用類型 SMB NFS
標準檔案共用 (GPv2)、LRS/ZRS 是 否
標準檔案共用 (GPv2)、GRS/GZRS 是 否
進階檔案共用 (FileStorage)、LRS/ZRS 是 No

案例

以下是您可能想要設定雲端信任的案例範例:

  • 您有傳統的內部部署 AD DS,但無法將其用於驗證,因為您沒有域控制器的未受限制網路連線。

  • 您已開始移轉至雲端,但目前仍有在傳統內部部署AD DS上執行的應用程式。

  • 部分或所有用戶端電腦不符合 Microsoft Entra Kerberos 驗證的作業系統需求

權限

若要完成本文中所述的步驟,您需要:

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

必要條件

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

先決條件 說明
用戶端必須執行 Windows 10、Windows Server 2012 或更新版本的 Windows。
客戶端必須加入Active Directory(AD)。 網域必須具有 Windows Server 2012 或更新版本的功能等級。 您可以執行 dsregcmd 命令來判斷用戶端是否已加入 AD:dsregcmd.exe /status
Microsoft Entra 租用戶。 Microsoft Entra Tenant 是貴組織 IT 部門控制下的身分識別安全性界限。 這是Microsoft Entra標識符的實例,其中單一組織的信息位於其中。
您打算用於驗證之相同Microsoft Entra 租使用者的 Azure 訂用帳戶。
Azure 訂用帳戶中的 Azure 記憶體帳戶。 Azure 記憶體帳戶是一種資源,可作為容器,用來將來自 Azure 儲存體 的所有數據服務分組,包括檔案。
必須安裝 entra Connect 或 Microsoft Entra Connect 雲端同步處理Microsoft。 這些解決方案用於 身分識別同時存在於 Microsoft Entra ID 和內部部署 AD DS 的混合式環境中

啟用 Microsoft Entra Kerberos 驗證

如果您已在記憶體帳戶上啟用 Microsoft Entra Kerberos 驗證,您可以略過此步驟,然後繼續建立 及設定 Microsoft Entra Kerberos 受信任網域物件

您可以使用 Azure 入口網站、PowerShell 或 Azure CLI,在混合式使用者帳戶的 Azure 檔案儲存體上啟用 Microsoft Entra Kerberos 驗證。

若要使用 Azure 入口網站來啟用 Microsoft Entra 驗證,請遵循下列步驟。

  1. 登入 Azure 入口網站,然後選取您想要啟用 Microsoft Entra Kerberos 驗證的儲存體帳戶。

  2. 在 [資料儲存體] 下,選取 [檔案共用]

  3. 選取 [Active Directory] 旁的設定狀態 (例如 [未設定])。

    Azure 入口網站的螢幕擷取畫面,其中顯示儲存體帳戶的檔案共用設定。已選取 Active Directory 組態設定。

  4. 在 [Microsoft Entra Kerberos]底下,選取 [設定]

  5. 選取 [Microsoft Entra Kerberos] 核取方塊。

    Azure 入口網站的螢幕擷取畫面,其中顯示儲存體帳戶的 Active Directory 組態設定。已選取 Microsoft Entra Kerberos。

  6. 選擇性:如果您想要透過 Windows 檔案總管設定目錄和檔案層級權限,則需要指定內部部署 AD 的網域名稱和網域 GUID。 您可以向網域管理員取得此資訊,或從已加入內部部署 AD 的用戶端執行下列的 Active Directory PowerShell cmdlet 來取得:Get-ADDomain。 您的網域名稱應會列於 DNSRoot 底下的輸出中,而您的網域 GUID 應會列於 ObjectGUID 底下。 如果您偏好使用 icacls 來設定目錄和檔案層級權限,您可以略過此步驟。 不過,如果您想要使用 icacls,用戶端將需要不受限制的網路連線至內部部署 AD。

  7. 選取 [儲存]。

警告

如果您先前已透過手動有限預覽步驟啟用 Microsoft Entra Kerberos 驗證,在 Azure 檔案儲存體上針對已聯結 Azure AD 的 VM 儲存 FSLogix 設定檔,則儲存體帳戶服務主體的密碼會設定為每六個月到期一次。 密碼到期之後,使用者將無法取得檔案共用的 Kerberos 票證。 若要減輕此問題,請參閱為混合式使用者啟用 Microsoft Entra Kerberos 驗證時的潛在錯誤底下的「錯誤 - Microsoft Entra ID 中的服務主體密碼已過期」。

啟用 Microsoft Entra Kerberos 驗證之後,您將需要明確授與管理員同意 Microsoft Entra 租用戶中所註冊的新 Microsoft Entra 應用程式。 此服務主體會自動產生,且不會用於檔案共用的授權,因此請勿對此處列出之外的服務主體進行任何編輯。 如果您這樣做,您可能會收到錯誤。

您可以遵循下列步驟,從 Azure 入口網站設定 API 權限:

  1. 開啟 Microsoft Entra ID
  2. 在服務功能表的 [管理] 底下,選取 [應用程式註冊]
  3. 選取 [所有應用程式]
  4. 選取名稱符合 [Storage Account]<your-storage-account-name>.file.core.windows.net 的應用程式。
  5. 在服務功能表的 [管理] 底下,選取 [API 權限]
  6. 選取針對 [目錄名稱] 授與管理員同意,以同意對目錄中所有帳戶授與三個要求的 API 權限 (openid、profile 和 User.Read)。
  7. 選取 確認。

重要

如果您使用 Microsoft Entra Kerberos 驗證透過私人端點/私人連結連線至儲存體帳戶,您也必須將私人連結 FQDN 新增至儲存體帳戶的 Microsoft Entra 應用程式。 如需指示,請參閱我們疑難排解指南中的說明。

在儲存體帳戶上停用多重要素驗證

Microsoft Entra Kerberos 不支援使用 MFA 來存取使用 Microsoft Entra Kerberos 設定的 Azure 檔案共用。 如果 MFA 條件式存取原則套用至所有應用程式,則必須從這些原則中排除代表您儲存體帳戶的 Microsoft Entra 應用程式。

儲存體帳戶應用程式應該與條件式存取排除清單中儲存體帳戶的名稱相同。 在條件式存取排除清單中搜尋儲存體帳戶應用程式時,請搜尋:[Storage Account] <your-storage-account-name>.file.core.windows.net

請記得將 <your-storage-account-name> 取代為適當的值。

重要

如果您未從儲存體帳戶應用程式中排除 MFA 原則,您將無法存取檔案共用。 嘗試使用 net use 對應檔案共用將會導致錯誤訊息:「系統錯誤 1327:帳戶限制會使此使用者無法登入。 例如:不允許空白密碼、登入時間受到限制,或已強制執行原則限制。」

如需停用 MFA 的指導,請參閱下方:

指派共用層級權限

當您啟用身分識別型存取時,您必須為每個共用指派哪些使用者和群組具有該特定共用的存取權。 一旦允許使用者或群組存取共用,個別檔案和目錄上的 Windows ACL(也稱為 NTFS 許可權)就會接管。 這可讓您更精細地控制權限,類似於 Windows Server 上的 SMB 共用。

若要設定共用層級權限,請依照將共用層級權限指派給身分識別中的指示進行。

設定目錄和檔案層級權限

一旦共用層級權限就緒之後,您可以將目錄/檔案層級權限指派給使用者或群組。 這需要使用具不受限制網路連線的裝置,連線至內部部署 AD

若要設定目錄和檔案層級權限,請依照透過 SMB 設定目錄和檔案層級權限中的指示進行。

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

若要建立及設定 Microsoft Entra Kerberos Trusted Domain Object,您將使用 Azure AD 混合式驗證管理 PowerShell 模組。 本課程模組可讓混合式身分識別組織為其應用程式使用新式認證,並讓Microsoft Entra ID 成為雲端和內部部署驗證的信任來源。

設定受信任的網域物件

您將使用 Azure AD 混合式驗證管理 PowerShell 模組,在內部部署 AD 網域中設定受信任的網域物件,並使用 Microsoft Entra ID 註冊信任資訊。 這會在內部部署 AD 中建立輸入信任關係,讓 Microsoft Entra ID 能夠信任內部部署 AD。

您只需要為每個網域設定信任的網域物件一次。 如果您已經為網域執行此動作,您可以略過本節,然後繼續設定 用戶端以擷取 Kerberos 票證

安裝 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 管理功能。
      • 若要防止與 Azure AD 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 參數的步驟。 如果您採用此方法,請勿 -DomainCredential 在此步驟之後的 PowerShell 命令中包含 參數。

    $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                  : XXXXX
    UserAccount         : CN=krbtgt-AzureAD, CN=Users, DC=contoso, DC=com
    ComputerAccount     : CN=AzureADKerberos, OU=Domain Controllers, DC=contoso, DC=com
    DisplayName         : XXXXXX_XXXXX
    DomainDnsName       : contoso.com
    KeyVersion          : 53325
    KeyUpdatedOn        : 2/24/2024 9:03:15 AM
    KeyUpdatedFrom      : ds-aad-auth-dem.contoso.com
    CloudDisplayName    : XXXXXX_XXXXX
    CloudDomainDnsName  : contoso.com
    CloudId             : XXXXX
    CloudKeyVersion     : 53325
    CloudKeyUpdatedOn   : 2/24/2024 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                  : XXXXX
    UserAccount         : CN=krbtgt-AzureAD, CN=Users, DC=contoso, DC=com
    ComputerAccount     : CN=AzureADKerberos, OU=Domain Controllers, DC=contoso, DC=com
    DisplayName         : XXXXXX_XXXXX
    DomainDnsName       : contoso.com
    KeyVersion          : 53325
    KeyUpdatedOn        : 2/24/2024 9:03:15 AM
    KeyUpdatedFrom      : ds-aad-auth-dem.contoso.com
    CloudDisplayName    : XXXXXX_XXXXX
    CloudDomainDnsName  : contoso.com
    CloudId             : XXXXX
    CloudKeyVersion     : 53325
    CloudKeyUpdatedOn   : 2/24/2024 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

設定用戶端以擷取 Kerberos 票證

識別您的 Microsoft Entra 租使用者標識符 ,並使用組策略來設定您想要掛接/使用 Azure 檔案共用的用戶端電腦。 您必須在將使用 Azure 檔案儲存體的每個用戶端上執行此動作。

在用戶端上將此群組原則設為「已啟用」:Administrative Templates\System\Kerberos\Allow retrieving the Azure AD Kerberos Ticket Granting Ticket during logon

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

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

    2. 選取 [啟用] 。

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

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

    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 />

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

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

此命令只會移除受信任的網域物件。 如果您的網域支援 FIDO 驗證,您可以移除受信任的網域物件,同時維護 FIDO 驗證服務所需的 Microsoft Entra 服務帳戶。

移除所有 Kerberos 設定

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

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

後續步驟