
NTFSフォルダとADオブジェクトの両方がセキュリティ記述子とDACLを使用してユーザー/プロセスアクセスをチェックすることを理解しています。 MS Learn - アクセスチェックの仕組み
しかし、アクセス チェックはネストされた AD グループの ACE をどのように解決するのでしょうか? たとえば、次のようになります。
- ADグループ
AD-Parent
には変更権限が付与されていますF:\Restrict
- ADグループ
AD-VIPs
はAD-Parent
- ユーザー
vip
は次のメンバーですAD-VIPs
私の理解では
vip
セキュリティ記述子には、ACEが参照されAD-VIPs
、F:Restrict
DACLにはACEが参照されますAD-Parent
Windows のどのプロセスがどのようにして「vip -> AD-VIPs -> AD-Parent」チェーンを見つけてアクセスを許可するのでしょうか?
答え1
ログオン/認証/承認チェック中に、安全グループ メンバーシップは、Kerberos トークンの特権アクセス証明書 (PAC) 部分に追加されます。これにはネストされたグループも含まれます。
フォルダーにアクセスすると、リソースを持つホスト (この場合はファイル サーバー) は、ACL 内の SecurityIdentifier と Kerberos トークンの PAC 内の SecurityIdentifier を比較します。一致すると、アクセスが許可されます。
https://learn.microsoft.com/en-us/windows/win32/adschema/a-tokengroups
「特定のユーザーまたはコンピューターでの推移的なグループ メンバーシップ拡張操作による SID のリストを含む計算された属性。推移的な逆メンバーシップを取得するためのグローバル カタログが存在しない場合は、トークン グループを取得できません。」
答え2
あなたが提供してくれたリンクから始めましょう(強調は私によるものです):
システムは、各 ACE の受託者を、スレッドのアクセス トークンで識別された受託者と比較します。アクセス トークンには、ユーザーとユーザーが属するグループ アカウントを識別するセキュリティ識別子 (SID) が含まれています。
実際、「ユーザーが属するグループ アカウント」は、ユーザーがログインしたときに受け取った Kerberos チケットから取得されます。チケットには、グループが別のグループ内にネストされているかどうかに関係なく、ユーザーが属するすべてのグループの SID が含まれています。
具体的には、あなたの質問に答えます:
Windows のどのプロセスがどのようにして「vip -> AD-VIPs -> AD-Parent」チェーンを見つけてアクセスを許可するのでしょうか?
このタスクは、チケット保証チケット (TGT) を生成するとき (通常は、ユーザーがログインしたとき) にドメイン コントローラによって実行されます。TGT には、ユーザーが属するすべてのグループの SID が含まれています。
実験をして、その様子を少し見てみましょうプロセスエクスプローラー: Process Explorer を起動し、ドメイン ユーザーによって開始されたプロセス (たとえば、notepad.exe) をダブルクリックし、[セキュリティ] タブをクリックすると、グループがネストされている場合でも、グループのメンバーシップを確認できます。