次の方法で共有


ファイル システムでの特権の管理

特権 は、オペレーティング システムが特定の操作を制御するために使用するメカニズムです。 各特権には、次の 2 つの条件が満たされた場合に操作の呼び出し元が実行できる特定の操作が関連付けられています。

  • この特権は、呼び出し元が保持する必要があります。
  • 特権も有効にする必要があります。

これらの要件の原則は、 最小特権と呼ばれます。 最小特権の原則とは、特権が仮定されるのではなく、使用する前に有効化されることを必要とすることです。 この要件により、意図していない操作をユーザーが誤って実行する可能性が最小限に抑えられます。 たとえば、 SeRestorePrivilege では、通常、呼び出し元はファイルへの書き込みアクセスの通常のチェックをバイパスできます。 たとえば、管理者は、ファイルをコピーするときに通常のセキュリティ チェックを実際にオーバーライドしたくない場合があります。 ただし、バックアップ/復元ユーティリティを使用して同じファイルを復元する場合は、これを行うことをお勧めします。

ファイル システムの場合、多くの場合、システムの通常の動作 (特にセキュリティ チェック) を変更するために使用される特権が多数あります。 これらの特権は次のとおりです。

  • SeBackupPrivilege を使用すると、ファイルのセキュリティ記述子がそのようなアクセスを許可しない可能性がある場合でも、ファイルコンテンツを取得できます。 SeBackupPrivilege が有効になっている呼び出し元は、ACL ベースのセキュリティ チェックの必要性を排除します。

  • SeRestorePrivilege では、ファイルのセキュリティ記述子がそのようなアクセスを許可しない可能性がある場合でも、ファイルのコンテンツを変更できます。 この関数を使用して、所有者と保護を変更することもできます。

  • SeChangeNotifyPrivilege を使用すると、右方向に走査できます。 この特権は、パス内のすべてのディレクトリに対してセキュリティ チェックを実行するコストを削減するため、Windows では重要な最適化です。

  • SeManageVolumePrivilege では、ロック ボリューム、最適化、ボリュームのマウント解除、Windows XP 以降での有効なデータ長の設定など、特定のボリューム レベルの管理操作が可能です。 ファイル システム ドライバーは、主に FSCTL 操作に基づいて、この特定の特権を明示的に適用します。 この場合、ファイル システムは、この特権を適用するポリシー決定を行います。 この特権が呼び出し元によって保持されるかどうかの判別は、通常の特権チェックの一環として、セキュリティー参照モニターによって行われます。

他にも多数の特権がありますが、通常はファイル システムに対して不透明であり、 セキュリティ参照モニター (SRM) のみがそれらを解釈します。

ファイル システム内の特権を管理するための主要な Windows ルーチンは次のとおりです。

  • SePrivilegeCheck は、必要な特権の特定のセットのチェックを実行します。

  • SeSinglePrivilegeCheck は、1 つの特定の特権のチェックを実行します。 SePrivilegeCheck の最適化されたバージョンです。

  • SeAccessCheck は、オブジェクト (通常はファイル システムのファイル オブジェクト) に対して通常のアクセス チェックを実行します。

  • SeFreePrivileges は、SeAccessCheck への以前の呼び出しによって返された特権ブロックを解放します。

  • SeAppendPrivileges は、 有効な特権をACCESS_STATE構造体に追加します。 通常、ファイル システムは、IRP_MJ_CREATE処理中に渡されたACCESS_STATEを使用します。