一方向フォレスト トラストで相手ドメインにログオンできる?ユーザー管理(委任)まで徹底解説|Active Directory

別フォレスト同士を一方向フォレスト トラストでつなぐと、「相手にログオンできるのか」「相手のユーザー管理までできるのか」で混乱しがちです。本記事では信頼方向の考え方、ログオン可否の条件、管理を実現するための委任手順と安全な設計ポイントをまとめます。

目次

前提:この記事での Domain A / Domain B の位置づけ

状況を整理するため、この記事では次のように呼び分けます。

  • Domain A(アカウント側):ユーザーが所属するフォレスト/ドメイン(ユーザーIDを持つ側)
  • Domain B(リソース側):端末・サーバー・ファイル共有などのリソースがあるフォレスト/ドメイン(アクセス先)

要件は「A のユーザーは B にアクセスできるが、B のユーザーは A にアクセスさせない」です。

結論:一方向フォレスト トラストでできること/できないこと

まず結論を、誤解が起きやすいポイントも含めて表で整理します。

やりたいこと一方向フォレスト トラストだけで可能?ポイント
Domain A のユーザーが Domain B の端末にログオン(対話ログオン)可能(条件付き)信頼方向が正しいこと+B側でログオン権限/ポリシーに阻まれないことが条件
Domain A のユーザーが Domain B の共有フォルダ/サーバーへアクセス可能(権限設計次第)トラストは“認証の経路”であり、ACL(アクセス許可)付与は別途必要
Domain B → Domain A へのログオン/アクセスを禁止可能一方向にしておけば、B側ユーザーはA側で認証できない(ただしネットワーク到達性は別問題)
Domain A 側から Domain B のユーザー作成/変更/削除(管理)既定では不可管理は権限(委任)が必要。B側で明示的に権限付与すれば可能
Domain A のユーザーが「Domain B のユーザーとして」成り代わってログオン不可当然ながらDomain B の資格情報(ID/パスワード等)が必要

最重要:信頼方向を取り違えると“逆”になる

一方向トラストは、言葉の取り違いで設計が反転しやすいです。覚え方はシンプルで、「X が Y を信頼する」=「Y のユーザーが X のリソースに来られる」です。

A のユーザーを B に通したいなら、

Domain B が Domain A を信頼する(B trusts A)

という形にします。これにより、A のユーザーは B 側のサーバーや端末、共有などにアクセス可能になります。一方で、逆(A trusts B)にしてしまうと、B のユーザーが A のリソースへ行ける形になり、要件と逆になります。

信頼の表現アクセスできるのは誰?どこへ?
B が A を信頼する(B trusts A)A のユーザーB のリソース(端末/共有/サーバー等)
A が B を信頼する(A trusts B)B のユーザーA のリソース

Domain A ユーザーは Domain B にログオンできる?「可能(条件付き)」の中身

一方向フォレスト トラストが正しい向き(B trusts A)で張られていれば、Domain A のユーザーは Domain B 配下の端末・サーバーへ、A のアカウントのままログオンできる可能性があります。ただし、実際には次の“条件”が揃っている必要があります。

ログオンとアクセスの違いを分けて考える

「ログオンできるか?」は状況で意味が変わります。ここを分けるとトラブルシュートが一気に楽になります。

対象例主な判定要素
対話ログオン(端末に入る)Domain B 参加 PC に A\user でサインイン信頼+ログオン権限(ローカル/リモート)+ポリシー制限
ネットワークアクセス(リソース利用)\\fileserverB\share に A\user でアクセス信頼+共有/NTFS の許可(ACL)+必要ならKerberos/NTLMの成立
管理ログオン/昇格RDPで管理用に入る、管理ツールを実行する信頼だけでは不足。管理権限の付与が必要

ログオン可否を左右するチェックリスト

「トラストは張ったのにログオンできない」場合、原因はトラスト自体ではなく周辺条件であることが多いです。現場で効くチェック項目をまとめます。

チェック項目確認ポイントつまずきやすい例
信頼方向B trusts A になっているか向きを逆にしており、B→A が通ってしまう
名前解決(DNS)双方のDCやクライアントが相手フォレストの名前を引けるか条件付きフォワーダ/スタブ ゾーン未設定で相手を解決できない
時刻同期Kerberos は時刻ずれに弱い。数分以上ずれると失敗しやすい別NTP参照で大きくずれて認証不可
認証方式Kerberos が通る設計か(SPN、名前解決、通信)Kerberos不成立でNTLMに落ち、制限や監査要件に引っかかる
ログオン権限(ローカル/リモート)「ローカル ログオンを許可」「RDPログオンを許可」等に含まれるかGPOで「Deny log on locally / through RDS」に該当して失敗
Selective Authentication の有無選択的認証を有効にしている場合、Allowed to Authenticate が必要“許可設定”を忘れて認証段階で弾かれる
リソース側 ACL共有/NTFS/アプリ側の権限に A 側グループが入っているかトラストはOKだが、許可がなくアクセス拒否

