【図解】ドメインコントローラの種類とは?RODC(読み取り専用DC)とPRPのしくみを初心者向けに解説

Active Directoryのドメインコントローラ(DC)は、どれも同じ役割をしているように見えますが、実は種類があります。ふつうの「書き込み可能なDC」と、小さな拠点向けの「読み取り専用DC(RODC)」です。さらに、DCの上には、グローバルカタログや操作マスターといった役割を持たせることができます。この記事では、DCの種類と役割の違いを整理し、RODCのしくみと、RODCが向いている場所を説明します。

この記事でわかること
  1. 書き込み可能なDC(RWDC)と読み取り専用DC(RODC)の違い
  2. グローバルカタログと操作マスター(FSMO)という、DCが持つ役割
  3. RODCがパスワードを持つ・持たないを決めるしくみ(PRP)と、盗まれたときに被害を小さくする工夫

DCの2つの種類

DCには、書き込み可能なDC(RWDC)と、読み取り専用DC(RODC)の2種類があります。ふだん「DC」と呼んでいるのは、ほとんどが書き込み可能なDCです。RODCは Windows Server 2008 で追加された種類で、サーバ室がなかったり、管理者がいなかったりする小さな拠点に置くことを想定しています。

この記事では、東京本社のデータセンターに書き込み可能なDCの DC01 と DC02 を置き、WANでつながった大阪営業所に RODC01 を置く構成で説明します。どれも同じドメイン(corp.example.com)のDCです。

書き込み可能なDC(RWDC)DC01・DC02東京本社のデータセンター読み取り専用DC(RODC)RODC01大阪営業所のような小さな拠点ADの変更受け付ける受け付けない(RWDC に回す)持っているパスワード全員分許可した人の分だけ複製の向きほかの DC と双方向RWDC から受け取るだけ操作マスターなれるなれないサーバの管理Domain Admins などRODC だけの管理者を任せられる
図1 書き込み可能なDC(RWDC)と読み取り専用DC(RODC)の違い

書き込み可能なDC(RWDC)

書き込み可能なDCは、ADの変更を受け付けて、ほかのDCと双方向に複製します。どのDCでユーザーを作っても、パスワードを変えても、その変更はほかのDCに広がります。ドメインのすべてのアカウントのパスワード(から作った鍵)を持っているので、だれのサインインでも自分で確かめられます。

読み取り専用DC(RODC)

RODCは、ADのデータを持っていますが、変更は受け付けません。変更が必要なときはRWDCに回し、RWDCで変わった内容を複製で受け取ります。複製は、RWDCからRODCへの一方向だけです。そして、アカウントのパスワードは、許可した人の分しか持ちません。

この「変更できない」「パスワードを少ししか持たない」という2つの性質が、RODCを置く理由です。小さな拠点のサーバは、盗まれたり、だれかに勝手に操作されたりするおそれが高くなります。RODCなら、盗まれても全員のパスワードが漏れることはなく、RODCでADを書き換えて、ほかのDCに広げることもできません。

DCが持つ役割

RWDCかRODCかという種類とは別に、DCには追加の役割を持たせられます。代表的なのが、グローバルカタログと操作マスターです。

どの DC にも追加で持たせられる役割グローバルカタログGCフォレスト内のすべてのオブジェクトを、よく使う属性に絞って持つユニバーサルグループのメンバーを調べるのにも使う。RODC にも持たせられる1台の DC だけが持つ役割(操作マスター、FSMO)。RODC は持てないフォレストに1つスキーマ マスタースキーマの変更ドメイン名前付け マスタードメインの追加・削除ドメインごとに1つPDC エミュレータパスワード変更・ロックアウト・時刻の基準RID マスターSID の末尾番号の配布インフラストラクチャ マスター他ドメインのオブジェクトへの参照
図2 グローバルカタログと操作マスター
役割内容
グローバルカタログ(GC)フォレスト内のすべてのドメインのオブジェクトを、よく使う属性に絞って持つ。ドメインが複数あるときは、サインインのときにユニバーサルグループを調べるのにも使う。何台のDCに持たせてもよく、RODCにも持たせられる
操作マスター(FSMO)スキーマの変更のように、1台のDCが代表してやるべき作業を受け持つ役割。全部で5つあり、それぞれ1台のDCだけが持つ。書き込みが必要なので、RODCは持てない

