Active Directory 同盟服務快速還原工具

設定 AD FS 伺服器陣列可讓 Active Directory 同盟服務 (AD FS) 成為高可用性。 某些組織偏好使用單一伺服器 AD FS 部署,以消除多個 AD FS 伺服器和網路負載平衡基礎結構的需求。 這種方法有助於確保解決潛在問題之後,快速還原服務。

AD FS 快速還原工具可讓您還原 AD FS 資料,而不需要完整備份和還原作業系統或系統狀態。 使用 工具將 AD FS 設定匯出至 Azure 或內部部署位置。 您可以將匯出的資料套用至新的 AD FS 安裝,然後重新建立或複製 AD FS 環境。

使用案例

您可以在各種案例中使用 AD FS 快速還原工具:

  • 問題之後快速還原 AD FS 功能。 使用快速還原工具來建立 AD FS 的冷待命安裝,可快速部署以取代線上 AD FS 伺服器。

  • 部署相同的測試和生產環境。 在測試環境中快速建立生產 AD FS 的準確複本。 您也可以使用快速還原工具,將已驗證的測試設定快速部署至生產環境。

  • 移轉 SQL 和 Windows 整合式資料庫 (WID) 設定。 使用快速還原工具遷移您的資料,並從 SQL 伺服器陣列設定移至 WID,反之亦然。

注意

如果您使用 SQL 合併式複寫或 Always on 可用性群組,則不支援快速還原工具。 我們建議以 SQL 為基礎的備份和 SSL 憑證的備份。

備份內容

快速還原工具會備份下列 AD FS 設定:

  • AD FS 設定資料庫 (SQL 或 WID)
  • 設定檔案 (位於 AD FS 資料夾中)
  • 已安裝的自訂驗證提供者、屬性存放區和本機宣告提供者信任的清單
  • 從 Active Directory 分散式金鑰管理員 (DKM) 容器自動產生權杖簽署和解密憑證和私密金鑰
  • SSL 憑證和任何外部註冊的憑證 (權杖簽署、權杖解密和服務通訊) 和對應的私密金鑰

注意

私密金鑰必須可匯出。 執行指令碼的使用者必須具有存取金鑰的權限。

備份加密

所有備份資料都會在推送至雲端或儲存在檔案系統之前加密。

作為備份的一部分建立的每個文件均使用 AES-256 進行加密。 提供給快速還原工具的密碼會作為傳遞片語,透過 Rfc2898DeriveBytes 類別產生新密碼。

RngCryptoServiceProvider 類別會產生 AES 和 Rfc2898DeriveBytes 類別所使用的 salt (binary blob)。

開始使用

若要開始使用 AD FS 快速還原工具,請先檢閱下列系統和工具需求。

  • 此工具適用於 Windows Server 2016 和更新版本中的 AD FS。
  • 這套工具需要 .NET Framework 4.6 或更新版本。
  • 如果您使用 WID,此工具必須在主要 AD FS 伺服器上執行。 使用 Get-AdfsSyncProperties Cmdlet 來檢查您的伺服器是否為主要伺服器。
  • 還原必須在與備份伺服器相同版本的 AD FS 伺服器上執行,並使用與 AD FS 服務帳戶相同的 Active Directory 帳戶。

請遵循下列步驟來設定工具:

  1. 下載並將 MSI 安裝到 AD FS 伺服器。

  2. 安裝此工具之後,請從 PowerShell 提示字元執行下列命令:

    Import-Module 'C:\Program Files (x86)\ADFS Rapid Recreation Tool\ADFSRapidRecreationTool.dll'
    

建立備份:Backup-ADFS

若要建立備份,請使用 Backup-ADFS PowerShell Cmdlet。 備份 Cmdlet 會備份 AD FS 設定、資料庫、SSL 憑證等。

使用備份 Cmdlet 之前,請先檢閱下列存取權和權限需求。

  • 以本機系統管理員身分執行。若要執行備份 Cmdlet,使用者至少必須是本機系統管理員。

  • 以網域系統管理員身分備份。若要備份 Active Directory DKM 容器 (在預設 AD FS 設定中是必要的),使用者權限必須滿足下列一或多個準則:

    • 使用者必須是網域管理員。
    • 使用者必須傳入 AD FS 服務帳戶認證。
    • 使用者必須能夠存取 DKM 容器。
  • 使用 gMSA 帳戶作為網域管理員。針對群組受控服務帳戶 (gMSA),使用者必須是網域管理員或具有容器的使用權限。 使用者無法提供 gMSA 認證。

Backup-ADFS Cmdlet 參數