「Forest-wide authentication」と「Selective authentication」どちらを選ぶべき?

フォレスト トラストを作るとき、認証のスコープとして代表的に次の2択が出てきます(環境により表示文言は多少異なります)。結論から言うと、要件が“一方向で最小限に通したい”なら Selective authentication を第一候補にすると事故が減ります。

項目Forest-wide authenticationSelective authentication
考え方信頼したフォレストのユーザーは、B側のあらゆるコンピューターに“認証自体は”試みられる許可したコンピューター(またはサービス)にだけ認証を許す
運用の手間少ない増える(Allowed to Authenticate 設定が必要)
セキュリティの事故耐性低め(許可の置き忘れで広く到達しやすい)高め(“許可しない限り到達しない”に寄せやすい)
おすすめ用途統合に近い関係、運用を簡素化したい場合リソース フォレスト型(A→Bのみ)、委託先/子会社連携など

Selective authentication を使う場合、Domain B 側で対象サーバー(またはコンピューター)に対して、Domain A のグループへ「Allowed to Authenticate」(認証を許可)を付与します。これがないと、A のユーザーはB側で認証段階で止まります。

“A のユーザーが B のユーザーとしてログオン”はできない

一方向トラストで実現できるのは、あくまで「A の資格情報を B が受け付ける」ことです。「A のユーザーが B のユーザーに成り代わる」ことはできません。

  • A のユーザーが B の端末へログオンする → ログオンするIDは A のユーザー
  • B のユーザーとしてログオンしたい → B のID/パスワード(またはそれに相当する認証要素)が必要

Domain A 側の DC から Domain B のユーザー管理はできる?「既定では不可、委任で可能」

ここが一番の勘違いポイントです。トラストは“認証・アクセスの経路”を作るだけで、相手ドメインの管理権限を自動で付与しません。よって、

  • 既定の状態:Domain A のユーザー(や Domain A の管理者)であっても、Domain B のユーザー作成/削除/変更はできない
  • 実現したい場合:Domain B 側で委任(Delegation)や権限付与を行い、Domain A のアカウント/グループに明示的な権限を付ける

「管理操作」が必要とする権限は、想像より細かい

“ユーザー管理”といっても範囲が広いので、よくある作業と必要な考え方を整理します。

作業既定でA側から可能?B側で必要になることおすすめのやり方
ユーザー作成/削除不可OUに対する「Create/Delete User objects」等の権限B側の特定OUに委任(ドメイン直下で広く与えない)
ユーザー属性変更(部署、電話番号、UPN等)不可変更対象属性の書き込み権限必要な属性だけ委任(最小権限)
パスワードリセット不可Reset password 権限、必要なら Change password 関連ヘルプデスク用ロールとして委任
グループ管理(メンバー追加/削除)不可対象グループの「Write members」権限“権限付与用のグループ”だけ操作できるように分離
コンピューター アカウント作成/参加(ドメイン参加)不可OUへの委任、または「Add workstations to domain」相当参加用OUを作り、そこだけ委任
GPO作成/リンク/編集不可Group Policy 管理権限(GPMC関連)要件が明確な場合のみ。原則はB側管理者で運用

委任で“できるようにする”基本手順(Domain B 側で実施)

もっとも安全で運用しやすいのは、Domain A の個人ユーザーへ直接権限を与えるのではなく、グループを経由して権限設計することです。

手順の全体像

  1. Domain A 側:アクセス/管理対象者をまとめるグループを用意(例:A_B_Operators)
  2. Domain B 側:委任用のグループを用意(例:B_Delegated_UserAdmins)
  3. Domain B 側:B_Delegated_UserAdmins に A_B_Operators(またはA側のユーザー/グループ)を追加
  4. Domain B 側:委任したいOUに対して Delegation of Control(委任のウィザード)で権限を付与
  5. 必要なら:Selective authentication の Allowed to Authenticate を対象サーバーへ付与

なぜ「B側グループ」→「A側グループの追加」がおすすめなのか

  • B側の監査・棚卸しがやりやすい(「Bでは誰に委任したか」をBのADだけで追える)
  • 担当者の入れ替えがA側だけで完結する(Aのグループメンバーを替えるだけ)
  • 過剰権限を避けやすい(OU単位・タスク単位で委任を刻める)