5つの操作マスターのうち、スキーマ マスターとドメイン名前付け マスターはフォレストに1つずつ、PDC エミュレータ、RID マスター、インフラストラクチャ マスターはドメインごとに1つずつあります。最初に作ったDCが、自動ですべてを持ちます。

なかでもよく名前が出てくるのが PDC エミュレータです。パスワードの変更は PDC エミュレータに優先して複製され、ほかのDCで「パスワードが違う」となったときは、PDC エミュレータに確かめ直します。アカウントのロックアウトもここで扱います。フォレストルートの PDC エミュレータは、フォレスト全体の時刻の基準にもなります。特権グループの記事で出てきた SDProp も、PDC エミュレータで動いています。グローバルカタログについては「グループの種類とスコープ」の記事で詳しく説明しています。

RODCが向いている場所

RODCは、次のような拠点に置くことを想定しています。

東京本社のデータセンターDC01RWDCDC02RWDC双方向すべてのアカウントのパスワードを持つ鍵のかかった部屋・管理者がいる大阪営業所RODC01RODC営業所の PC許可した人のパスワードだけを持つサーバ室がない・管理者がいないWAN複製(受け取るだけ)変更は RWDC に回すWAN が切れても、パスワードを持っている人は RODC01 でサインインできる
図3 東京本社のRWDCと、大阪営業所のRODC
  • ユーザーの数が少ない
  • サーバ室がなく、サーバが盗まれたり触られたりするおそれがある
  • 東京本社とのWANが細い、または切れることがある
  • ITに詳しい人がいない

DCが東京本社にしかないと、営業所のPCはサインインのたびにWAN越しに東京本社のDCへ問い合わせます。WANが切れると、サインインもできなくなります。かといって、営業所にふつうのDCを置くと、そのサーバが盗まれたときに全員のパスワードが漏れてしまいます。RODCは、この2つの間を取るためのDCです。

「変更は RWDC に回す」とは

RODC01 は、ADの中身を書き換えられません。大阪営業所でADの書き換えが必要な操作をすると、その書き換えは、WANの向こうにある東京本社の RWDC で行われます。これが図3の「変更は RWDC に回す」の意味です。大阪営業所でふだん起きる操作のうち、書き換えが必要になるのは次のような場面です。

大阪営業所(RODC01)で起きること書き換える場所:東京本社の DC01user10 がパスワードを変えるパスワードの期限が来たときuser10 のパスワードを書き換える担当者がユーザーを作る入社・異動のときユーザーとグループを書き換えるPC が自分のパスワードを変える既定で30日ごとコンピュータアカウントを書き換えるPC が IP アドレスを DNS に登録起動したとき・IP が変わったときDNS のレコードを書き換えるWAN書き換えた内容は、次の複製で RODC01 に届く(すぐではない)WAN が切れているあいだは、どれも東京本社に届かないので失敗する(サインインはできる)
図4 大阪営業所の操作と、書き換える場所
操作いつ起きるか書き換えるところ
パスワードの変更user10 のパスワードの期限が来たときや、自分で変えたとき東京本社の RWDC
ユーザーの作成入社や異動で、担当者がユーザーを作ったりグループのメンバーを変えたりしたとき東京本社の RWDC
PC のパスワードPC がコンピュータアカウントのパスワードを変えるとき(既定で30日ごとに自動)東京本社の RWDC
DNS への登録PC を起動したときや IP アドレスが変わったときに、PC が自分の名前と IP アドレスを DNS に登録し直すとき東京本社の、書き込みできる DNS サーバ

