Active Directory(以下、ADと記載)のバックアップ・リストアについて整理してみました。
基本概念
復元対象の種類
ADデータベースとSYSVOLはレプリケーションの方式が異なるため、リストアを別々に考える必要がある。
- ADデータベース
→ ユーザやコンピュータオブジェクト、DNSレコード等を持っているデータベース。 - SYSVOL
→ グループポリシーやログオン/ログオフスクリプトが置かれているフォルダ。DFSの仕組みでレプリケーションされている
リストア方式
権限のある復元 (Authoritative Restore) と権限のない復元 (Non-Authoritative Restore) という考え方がある。
- 権限のある復元=自分のデータが正であるとする
- 権限のない復元=他のADサーバが持っているデータを正とする
権限のある/なしの復元がADデータベースとSYSVOLそれぞれである。
ADデータベースの権限のない復元
他のADサーバは正常に動作していて、特定のADサーバを復旧したいようなケースで利用。ただし、AD全台をリストアする時にも利用する。
ADデータベースの権限のない復元をすると、他のADサーバからADデータベースの最新状態をレプリケーションしてくる動作となる。
ADデータベースの権限のある復元
特定のOUやオブジェクトを対象にリストアしたい時に利用する。AD全体をリストアするケースでは使わない。
ADデータベースの権限のある復元では、復元したい対象を指定するとその対象のバージョン番号に非常に大きな値が加算されてリストアされる。そうするとリストアしたオブジェクトのほうが最新であるとみなされて、他のADサーバにもレプリケーションされる仕組み。
間違えてオブジェクト削除してしまった際の復元にも利用できるが、誤削除対策はADのごみ箱機能を使う方が簡単。
Active Directory のごみ箱を有効にして使用する
SYSVOLの権限のない復元
他のADサーバは正常に動作していて、特定のADサーバを復旧したいようなケースで利用。一旦自分の持っている情報をすべて破棄して他のADサーバからデータをコピーしてくるような動きをする。
SYSVOLの権限のある復元
基本的にはAD全台をリストアする時に利用する。自分の持っているSYSVOLフォルダを正として複製を開始するが、他のADサーバではSYSVOLの権限のない復元を実施する必要がある。
USNロールバック
ADはオブジェクトを更新するたびにUSNという数値を増やしていく。このUSNの数値を見てレプリケーションを行うか判断している。各ADサーバはどこまでレプリケーションしたかの情報を持っている。加えて、Invocation IDという値も見ている。
ADに非対応のバックアップを使ってリストアするとUSNが古い状態になり、各ADは異常状態であると判断しリストアしたADサーバとのレプリケーションを停止する。
ADに対応しているバックアップを使ってリストアした場合もUSNは古い状態となるが、Invocation IDが更新されるため、各ADサーバは対象ADがリストアされたことを検知してレプリケーションを行う。
ADに非対応のバックアップツールを使って適当にリストアするとADが壊れる、というのはこのような仕組みがあるため。Windows Server BackupやAzure BackupはAD対応のバックアップソリューションである。サードパーティ製品を使う場合はAD対応となっているか要確認。
VM-Generation ID
昔は仮想化環境でスナップショットを使ってADを戻すとADが壊れるといわれていたが、Windows Server 2012以降でVM-Generation IDという概念が追加されてスナップショットからも戻すことが可能となった。ただし、ハイパーバイザー側も対応している必要あり。Hyper-V、VMware ESXi、Nutanix AHVなどが対応(古いバージョンだと非対応なので注意)
VM-Generation IDに対応している場合、スナップショットから戻すとAD側がスナップショットから戻されたことを検知して他のADサーバからレプリケーションを待つ状態になる。レプリケーションが完了するとADとして復活する。権限のない復元をした状態と近しい。
※ AD全台をスナップショットから戻すとお見合い状態になりADが上がってこない状態になる。DFSR の Authoritative Restoreをすれば治りそうな気がするが、正しいか未確認。
バックアップデータの期限
古いバックアップデータからリストアするとADが正常に動作しなくなる。意識しないといけない数値は以下の4つである。
- コンピューター アカウント パスワードの有効期間
- MaxOfflineTimeInDays
- Tombstone Lifetime
- deletedObjectLifetime(ADのごみ箱機能有効化時)
参考:【AD DS】ドメイン コントローラーのバックアップ、リストアの基礎知識 の 「補足:バックアップの有効期間」
Windows Server Backupを利用するパターン
Windows Serverの標準機能であるWindows Server Backupを使ってバックアップ、リストアを行う。
バックアップ
- Windows Server Backupで「システム状態」のバックアップは必須で取得する。サーバー破損も想定して「ベアメタル回復」も取得しておいた方が良い。
- ADのデータベースだけバックアップを取る、といった機能はない。
- ローカルにバックアップを取得する場合は世代管理が可能。ただし、保管世代数指定はできないので別途古いバックアップを消すタスクを作る必要がある。
- ローカルだけに保管しておくとバックアップデータも破損する可能性があるのでリモートに保管することが望ましいが、リモートに保管する場合は標準機能で世代管理ができない。常に上書きになってしまう。
リストア
単体のADサーバリストア
特定のADサーバだけリストアして他のADサーバから同期すればよいのであればSYSVOLの権限のない復元をすればよい。
手順は復元手順 (一部のドメイン コントローラーを復元する場合) を参照。
全てのADサーバリストア
ADサーバすべてをリストアする必要がある場合、1台目はSYSVOLの権限のある復元をおこなう。SYSVOLの権限のある復元はwbadmin start systemstaterecovery実行時に「-authsysvol」オプションを追加する。
手順は 復元手順 (すべてのドメイン コントローラーを復元する場合) を参照。
なお、復元未実施のサーバと復元済みのサーバ間で通信しないように気を付ける必要がある。通信してしまうと復元未実施のADの情報が同期されてしまう。
ADサーバのベアメタルリストア
特定のADサーバだけリストアして他のADサーバから同期すればよいのであれば、ベアメタル回復からリストアすればOK
全台リストアするパターンだと流れは以下のようになる。
- 1 台目をベアメタル回復からリストアする。
- 1 台目のシステム状態のリストア (authsysvol オプション付き)を実施する。
→これがSYSVOLの権限のあるリストア - 2 台目以降をベアメタル回復からリストアする。
詳細な手順は ベアメタル回復によるリストア手順 を参照。
特定のオブジェクトをリストア
Active Directory全体ではなく、特定のOU配下やオブジェクトを復旧したい場合はADデータベースの権限のあるリストアを行う。
手順は Active Directory の権限のある復元手順 を参照。
Azure Backupを利用するパターン
Azure上のドメインコントローラの場合、Azure Backupでもバックアップ・リストア可能。
バックアップ
通常のAzure VM同様、普通にバックアップを取得すればOK。
リストア
単体のADサーバリストア
通常のAzure VMをリストアする手順と同様でOK。
リストア後、他のADサーバと自動的に同期される。
全てのADサーバリストア
Windows Server Backupと異なり、リストア時にSYSVOLの権限のある復元とできないため、Azure Backupで1台目をリストアした後、DFSRのAuthoritative Restoreが必要となる。
DFSR の Authoritative Restore(こちら より引用)
- 対象のドメイン コントローラーに、管理者権限を持つユーザーでログオンします。
- [ファイル名を指定して実行] から dsa.msc を実行します。
- [表示] メニューの [コンテナーとしてのユーザー、連絡先、グループ、コンピューター] および [拡張機能] をオンにします。
- 左ペインのツリーを [Active Directory ユーザーとコンピューター] - [<ドメイン名>] - [Domain Controllers] – [<リストアを実施したドメイン コントローラー>] - [DFSR-LocalSettings] - [Domain System Volume] の順に展開します。
- 右ペインの [SYSVOL Subscriptions] を右クリックし、[プロパティ] をクリックします。
- [属性エディター] タブの [属性] 列が [msDFSR-Options] となっている行をダブルクリックします。
- [値] に 1 と入力し、[OK] をクリックします。
- [OK] をクリックします。
- [管理者として実行] からコマンド プロンプトを起動します。
- 下記のコマンドを実行し、DFS Replication サービスを再起動します。
net stop dfsr && net start dfsr
2台目以降はAzure BackupからのリストアのみでOK。
なお、復元前のADサーバと通信しないように注意が必要。
特定のオブジェクトをリストア
Azure BackupでADデータベースの権限のあるリストアが可能かどうかは未確認。
再昇格での復旧
特定のADサーバでADの機能がおかしくなってしまった場合、ドメインコントローラの再昇格による復旧も可能。
強制降格 → メタデータの削除 → 再昇格 といった流れで実施
参考にしたサイト
Microsoftブログ
ドメイン コントローラーのバックアップとリストアについて
ドメイン コントローラーをベアメタル回復でバックアップ リストアする方法
Windows Server バックアップによるベアメタル リストア手順
Active Directory の権限のある復元について
Windows Server バックアップによるバックアップ手順
ねこまるの AD フリーク
【AD DS】ドメイン コントローラーのバックアップ、リストアの基礎知識
【AD DS】USN ロールバックとは?原因や対処策について解説!
【AD DS】ドメイン コントローラーのリストア手順【画面キャプチャ付】
【AD DS】AD データベースの複製の詳細な仕組みについて
【AD DS】ドメイン コントローラーの再昇格手順