このとき、B側には「Foreign Security Principal(外部セキュリティ プリンシパル)」としてA側のSIDが取り込まれる形になります。管理上は違和感なく扱えますが、委任やアクセス許可の主体は“グループ”に集約するのが重要です。

「A 側の DC から操作できるか?」の本質:場所ではなく“資格情報と権限”

質問でよく出るのが「Domain A 側の DC から Domain B を管理できるの?」という点ですが、結論は次のとおりです。

  • 管理ツール(ADUC など)をどこで起動しても、最終的に効くのは接続先Bでの権限
  • Domain A 側で ADUC を起動して Domain B に接続すること自体は可能
  • ただし、B側で委任がない限り、作成/変更/削除などの管理操作はできない

よく使う運用パターン

パターン概要メリット注意点
RSAT/ADUC を管理端末から実行して B に接続管理端末(AでもBでも可)から B のDCへ接続日常運用に最適、端末をDCにしなくてよい通信(LDAP/ADWS等)と権限が必要
runas /netonly でBの資格情報を使うログオンはAのまま、接続先だけB資格情報で動かす切り替えが楽、普段の作業環境を維持操作ミスのリスク。委任設計があればB資格情報を減らせる
B側に管理ジャンプサーバーを用意B内で管理作業を閉じる(Aからは踏み台経由)セキュリティ境界が明確、監査しやすい運用コストは上がる

参考として、接続先だけ別資格情報でツールを開く例です。

runas /netonly /user:DomainB\SomeAdmin "mmc %SystemRoot%\system32\dsa.msc"

Domain A アカウントで B の委任が設計できているなら、Bの強い管理者資格情報を日常的に使わずに済みます。

実務で効く:A→B だけ通す「安全な」設計ポイント

一方向トラストは便利ですが、雑に張ると「意図せず広く通る」「監査できない」「あとから引き締めにくい」状態になりがちです。A→Bのみを実現するなら、次の設計が効きます。

ポイント:トラストは“許可”ではない。許可はACLで作る

トラストを張った瞬間に「AのユーザーがBの共有を全部見られる」わけではありません。アクセス許可は次の2層で決まります。

  • 認証できるか(トラスト、Selective authentication、ネットワーク、DNS、時刻)
  • 許可されているか(共有権限、NTFS権限、アプリのRBAC、ローカルグループなど)

つまり、最小権限を作るコツは、「認証の入口」も「許可(ACL)」も絞ることです。

ポイント:グループ設計は “Aはアカウント、Bは権限” に寄せる

リソース フォレスト(B)に権限を集約する考え方は運用が安定します。おすすめの型は次のとおりです。

場所役割例
Domain Aユーザーをまとめる(誰が対象か)A_GG_AppUsers、A_GG_Helpdesk など
Domain B権限を表す(何ができるか)B_DLG_App_Read、B_DLG_App_Admin など
リソース(Bの共有/サーバー/アプリ)ACLにB側グループを付与共有/NTFS に B_DLG_App_Read を付与

この型にしておくと、「A側で誰を追加するか」と「B側で何の権限か」が分離され、棚卸し・監査・引き締めがやりやすくなります。

ポイント:B側の端末ポリシーを“確実に効かせる”にはループバックが有効

AのユーザーがBの端末にログオンすると、ユーザーはA所属です。すると、ユーザー向けGPOは基本的にA側のものが適用されます。B側の端末で「Bのルールを適用したい(デスクトップ制限、アプリ許可、プロキシ強制など)」場合は、対象OUのコンピューターGPOで「ユーザーのグループ ポリシー ループバック処理」を使うと設計しやすくなります。

  • Bの端末に入るユーザーがA所属でも、Bの端末側OUのユーザーポリシーを適用できる
  • VDI/Citrix/RDSなど、リソースフォレストでよく使う設計

ポイント:監査ログを“どこで見るか”を決めておく

クロスフォレストのアクセスは、問題が起きたときに「どのログを追うべきか」で迷います。最低限、次は運用前に決めておくと復旧が速くなります。

  • 認証(Kerberos/NTLM)の失敗・成功を追う:Domain B 側のDC(KDCとして動く)
  • 実際のログオン(4624など)やアクセス拒否:対象サーバー/端末(B側)
  • 権限付与や委任の変更:AD(B側)の監査

構成例:要件「A → B は許可、B → A は不可」を満たす最小構成

実務で採用されやすい“最小構成”を、実装順に並べます。

実装ステップ(おすすめ順)