RODC01 は、こうした要求を受けても自分では書き換えません。要求を東京本社の RWDC へ中継する場合と、「書き込みは東京本社の DC へ」と行き先を教えて、PC や管理ツールが自分で送り直す場合があり、どちらになるかは操作によって変わります。どちらの場合も、実際に書き換えるのは東京本社の RWDC です。書き換えた内容は、ふつうの複製で、あとから RODC01 に届きます。つまり変更は、大阪から東京本社へ行って、東京本社から大阪へ戻ってきます。

運用で気を付けること
  • WAN が切れているあいだは、上の表の操作は東京本社に届かないので失敗します。サインインは、パスワードが RODC01 に置かれている人ならできます。
  • user10 がパスワードを変えた直後は、RODC01 にはまだ古いパスワードしかありません。次の複製で新しいパスワードが届くまで、RODC01 は東京本社の DC に問い合わせて確かめます。

RODC が盗まれても、そこから AD を書き換えて会社全体に広げられないのは、この「RODC では書き換えない」というしくみがあるからです。

営業所でWANが切れてもサインインできるようにするには、RODCにDNSサーバとグローバルカタログも持たせておきます。インストールのときは、どちらも既定で有効になっています。

RODCだけの管理者を任せられる

RODCでは、特定のユーザーやグループを「このRODCの管理者」として指定できます。指定された人は、そのRODCのローカルの Administrators と同じ権限で、更新プログラムの適用などの作業ができますが、Domain Admins や、ドメインの Administrators のメンバーにはなりません。営業所の担当者に、ドメイン全体の管理者権限を渡さずに、サーバの面倒を見てもらえます。

パスワードレプリケーションポリシー(PRP)

RODCが「だれのパスワードを持ってよいか」を決めるのが、パスワードレプリケーションポリシー(PRP)です。PRPには、許可リストと拒否リストがあります。

許可リスト(Allow)パスワードを RODC に置いてよい・Allowed RODC Password Replication Group(既定は空)・GG-大阪営業所(自分で追加)拒否リスト(Deny)パスワードを RODC に置かない・Denied RODC Password Replication Group (Domain Admins、Enterprise Admins など)・Administrators、各種 Operators両方に入っていたら拒否が勝つ。どちらにも入っていない人も置かないuser10(大阪営業所)GG-大阪営業所 のメンバーRODC に置けるadmin01(Domain Admins)拒否リストにも入っている置かない(拒否が勝つ)user01(東京本社)どちらにも入っていない置かない(毎回 RWDC へ)
図5 パスワードレプリケーションポリシー(PRP)
リスト既定で入っているもの
許可リストAllowed RODC Password Replication Group。このグループは最初は空なので、RODCを置いただけでは、だれのパスワードも置かれない
拒否リストDenied RODC Password Replication Group、Administrators、Server Operators、Backup Operators、Account Operators。Denied RODC Password Replication Group には、Domain Admins、Enterprise Admins、Schema Admins、Group Policy Creator Owners、Cert Publishers、DCのグループ、krbtgt などが入っている

判定のルールは3つです。

  • 許可リストに入っている人のパスワードは、RODCに置いてよい
  • 拒否リストに入っている人のパスワードは、許可リストに入っていても置かない(拒否が勝つ)
  • どちらにも入っていない人のパスワードも置かない

大阪営業所の RODC01 なら、営業所の人をまとめたグループ(図5の GG-大阪営業所)を許可リストに足します。特権グループのメンバーは拒否リストに入っているので、たとえ大阪営業所にいても、パスワードがRODCに置かれることはありません。特権グループについては「特権グループの基本」の記事で説明しています。Microsoft は、Denied RODC Password Replication Group から既定のメンバーを外さないよう勧めています。

RODCでのサインインの流れ

許可リストに入っていても、RODCがすぐにパスワードを持つわけではありません。最初のサインインのときに、RWDCから受け取ります。