每個備份都會根據模式 adfsBackup_ID_Date-Time 來命名。 名稱包含備份的版本號碼、日期和時間。

以下是 Backup-ADFS Cmdlet 的參數:

Backup-ADFS 
  -StorageType {FileSystem | Azure} 
  -EncryptionPassword <string> 
  -AzureConnectionCredentials <pscredential> 
  -AzureStorageContainer <string> 
  [-BackupComment <string>] 
  [-ServiceAccountCredential <pscredential>]
  [-BackupDKM]
  [<CommonParameters>]
    
Backup-ADFS -StorageType {FileSystem | Azure} 
  -EncryptionPassword <string>
  -StoragePath <string> 
  [-BackupComment <string>]
  [-ServiceAccountCredential <pscredential>]
  [-BackupDKM]
  [<CommonParameters>]

下列清單描述 Backup-ADFS Cmdlet 的參數詳細資料。

  • BackupDKM:備份包含預設設定中 AD FS 金鑰的 Active Directory DKM 容器 (自動產生的權杖簽署和解密憑證)。 這套辦法使用 Microsoft Entra ldifde工具匯出 Microsoft Entra 容器及其所有子樹。

  • StorageType <string>:當使用者執行備份時,他們會選取備份位置:

    • FileSystem 指出使用者想要將備份儲存在本機資料夾或網路中。 若要將備份儲存在檔案系統中,使用者必須滿足下列需求:

      • 必須指定儲存空間路徑。

      在路徑目錄中,會為每個備份建立新的目錄。 每個建立的目錄都包含備份的檔案。

    • Azure 指出使用者想要將備份儲存在 Azure 儲存空間容器中。 若要將備份儲存在雲端中,使用者必須滿足下列需求:

      • Azure 儲存空間認證應該傳遞至 Cmdlet。 儲存空間認證包含帳戶名稱和金鑰。
      • 容器名稱也必須傳入。 如果容器不存在,則會在備份期間建立容器。
  • EncryptionPassword <string>:用於在儲存之前對所有備份檔案進行加密的密碼。

  • AzureConnectionCredentials <pscredential>:Azure 儲存空間帳戶的帳戶名稱和金鑰。

  • AzureStorageContainer <string>:Azure 中備份的儲存空間容器。

  • StoragePath <string>:備份的儲存位置。

  • ServiceAccountCredential <pscredential>:用於目前執行 AD FS 服務的服務帳戶。 只有當使用者想要備份 DKM,且不是網域管理員或無法存取容器內容時,才需要此參數。

  • BackupComment <string[]>:還原期間要顯示之備份的相關資訊字串。 此字串類似於 Hyper-V 檢查點命名的概念。 預設值是空字串。

備份範例

下列 PowerShell 範例示範使用 AD FS 快速還原工具和 Backup-ADFS Cmdlet 來設定 AD FS 設定的備份選項。

以 DKM 作為網域管理員備份至檔案系統

下列 Cmdlet 會使用 -BackupDKM 參數,將 AD FS 設定備份至檔案系統與 DKM。 此方法允許網域管理員或具有委派權限的使用者存取 DKM 容器內容。

Backup-ADFS -StorageType "FileSystem" -StoragePath "C:\Users\administrator\testExport\" -EncryptionPassword "password" -BackupComment "Clean Install of AD FS (FS)" -BackupDKM

以 DKM 作為本機系統管理員備份至檔案系統

下列 Cmdlet 也會使用 DKM 將 AD FS 設定備份至檔案系統,但會使用稍微不同的方法。 在此選項中,您可以使用 -ServiceAccountCredential $cred 參數指定服務帳戶認證,並以本機系統管理員身分執行作業。

Backup-ADFS -StorageType "FileSystem" -StoragePath "C:\Users\administrator\testExport\" -EncryptionPassword "password" -BackupComment "Clean Install of AD FS (FS)" -BackupDKM -ServiceAccountCredential $cred

備份至沒有 DKM 的 Azure 儲存空間容器

下列 Cmdlet 會將 AD FS 設定備份至 Azure 儲存空間容器,而不使用 DKM。 使用 -AzureStorageContainer "adfsbackups" 參數來指定容器。

Backup-ADFS -StorageType "Azure" -AzureConnectionCredentials $cred -AzureStorageContainer "adfsbackups"  -EncryptionPassword "password" -BackupComment "Clean Install of AD FS"

備份至沒有 DKM 的檔案系統

下列 Cmdlet 會將 AD FS 設定備份至檔案系統,而不使用 DKM。 請注意,未指定 -BackupDKM 參數。

