다음을 통해 공유


파일 시스템에서 권한 관리

권한은 운영 체제에서 특정 작업을 제어하는 데 사용하는 완전히 분리된 메커니즘입니다. 각 권한은 호출자가 권한을 보유하고 사용하도록 설정한 경우 수행할 수 있는 특정 작업과 관련이 있습니다. 여기에서 두 가지 조건을 확인합니다.

  • 호출자가 권한을 보유해야 합니다.

  • 권한도 사용하도록 설정해야 합니다.

최소 권한이라고 하는 이 원칙은 사용자가 의도하지 않은 작업을 실수로 수행할 가능성을 최소화하기 위해 단순히 가정하는 것이 아니라 사용 전에 권한을 사용하도록 설정해야 합니다. 예를 들어 SeRestorePrivilege 는 일반적으로 호출자가 파일에 대한 쓰기 액세스에 대한 일반적인 검사를 바이패스하도록 허용합니다. 관리자는 파일을 복사할 때 일반 보안 검사를 실제로 재정의하지 않을 수 있지만 백업/복원 유틸리티를 사용하여 동일한 파일을 복원할 때는 이 작업을 수행하려고 합니다.

파일 시스템의 경우 시스템에 대한 일반적인 동작(특히 보안 검사)을 수정하는 데 자주 사용되는 여러 권한이 있습니다. 이러한 권한은 다음과 같습니다.

  • SeBackupPrivilege 는 파일의 보안 설명자가 이러한 액세스 권한을 부여하지 않더라도 파일 콘텐츠 검색을 허용합니다. SeBackupPrivilege를 사용하도록 설정된 호출자는 ACL 기반 보안 검사 대한 필요성을 없애줍니다.

  • SeRestorePrivilege 를 사용하면 파일의 보안 설명자가 이러한 액세스 권한을 부여하지 않더라도 파일 콘텐츠를 수정할 수 있습니다. 이 함수를 사용하여 소유자 및 보호를 변경할 수도 있습니다.

  • SeChangeNotifyPrivilege 는 오른쪽으로 트래버스할 수 있습니다. 이 권한은 경로의 모든 단일 디렉터리에서 보안 검사 수행하는 비용이 이 권한을 보유하여 무효화되므로 Windows에서 중요한 최적화입니다.

  • SeManageVolumePrivilege 를 사용하면 Windows XP 이상에서 잠금 볼륨, 조각 모음, 볼륨 분리 및 유효한 데이터 길이 설정과 같은 특정 볼륨 수준 관리 작업을 수행할 수 있습니다. 이 특정 권한은 주로 FSCTL 작업에 따라 파일 시스템 드라이버에 의해 명시적으로 적용됩니다. 이 경우 파일 시스템은 이 권한을 적용하는 정책을 결정합니다. 호출자가 이 권한을 보유하는지 여부를 결정하는 것은 보안 참조 모니터가 일반 권한 검사 일부로 수행합니다.

다른 많은 권한이 있지만 일반적으로 파일 시스템에는 불투명하므로 보안 참조 모니터에서만 해석됩니다.

파일 시스템 내에서 권한을 관리하기 위한 주요 Windows 루틴은 다음과 같습니다.

  • SePrivilegeCheck -- 이 루틴은 필요한 특정 권한 집합에 대해 검사 수행합니다.

  • SeSinglePrivilegeCheck -- 이 루틴은 단일 특정 권한에 대해 검사 수행합니다. 이는 최적화된 버전의 SePrivilegeCheck입니다.

  • SeAccessCheck -- 이 루틴은 개체(일반적으로 파일 시스템의 파일 개체)에서 정상적인 액세스 검사를 수행합니다.

  • SeFreePrivileges -- 이 루틴은 SeAccessCheck에 대한 이전 호출에서 반환된 권한 블록을 해제합니다.

  • SeAppendPrivileges -- 이 루틴은 ACCESS_STATE 구조에 사용 가능한 권한을 추가합니다. 일반적으로 파일 시스템은 IRP_MJ_CREATE 처리하는 동안 전달된 ACCESS_STATE 사용합니다.