設定內部部署 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 |
案例
以下是您可能想要設定雲端信任的案例範例:
您有傳統的內部部署 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 驗證,請遵循下列步驟。
登入 Azure 入口網站,然後選取您想要啟用 Microsoft Entra Kerberos 驗證的儲存體帳戶。
在 [資料儲存體] 下,選取 [檔案共用]。
選取 [Active Directory] 旁的設定狀態 (例如 [未設定])。
在 [Microsoft Entra Kerberos]底下,選取 [設定]。
選取 [Microsoft Entra Kerberos] 核取方塊。
選擇性:如果您想要透過 Windows 檔案總管設定目錄和檔案層級權限,則需要指定內部部署 AD 的網域名稱和網域 GUID。 您可以向網域管理員取得此資訊,或從已加入內部部署 AD 的用戶端執行下列的 Active Directory PowerShell cmdlet 來取得:
Get-ADDomain
。 您的網域名稱應會列於DNSRoot
底下的輸出中,而您的網域 GUID 應會列於ObjectGUID
底下。 如果您偏好使用 icacls 來設定目錄和檔案層級權限,您可以略過此步驟。 不過,如果您想要使用 icacls,用戶端將需要不受限制的網路連線至內部部署 AD。選取 [儲存]。
警告
如果您先前已透過手動有限預覽步驟啟用 Microsoft Entra Kerberos 驗證,在 Azure 檔案儲存體上針對已聯結 Azure AD 的 VM 儲存 FSLogix 設定檔,則儲存體帳戶服務主體的密碼會設定為每六個月到期一次。 密碼到期之後,使用者將無法取得檔案共用的 Kerberos 票證。 若要減輕此問題,請參閱為混合式使用者啟用 Microsoft Entra Kerberos 驗證時的潛在錯誤底下的「錯誤 - Microsoft Entra ID 中的服務主體密碼已過期」。
授與管理員同意新的服務主體
啟用 Microsoft Entra Kerberos 驗證之後,您將需要明確授與管理員同意 Microsoft Entra 租用戶中所註冊的新 Microsoft Entra 應用程式。 此服務主體會自動產生,且不會用於檔案共用的授權,因此請勿對此處列出之外的服務主體進行任何編輯。 如果您這樣做,您可能會收到錯誤。
您可以遵循下列步驟,從 Azure 入口網站設定 API 權限:
- 開啟 Microsoft Entra ID。
- 在服務功能表的 [管理] 底下,選取 [應用程式註冊]。
- 選取 [所有應用程式]。
- 選取名稱符合 [Storage Account]
<your-storage-account-name>
.file.core.windows.net 的應用程式。 - 在服務功能表的 [管理] 底下,選取 [API 權限]。
- 選取針對 [目錄名稱] 授與管理員同意,以同意對目錄中所有帳戶授與三個要求的 API 權限 (openid、profile 和 User.Read)。
- 選取 是 確認。
重要
如果您使用 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 模組
利用 [以系統管理員身分執行] 選項來啟動 Windows PowerShell 工作階段。
使用下列指令碼安裝 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
建立受信任的網域物件
利用 [以系統管理員身分執行] 選項來啟動 Windows PowerShell 工作階段。
設定一般參數。 先自訂下列指令碼,然後再加以執行。
- 將
$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"
- 將
檢查目前的 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 :
新增受信任的網域物件。
執行 Set-AzureAdKerberosServer PowerShell Cmdlet 以新增受信任的網域物件。 請務必包含
-SetupCloudTrust
參數。 如果沒有 Microsoft Entra 服務帳戶,此命令會建立新的 Microsoft Entra 服務帳戶。 如果有 Microsoft Entra 服務帳戶,此命令只會建立要求的受信任網域物件。Set-AzureADKerberosServer -Domain $domain -UserPrincipalName $cloudUserName -DomainCredential $domainCred -SetupCloudTrust
注意
在多重網域樹系上,為了避免在子網域上執行命令時發生 LsaCreateTrustedDomainEx 0x549 錯誤:
- 在根網域上執行命令 (包含
-SetupCloudTrust
參數)。 - 在子網域上執行相同命令,但不要包含
-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
使用傳入信任型流程,將下列群組原則設定部署至用戶端電腦:
編輯 [系統管理範本]\[系統]\[Kerberos]\[指定 Kerberos 用戶端的 KDC Proxy 伺服器] 原則設定。
選取 [啟用] 。
在 [選項] 底下,選取 [顯示...]。這會開啟 [顯示內容] 對話方塊。
使用對應定義 KDC Proxy 伺服器設定,如下所示。 以您的 Microsoft Entra 租用戶識別碼取代
your_Azure_AD_tenant_id
預留位置。 請注意值對應中https
之後以及結尾/
之前的空格。值名稱 值 KERBEROS.MICROSOFTONLINE.COM <https login.microsoftonline.com:443: your_Azure_AD_tenant_id
/kerberos />按一下 [確定] 以關閉 [顯示內容] 對話方塊。
選取 [指定 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