Backup-ADFS -StorageType "FileSystem" -StoragePath "C:\Users\administrator\testExport\" -EncryptionPassword "password" -BackupComment "Clean Install of AD FS (FS)"

還原備份:Restore-ADFS

若要使用 Backup-ADFS Cmdlet 將建立的設定套用至新的 AD FS 安裝,請使用 Restore-ADFS Cmdlet。 還原 Cmdlet 會使用 Install-AdfsFarm Cmdlet 建立新的 AD FS 伺服器陣列,並還原 AD FS 設定、資料庫、憑證等。

還原 Cmdlet 會檢查現有備份的還原位置。 Cmdlet 會提示使用者根據建立的日期和時間選擇適當的備份,以及使用者可能已附加至備份的任何備份註解。 如果有多個 AD FS 組態具有不同的同盟服務名稱,系統會先提示使用者選擇適當的 AD FS 設定。

使用還原 Cmdlet 之前,請先檢閱下列需求。

  • 如果未在伺服器上安裝 AD FS 角色,Cmdlet 會安裝角色。
  • 使用者必須是本機和網域系統管理員,才能執行此 Cmdlet。

重要

使用 AD FS 快速還原工具來還原備份之前,請確定伺服器已加入網域。

Restore-ADFS Cmdlet 參數

以下是 Restore-ADFS Cmdlet 的參數:

Restore-ADFS 
  -StorageType {FileSystem | Azure} 
  -DecryptionPassword <string> 
  -AzureConnectionCredentials <pscredential>
  -AzureStorageContainer <string>
  [-ADFSName <string>]
  [-ServiceAccountCredential <pscredential>]
  [-GroupServiceAccountIdentifier <string>]
  [-DBConnectionString <string>]
  [-Force]
  [-RestoreDKM]  
  [<CommonParameters>]
    
Restore-ADFS 
  -StorageType {FileSystem | Azure} 
  -DecryptionPassword <string>
  -StoragePath <string>
  [-ADFSName <string>]
  [-ServiceAccountCredential <pscredential>]
  [-GroupServiceAccountIdentifier <string>]
  [-DBConnectionString <string>]
  [-Force]
  [-RestoreDKM]
  [<CommonParameters>]

下列清單描述 Restore-ADFS Cmdlet 的參數詳細資料。

  • StorageType <string>:要使用的儲存空間類型:

    • FileSystem 會將備份儲存在本機資料夾或網路中。
    • Azure 會將備份儲存在 Azure 儲存空間容器中。
  • DecryptionPassword <string>:用來加密所有備份檔案的密碼。

  • AzureConnectionCredentials <pscredential>:Azure 儲存空間帳戶的帳戶名稱和金鑰。

  • AzureStorageContainer <string>:將備份儲存在 Azure 中的儲存空間容器。

  • StoragePath <string>:備份的儲存位置。

  • ADFSName <string>:備份和還原的同盟名稱。

    • 如果未指定名稱,而且只有一個同盟服務名稱存在,則會使用該同盟服務名稱。
    • 如果有多個同盟服務備份到位置,系統會提示使用者選擇備份的同盟服務。
  • ServiceAccountCredential <pscredential>:指定要用於正在還原之新 AD FS 服務的服務帳戶。

  • GroupServiceAccountIdentifier <string>:使用者想要用於正在還原之新 AD FS 服務的 gMSA。

    • 預設情況下,如果未提供值,則使用備份的帳戶名稱 (如果帳戶是 gMSA)。
    • 如果未提供值,而且帳戶不是 gMSA,系統會提示使用者指定服務帳戶。
  • DBConnectionString <string>:若要使用不同的資料庫進行還原,請指定 SQL 連接字串或輸入 "WID"。

  • Force <bool>:選取備份程式之後,請略過工具的任何提示。

  • RestoreDKM <bool>:將 DKM 容器還原至 Active Directory。 還原至新的 Active Directory 且最初備份 DKM 時,請設定此選項。

還原範例

下列 PowerShell 範例示範使用 AD FS 快速還原工具和 Restore-ADFS Cmdlet 來設定 AD FS 設定的還原選項。

以 DKM 作為網域管理員還原至檔案系統

下列 Cmdlet 會使用 -RestoreDKM 參數,將 AD FS 設定還原至具有 DKM 的檔案系統。

Restore-ADFS -StorageType "FileSystem" -StoragePath "C:\Users\administrator\testExport\" -DecryptionPassword "password" -RestoreDKM

還原至沒有 DKM 的檔案系統

下列 Cmdlet 會將 AD FS 設定還原至檔案系統,而不使用 DKM。 請注意,未指定 -RestoreDKM 參數。