ステップ実施内容狙い
DNS設計条件付きフォワーダ/スタブゾーン等で相互解決を成立トラスト/認証の土台
通信要件の整理DC間・クライアント↔DC間で必要ポートを許可“つながっているのに認証できない”を防ぐ
一方向フォレスト トラスト作成B trusts A で作成A→Bのみの認証経路
認証スコープの選択可能なら Selective authentication不要な到達範囲を削る
アクセス用グループ設計A側で対象者グループ、B側で権限グループ運用と監査の安定化
リソースACL付与共有/NTFS/アプリにB側グループを割り当て実際のアクセス制御
端末ログオン要件必要ならローカルグループ/GPOでログオン権限を付与Aユーザーの対話ログオンを成立
管理が必要なら委任B側OUで Delegation of Control“管理”はBの権限で実現

通信と名前解決の実務メモ(クロスフォレストで詰まりやすい場所)

環境差はありますが、相互に必要になりやすい代表例です。特に「トラスト作成時だけ通る/運用時に通らない」などの事故を避けるため、設計段階で関係者(NW/セキュリティ)と合意しておくのがおすすめです。

用途代表的なプロトコル/ポート備考
名前解決DNS 53/TCP,UDP条件付きフォワーダを張るならDNS間通信が重要
Kerberos 認証88/TCP,UDP(環境によりUDP制限あり)時刻同期とセットで考える
LDAP/AD参照389/TCP(LDAPSなら636/TCP)ADUC等の基本
グローバルカタログ参照3268/TCP(LDAPSなら3269/TCP)検索や一部認証で使われる
SMB445/TCP共有アクセスや一部管理で関連
RPC(管理/一部機能)135/TCP + 動的RPC“管理をどこまでやるか”で必要範囲が変わる
ADWS(ADAC/PowerShell等)9389/TCPPowerShellで跨るなら要確認
時刻同期NTP 123/UDPKerberosの成否に直結

トラブルシュートに効く確認コマンド(現場向け)

“信頼は張れているはず”という状態でも、DNS・経路・時刻・許可のどれかが欠けると失敗します。まずは「名前解決」「信頼の検証」「Kerberosの状況」を短いコマンドで切り分けるのがコツです。

名前解決

nslookup dc01.domainb.local
nslookup _ldap._tcp.dc._msdcs.domainb.local

信頼の検証(クライアント/サーバー側)

nltest /domain_trusts
nltest /sc_verify:domainb.local

Kerberos チケット確認

klist

「ログオンはできるが共有に入れない」場合は、共有とNTFSの両方でDomain A のグループ(またはそれを含むB側グループ)が許可されているかを確認します。

よくある誤解・FAQ(実際に揉めやすい論点)

“一方向なら絶対に安全”ではない?

一方向にすることで「BユーザーがAに認証できない」状態は作れます。しかし、A→Bを通す以上、Aが侵害された場合にBのリソースへ不正アクセスされるリスクは現実的に残ります。だからこそ、

  • Selective authentication で“認証の入口”を絞る
  • ACL(共有/NTFS/アプリ権限)を最小化する
  • 委任はOU単位・タスク単位で刻む

という多層防御が重要になります。

Domain A のグループを Domain B の Domain Admins に入れたら管理できる?

理屈としては可能ですが、運用・監査・リスクの観点では最終手段です。Domain Admins は実質的にドメイン全域の強権限であり、“管理できる”と“してよい”は別です。多くのケースでは、必要なOUに必要なタスクだけを委任する方が、事故も監査負荷も小さくなります。

トラストを張ったのに、AユーザーがB端末にサインインできない

典型原因は次のいずれかです。

  • B側で Selective authentication を有効にしているが、対象端末に Allowed to Authenticate を付けていない
  • B側のGPOで「ローカル ログオンを拒否」「RDPログオンを拒否」等に該当している
  • DNS解決が一部だけ失敗しており、認証先DC探索で詰まっている
  • 時刻ずれでKerberosが失敗している

“B → A を完全にゼロ”にしたい(ネットワーク的にも遮断したい)

トラストは認証の話で、ネットワーク到達性の話ではありません。要件が「BからAへ一切通信させない」なら、ファイアウォールやルーティング設計での制御が別途必要です。ただし、トラスト運用上はDC間通信など最低限の要件が出るため、“どの通信が必要で、どこまで遮断するか”を要件として分解して設計すると破綻しにくくなります。

まとめ:ログオン(アクセス)は“経路”、ユーザー管理は“権限”

  • 一方向フォレスト トラスト(B trusts A)が正しければ、AユーザーはBへログオン/アクセス可能(ただしDNS・時刻・ポリシー・ACLが条件)
  • トラストだけでは管理権限は付与されないため、A側からBのユーザー作成/変更/削除は既定で不可
  • B側でOU委任やグループ設計を行えば、A側アカウントに“必要な範囲だけ”管理を許可できる
  • 要件が「A→Bのみ」なら、Selective authentication+最小権限のACL/委任が実務的に強い

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次