共用方式為


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,反之亦然。

Note

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

備份內容

快速還原工具會備份下列 AD FS 組態:

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

Note

私鑰必須可匯出。 執行文本的用戶必須具有存取金鑰的許可權。

備份加密

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

建立為備份一部分的每個文件都會使用 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 工具匯出Microsoft Entra ldifde 容器及其所有子樹。

  • 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。

Important

使用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。 請注意傳遞至 WID 參數的 -DBConnectionString 值。

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

還原至 SQL 資料庫

下列 Cmdlet 會將 AD FS 組態還原至 SQL。 請注意傳遞至Data Source參數的Integrated Security-DBConnectionString值。

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 找到記錄檔。

Note

當您進行還原時,可能會建立 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 月

已修正的問題:

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

版本 1.0.81.0

發行日期:2019年4月

已修正的問題:

  • 憑證備份和還原的錯誤修正
  • 將更多追蹤資訊新增至記錄檔

版本 1.0.75.0

發行日期:2018 年 8 月

已修正的問題:

  • 更新 Backup-ADFS Cmdlet 以用於 -BackupDKM 開關。 此工具會判斷目前環境是否能夠存取 DKM 容器。 當存取可供使用時,此工具不需要網域管理員許可權或服務帳戶認證。 此更新啟用了自動備份,無需用戶明確提供認證或以網域系統管理員帳戶身分執行作業。

版本 1.0.73.0

發行日期:2018 年 8 月

已修正的問題:

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

    Important

    由於 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 快速還原工具的初始版本