Restore-ADFS -StorageType "FileSystem" -StoragePath "C:\Users\administrator\testExport\" -DecryptionPassword "password"

還原至沒有 DKM 的 Azure 儲存空間容器

下列 Cmdlet 會將 AD FS 設定還原至 Azure 儲存空間容器,而不使用 DKM。 使用 -AzureStorageContainer "adfsbackups" 參數來指定容器。

Restore-ADFS -StorageType "Azure" -AzureConnectionCredential $cred -DecryptionPassword "password" -AzureStorageContainer "adfsbackups"

還原至 WID

下列 Cmdlet 會將 AD FS 設定還原至 WID。 請注意傳遞至 -DBConnectionString 參數的 WID 值。

Restore-ADFS -StorageType "FileSystem" -StoragePath "C:\Users\administrator\testExport\" -DecryptionPassword "password" -DBConnectionString "WID"

還原至 SQL

下列 Cmdlet 會將 AD FS 設定還原至 SQL。 請注意傳遞至 -DBConnectionString 參數的 Data SourceIntegrated Security 值。

Restore-ADFS -StorageType "FileSystem" -StoragePath "C:\Users\administrator\testExport\" -DecryptionPassword "password" -DBConnectionString "Data Source=TESTMACHINE\SQLEXPRESS; Integrated Security=True"

使用指定的 gMSA 帳戶還原

下列 Cmdlet 會還原 AD FS 設定,並使用指定的 gMSA 帳戶。 請注意,使用 -GroupServiceAccountIdentifier 參數。

Restore-ADFS -StorageType "FileSystem" -StoragePath "C:\Users\administrator\testExport\" -DecryptionPassword "password" -GroupServiceAccountIdentifier "mangupd1\adfsgmsa$"

使用指定的服務帳戶認證還原

下列 Cmdlet 會還原 AD FS 設定,並使用指定的服務帳戶認證。 請注意,使用 -ServiceAccountCredential 參數。

Restore-ADFS -StorageType "FileSystem" -StoragePath "C:\Users\administrator\testExport\" -DecryptionPassword "password" -ServiceAccountCredential $cred

記錄檔

系統會為每個備份和還原作業建立記錄檔。 您可以在 %LOCALAPPDATA%\ADFSRapidRecreationTool 找到記錄檔。

注意

當您進行還原時,可能會建立 PostRestore_Instructions 檔案。 此檔案包含啟動 AD FS 服務之前,必須先手動安裝的其他資料或服務概觀。 檔案會指定驗證提供者、屬性存放區和本機宣告提供者信任。

版本發行歷程記錄

下列各節會識別 AD FS 快速還原工具的版本詳細資料。

第 2.0.2464.1 版

發行時間︰2023 年 12 月

修正的問題:

  • 偵錯修正:恢復期間區分 CNG & CSP 金鑰

版本 1.0.82.3

發行日期:2020 年 4 月

修正的問題:

  • 新增 CNG 型憑證的支援

版本 1.0.82.0

發行日期:2019 年 7 月

修正的問題:

  • 修正包含 LDAP 逸出字元的 AD FS 服務帳戶名稱錯誤

版本 1.0.81.0

發行日期:2019 年 4 月

修正的問題:

  • 憑證備份和還原的錯誤修正
  • 將事件追蹤資訊寫入至記錄檔。

版本 1.0.75.0

發行日期:2018 年 8 月

修正的問題:

  • 更新 -BackupDKM 交換器的 Backup-ADFS cmdlet。 此工具會判斷目前內容是否具有 DKM 容器的存取權。 當存取可供使用時,此工具不需要網域管理員權限或服務帳戶認證。 此更新可讓非使用者明確提供認證或以網域系統管理員帳戶身分執行作業的自動備份。

版本 1.0.73.0

發行日期:2018 年 8 月

修正的問題:

  • 更新加密演算法,以確保應用程式符合 FIPS 規範

    重要

    由於 FIPS 合規性加密演算法的變更,舊版備份將無法使用此工具的最新版本。

  • 新增使用合併式複寫的 SQL 叢集支援

版本 1.0.72.0

發行日期:2018 年 7 月

修正的問題:

  • 錯誤修正:修正 .MSI 安裝程式以支援就地升級

版本 1.0.18.0

發行日期:2018 年 7 月

修正的問題:

  • 偵錯修正:使用特殊字元 (即 '&') 處理服務帳戶密碼
  • 錯誤修正:解決與還原失敗相關的問題,因為 Microsoft.IdentityServer.Servicehost.exe.config 正由另一個處理使用

版本 1.0.0.0

發行日期:2016 年 10 月

AD FS 快速還原工具的初始版本