① 初めてのサインイン(RODC はまだパスワードを持っていない)② 2回目以降のサインインPC(大阪)user10RODC01大阪営業所DC01東京本社の RWDCサインイン(user10)代わりに確かめてWAN 越しに転送OK(TGT)TGTuser10 のパスワードをくださいPRP で許可されているか確認許可リストに入っているので、RODC01 にパスワードが複製されるサインイン(user10)RODC01 が自分で確かめる。WAN が切れていてもよい
図6 RODCでのサインインの流れ
タイミングRODCの動き
初めてのサインインパスワードを持っていないので、WAN越しにRWDCへ認証を回す。成功したら、PRPを見て、許可されていればRWDCからパスワードを受け取って覚える
2回目以降覚えたパスワードを使って、RODCが自分で確かめる。WANが切れていてもサインインできる
許可されていない人パスワードを覚えないので、毎回RWDCへ回す。WANが切れていると、サインインできない

WANが切れたときに備えて、あらかじめパスワードをRODCに入れておく(事前に複製する)こともできます。新しく営業所を開くときなどに使います。

盗まれたときに被害を小さくする工夫

RODCには、盗まれたときの被害を、そのRODCの中だけに閉じ込める工夫があります。

RODC専用の krbtgt

まず、krbtgt とは何かを確かめておきます。krbtgt は、ドメインを作ったときに自動でできるアカウントで、DC の中で Kerberos のチケットを発行する KDC が使います。人がサインインに使うことはなく、無効になっていて、削除も名前の変更もできません。パスワードは自動で長く強いものが設定されていて、そのパスワードから作った鍵を DC だけが持っています。この鍵で守っているのが、TGT(チケットをもらうためのチケット)です。

DC(KDC)krbtgt の鍵krbtgt のパスワードから作るDC だけが持つPC01user01krbtgt の鍵は持っていないTGT の中身を読めない・書き換えられない① サインインしたとき:DC が TGT を作って渡すTGT(user01 用)user01 の名前と SIDグループ(PAC)セッションキー・有効期限krbtgt の鍵で暗号化② サービスチケットを頼むとき:TGT をそのまま DC に見せるDC は krbtgt の鍵で開けて中身を確かめる開けられた → 自分が作った本物 → 中身を信用する鍵を持つのは DC だけなので、PC や攻撃者は TGT を作れない・書き換えられない。逆に krbtgt の鍵が盗まれると、だれの TGT でも、どのグループ入りでも作れてしまう
図7 krbtgt の鍵で TGT を守るしくみ
タイミングkrbtgt の鍵の使われ方
① サインインしたときDC が user01 の TGT を作り、krbtgt の鍵で暗号化して PC に渡す。TGT には、user01 がだれか、どのグループに入っているか(PAC)、有効期限、PC と DC が使うセッションキーが入っている。PC はこの鍵を持っていないので、TGT の中身を読むことも書き換えることもできない
② サービスチケットを頼むときFS01 などのチケットを頼むとき、PC は TGT をそのまま DC に見せる。DC は krbtgt の鍵で TGT を開け、開けられれば「自分たちが作った本物の TGT だ」と分かるので、中身を信用してサービスチケットを発行する

つまり krbtgt の鍵は、「この TGT は DC が作った本物で、中身は書き換えられていない」ことを保証する鍵です。おかげで DC は、サービスチケットを頼まれるたびに user01 のパスワードを確かめ直さなくて済みます。同じドメインの書き込み可能なDCは、どれも同じ krbtgt の鍵を持っているので、DC01 が作った TGT を DC02 に見せても通用します。

逆にこの鍵が盗まれると、攻撃者は、好きなユーザーの TGT を、好きなグループを入れた状態で自分で作れてしまいます。こうして偽造された TGT は「ゴールデンチケット」と呼ばれ、ドメイン全体を乗っ取られたのと同じ状態になります。Kerberos のチケットの流れは「Kerberos認証とは?」の記事で説明しています。

そこでRODCは、ドメインの krbtgt ではなく、RODCごとに作られる専用の krbtgt_番号 というアカウントの鍵を使ってTGTを作ります。

RWDC(DC01・DC02)ドメインの krbtgt の鍵で TGT を作るどの RWDC でも使える TGTRODC01自分専用の krbtgt_12345 の鍵でTGT を作るRODC01 が作った TGT(krbtgt_12345 の鍵で守られる)RODC01 が盗まれても、漏れるのは krbtgt_12345 の鍵だけ。ドメインの krbtgt は拒否リストに入っていてRODC に置かれないので、ドメイン全体のチケットを守る鍵は漏れない
図8 RODC専用の krbtgt アカウント

