SeFilterToken 함수(ntifs.h)
SeFilterToken 루틴은 기존 액세스 토큰의 제한된 버전인 새 액세스 토큰을 만듭니다.
구문
NTSTATUS SeFilterToken(
[in] PACCESS_TOKEN ExistingToken,
[in] ULONG Flags,
[in, optional] PTOKEN_GROUPS SidsToDisable,
[in, optional] PTOKEN_PRIVILEGES PrivilegesToDelete,
[in, optional] PTOKEN_GROUPS RestrictedSids,
PACCESS_TOKEN *FilteredToken
);
매개 변수
[in] ExistingToken
기본 또는 가장 토큰에 대한 포인터입니다. 토큰은 제한된 토큰일 수도 있습니다. 이 토큰은 TOKEN_DUPLICATE 액세스를 위해 이미 열려 있어야 합니다. 이 포인터는 ObReferenceObjectByHandle을 호출하고 TOKEN_DUPLICATE DesiredAccess 형식으로 지정하여 기존 토큰 핸들에서 가져올 수 있습니다.
[in] Flags
추가 권한 옵션을 지정합니다. 이 매개 변수는 0이거나 다음 값의 조합일 수 있습니다.
값 | 의미 |
---|---|
DISABLE_MAX_PRIVILEGE | SE_CHANGE_NOTIFY_PRIVILEGE 제외한 새 토큰의 모든 권한을 사용하지 않도록 설정합니다. 이 값을 지정하면 PrivilegesToDelete 매개 변수가 무시됩니다. |
SANDBOX_INERT | 토큰에 TOKEN_SANDBOX_INERT 플래그를 저장합니다. |
[in, optional] SidsToDisable
제한된 토큰에서 거부 전용 SID를 지정하는 SID_AND_ATTRIBUTES 구조체 배열을 포함하는 TOKEN_GROUPS 구조체에 대한 포인터입니다. 시스템은 거부 전용 SID를 사용하여 보안 개체에 대한 액세스를 거부합니다. 거부 전용 SID가 없을 경우 액세스를 허용하지 않습니다.
SID를 사용하지 않도록 설정하면 SE_GROUP_USE_FOR_DENY_ONLY 켜지고 SE_GROUP_ENABLED 꺼지고 SE_GROUP_ENABLED_BY_DEFAULT. 다른 모든 특성은 무시됩니다.
거부 전용 특성은 사용자 SID 및 SE_GROUP_MANDATORY 특성이 있는 그룹 SID를 포함하여 기존 토큰의 SID 조합에 적용됩니다. 기존 토큰과 연결된 SID를 얻으려면 TokenUser 및 TokenGroups 플래그를 사용하여 SeQueryInformationToken 을 호출합니다. SeFilterToken 은 기존 토큰에서도 찾을 수 없는 배열의 모든 SID를 무시합니다.
SeFilterToken 은 SID_AND_ATTRIBUTES 구조체의 특성 멤버를 무시합니다.
이 매개 변수는 선택 사항이며 NULL일 수 있습니다.
[in, optional] PrivilegesToDelete
제한된 토큰에서 삭제할 권한을 지정하는 LUID_AND_ATTRIBUTES 구조의 배열을 포함하는 TOKEN_PRIVILEGES 구조체에 대한 포인터입니다.
기존 토큰에서 보유한 권한을 얻으려면 TokenPrivileges 플래그를 사용하여 SeQueryInformationToken 을 호출합니다. SeFilterToken 은 기존 토큰에서 보유하지 않는 배열의 모든 권한을 무시합니다.
SeFilterToken 은 LUID_AND_ATTRIBUTES 구조체의 특성 멤버를 무시합니다.
이 매개 변수는 선택 사항이며 NULL일 수 있습니다.
[in, optional] RestrictedSids
새 토큰에 대한 SID 제한 목록을 지정하는 SID_AND_ATTRIBUTES 구조체 배열을 포함하는 TOKEN_GROUPS 구조체에 대한 포인터입니다. 기존 토큰이 제한된 토큰인 경우 새 토큰에 대한 SID 제한 목록은 이 배열의 교차점과 기존 토큰에 대한 SID 제한 목록입니다.
SID_AND_ATTRIBUTES 구조체의 특성 멤버는 0이어야 합니다. SID 제한은 항상 액세스 검사에 사용하도록 설정됩니다.
이 매개 변수는 선택 사항이며 NULL일 수 있습니다.
FilteredToken
제한된 새 토큰의 주소를 수신하는 호출자가 할당한 변수에 대한 포인터입니다. 새 토큰은 기존 토큰과 동일한 형식( 기본 또는 가장)입니다.
반환 값
하나 이상의 매개 변수 값이 유효하지 않으면 SeFilterToken 은 STATUS_INVALID_PARAMETER 반환합니다. (대상 토큰이 가장 토큰이 아닌 경우 이 값이 반환됩니다.) 그렇지 않으면 SeFilterToken 은 STATUS_SUCCESS 반환합니다.
설명
SeFilterToken 은 다음과 같은 방법으로 토큰을 제한할 수 있습니다.
토큰의 SID에 거부 전용 특성을 적용하여 보안 개체에 액세스하는 데 사용할 수 없습니다. 거부 전용 특성에 대한 자세한 내용은 Microsoft Windows SDK 설명서의 액세스 토큰의 SID 특성을 참조하세요.
토큰에서 권한을 제거합니다.
보안 개체에 대한 토큰의 액세스를 검사할 때 시스템에서 사용하는 SID 제한 목록을 지정합니다. 시스템은 두 가지 액세스 검사를 수행합니다. 하나는 토큰의 활성화된 SID를 사용하고 다른 하나는 SID 제한 목록을 사용합니다. 두 액세스 검사 모두 요청된 액세스 권한을 허용하는 경우에만 액세스 권한이 부여됩니다.
제한된 토큰을 SeCreateClientSecurity 및 SeImpersonateClientEx 와 함께 사용하여 액세스 권한 및 권한이 제한된 프로세스를 만들 수 있습니다.
보안 및 액세스 제어에 대한 자세한 내용은 드라이버 개발자를 위한 Windows 보안 모델 및 Windows SDK의 이러한 topics 대한 설명서를 참조하세요.
NewToken에서 반환된 토큰이 더 이상 필요하지 않으면 ObDereferenceObject를 호출하여 토큰을 해제합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP |
대상 플랫폼 | 유니버설 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |