ADFS Rapid Restore ツールでADFSサーバーのバックアップ

皆さんこんにちは。国井です。

ADFSはSAML2.0に対応したWindows Server 2008のバージョン以降、利用する企業が随分と増えました。そうすると今度はADFSサーバーの運用をどうするか?という話が出てきます。色々と決めるべき事柄があると思いますが、中でも重要なのはバックアップではないかと思います。ベアメタルでバックアップしてしまえばよい、という考え方もあるでしょうが、一方でADFSに関わるコンテンツだけを独立してバックアップしておきたいというニーズもあるでしょう。
そんなときにおすすめなのが、ADFS Rapid Restoreツール。

Windows Server 2016と2012 R2のバージョンのADFSに対応する、このツールはPowerShellのコマンドレットを1つ実行するだけでバックアップ/復元ができてしまう優れもの。とっても簡単なので、わざわざ紹介するまでもないのですが、意外とハマリポイントもあるので、動きを見てみましょう。

インストール

マイクロソフトのWebサイトからダウンロードして、インストールするだけ。
ウィザード自体もNextボタンを連打していれば、インストール完了です。

バックアップの実行

PowerShellから実行するのですが、最初にモジュールをロードするコマンドレットを実行し、

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

その後、以下のコマンドレットでバックアップを実行します。

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

このコマンドレットでは、C:\testExportフォルダーにADFSサーバーのコンテンツをまとめてバックアップしてくれって命令を出しています。(フォルダーは事前に作っておいてください)
ちなみにマイクロソフトのWebサイトによれば、以下のコンテンツがバックアップされるそうです。

・ADFS構成データベース (WIDまたはSQL Serverに保存されているものです)
・ADFSサーバーのフォルダーに保存されている構成ファイル
・トークン署名証明書とその秘密キー
・SSL証明書とその秘密キー
・カスタマイズされた属性ストアなどのカスタム認証プロバイダー

バックアップでは、トークン署名証明書をバックアップしないなど、オプションを指定できます。バックアップのオプションに関しては、公式サイトでご確認ください。
(公式サイトの中でDKMという言葉が出てきますが、トークン署名証明書のことだとおもっていただければ、よいでしょう。もうちょっと細かく言うと、DKM=Distributed Key ManagerはADFSサーバーのトークン署名証明書などの証明書が格納されるActive Directoryのコンテナーのことです)

バックアップデータは、指定したフォルダー内に日付を付けたフォルダーが作成され、その中に保存されます。保存されるデータはこんな感じ。

バックアップデータはAES256で暗号化されているので、ファイルを開いても、何も面白いことは書いてありません。

リストア

これまた簡単で、Import-Moduleでモジュールをロードしてからリストアのコマンドレットを実行するだけ。

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

指定したフォルダーに格納されているファイルを読み取って、自動的にリストアしてくれます。ただし、リストア後のADFSサービスの起動は行ってくれません。これは、リストア後に手動で行う作業ができるようにするためです。これは気を付けたいポイントですね。
あと、リストアもオプションが色々ありますが、公式サイトで確認してください。

実際に実行してみた

私の環境では、こんな感じで実行してみました。

おいおい、よく見たらバックアップ失敗してるじゃないですか!
SSL証明書エクスポートできないって、オレ、Administratorだよ!
同じ境遇にある人はそう思うのではないかと思います。
しかし、SSL証明書ってインポートするときに、エクスポート不可能な状態でインポートしてしまうと、いくらAdministratorであろうとバックアップ時にエクスポートできなくなってしまうのです。(以下は手動でエクスポートしようとしたときの画面)

エクスポート不可能な状態で証明書をインポートしてしまったら最後、秘密キーへのフルコントロールアクセス許可があろうと、エクスポートはできなくなってしまいますので、その場合には、SSL証明書のリストアだけは手動で行う必要が出てきます。

あと、言い忘れたことなど

・ログは%localappdata%\ADFSRapidRecreationToolフォルダーから確認できます。
・2012 R2のバックアップデータを2016に復元できないので、アップグレードには使えません。
・リストア時のオプションを使えば、異なるサーバーへの復元や使用するデータベースの変更(WID→SQL、SQL→WID)ができます。

色々なシナリオを考えてみると、色々なオプションを使うことになるのでしょうが、
それについては、また別の機会に触れてみたいと思います。