ドメインの krbtgt は拒否リストに入っているので、RODCに置かれることはありません。RODCが盗まれても、漏れるのはそのRODC専用の鍵だけです。krbtgt_番号 のアカウントはRODCを追加・削除するときにWindowsが自動で管理するので、手で消してはいけません。

盗まれたときの対応

RODCが盗まれたり、乗っ取られたりしたときは、そのRODCに置かれていたパスワードが漏れたものとして扱います。どのアカウントのパスワードが置かれていたかは、RWDC側で確かめられます(後述のコマンドの RevealedAccounts)。ADからそのRODCのアカウントを削除し、パスワードが置かれていたアカウントのパスワードをリセットします。

Microsoft Entra Kerberos も RODC のしくみを使っている

Windows Hello for Business のクラウド Kerberos 信頼や、FIDO2 セキュリティキーでオンプレミスのリソースにアクセスするときに使う Microsoft Entra Kerberos は、ADの中に AzureADKerberos というRODCのオブジェクトと、専用の krbtgt_AzureAD アカウントを作ります。実際のサーバはなく、Entra ID がこのRODCの鍵で部分TGTを作ります。そのため、PRPもRODCと同じように効き、特権グループのメンバーはこのしくみでオンプレミスのリソースにアクセスできません。詳しくは「Microsoft Entra Kerberos」の記事で説明しています。

確認に使うコマンド

管理用PC(PowerShell):ドメインのDCを、RODCかどうかとGCかどうか付きで一覧にする

Get-ADDomainController -Filter * | Select-Object Name, Site, IsReadOnly, IsGlobalCatalog

管理用PC(コマンドプロンプト):操作マスターを持っているDCを表示する

netdom query fsmo

管理用PC(PowerShell):RODCの許可リストと拒否リストを表示する

Get-ADDomainControllerPasswordReplicationPolicy -Identity RODC01 -Allowed
Get-ADDomainControllerPasswordReplicationPolicy -Identity RODC01 -Denied

管理用PC(PowerShell):RODCの許可リストにグループを足す

Add-ADDomainControllerPasswordReplicationPolicy -Identity RODC01 -AllowedList "GG-大阪営業所"

管理用PC(PowerShell):RODCにパスワードが置かれているアカウントを表示する

Get-ADDomainControllerPasswordReplicationPolicyUsage -Identity RODC01 -RevealedAccounts | Select-Object Name

管理用PC(PowerShell):RODCで認証されたことがあるアカウントを表示する

Get-ADDomainControllerPasswordReplicationPolicyUsage -Identity RODC01 -AuthenticatedAccounts | Select-Object Name

管理用PC(PowerShell):RODC専用の krbtgt アカウントを表示する

Get-ADUser -Filter 'Name -like "krbtgt_*"' | Select-Object Name

PRPを変えるコマンドは、RODCではなく、書き込み可能なDCに対して実行されます。

まとめ

項目ひとことで
書き込み可能なDCADの変更を受け付け、全員のパスワードを持つ。ふだん「DC」と呼んでいるもの
RODC変更は受け付けず、許可した人のパスワードだけを持つ。小さな拠点向け
グローバルカタログフォレスト全体のオブジェクトを持つ役割。RODCにも持たせられる
操作マスター1台のDCだけが持つ5つの役割。RODCは持てない
PRPRODCに置いてよいパスワードを決めるルール。拒否が勝ち、特権グループは既定で拒否
RODC専用の krbtgtRODCごとに別の鍵でTGTを作るので、盗まれても被害がそのRODCに閉じる

RODCは、「拠点でもサインインできるようにしたい」と「拠点のサーバが盗まれても困らないようにしたい」の両方をかなえるためのDCです。置くときは、許可リストに入れる人をその拠点の人だけに絞り、拒否リストは既定のまま使うのが基本です。

コメント