Share via


AccessCheck 함수(securitybaseapi.h)

AccessCheck 함수는 보안 설명자가 액세스 토큰으로 식별된 클라이언트에 지정된 액세스 권한 집합을 부여할지 여부를 결정합니다. 일반적으로 서버 애플리케이션은 이 함수를 사용하여 프라이빗 개체에 대한 액세스를 검사.

구문

BOOL AccessCheck(
  [in]            PSECURITY_DESCRIPTOR pSecurityDescriptor,
  [in]            HANDLE               ClientToken,
  [in]            DWORD                DesiredAccess,
  [in]            PGENERIC_MAPPING     GenericMapping,
  [out, optional] PPRIVILEGE_SET       PrivilegeSet,
  [in, out]       LPDWORD              PrivilegeSetLength,
  [out]           LPDWORD              GrantedAccess,
  [out]           LPBOOL               AccessStatus
);

매개 변수

[in] pSecurityDescriptor

액세스가 검사되는 SECURITY_DESCRIPTOR 구조체에 대한 포인터입니다.

[in] ClientToken

액세스하려는 클라이언트를 나타내는 가장 토큰 에 대한 핸들입니다. 핸들에는 토큰에 대한 TOKEN_QUERY 액세스 권한이 있어야 합니다. 그렇지 않으면 함수가 ERROR_ACCESS_DENIED 실패합니다.

[in] DesiredAccess

검사 대한 액세스 권한을 지정하는 액세스 마스크입니다. 이 마스크는 일반 액세스 권한이 없도록 MapGenericMask 함수에 의해 매핑되어야 합니다.

이 매개 변수가 MAXIMUM_ALLOWED 경우 함수는 GrantedAccess 액세스 마스크를 설정하여 보안 설명자가 클라이언트에 허용하는 최대 액세스 권한을 나타냅니다.

[in] GenericMapping

액세스가 검사되는 개체와 연결된 GENERIC_MAPPING 구조체에 대한 포인터입니다.

[out, optional] PrivilegeSet

액세스 유효성 검사를 수행하는 데 사용되는 권한을 받는 PRIVILEGE_SET 구조체에 대한 포인터입니다. 권한이 사용되지 않은 경우 함수는 PrivilegeCount 멤버를 0으로 설정합니다.

[in, out] PrivilegeSetLength

PrivilegeSet 매개 변수가 가리키는 버퍼의 크기(바이트)를 지정합니다.

[out] GrantedAccess

부여된 액세스 권한을 받는 액세스 마스크 에 대한 포인터입니다. AccessStatusFALSE로 설정된 경우 함수는 액세스 마스크를 0으로 설정합니다. 함수가 실패하면 액세스 마스크를 설정하지 않습니다.

[out] AccessStatus

액세스 검사 결과를 수신하는 변수에 대한 포인터입니다. 보안 설명자가 액세스 토큰으로 식별된 클라이언트에 대해 요청된 액세스 권한을 허용하는 경우 AccessStatusTRUE로 설정됩니다. 그렇지 않으면 AccessStatusFALSE로 설정되고 GetLastError 를 호출하여 확장된 오류 정보를 가져올 수 있습니다.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

자세한 내용은 AccessCheck 작동 방법 개요를 참조하세요.

AccessCheck 함수는 지정된 보안 설명자를 지정된 액세스 토큰과 비교하고 AccessStatus 매개 변수에서 액세스 권한이 부여되었는지 거부되었는지 여부를 나타냅니다. 액세스 권한이 부여되면 요청된 액세스 마스크 는 개체에 부여된 액세스 마스크가 됩니다.

보안 설명자의 DACL이 NULL이면 AccessStatus 매개 변수는 클라이언트에 요청된 액세스 권한이 있음을 나타내는 TRUE를 반환합니다.

보안 설명자에 소유자 및 그룹 SID가 없는 경우 AccessCheck 함수는 ERROR_INVALID_SECURITY_DESCR 실패합니다.

AccessCheck 함수는 감사를 생성하지 않습니다. 애플리케이션에 액세스 검사에 대한 감사가 필요한 경우 AccessCheck 대신 AccessCheckAndAuditAlarm, AccessCheckByTypeAndAuditAlarm, AccessCheckByTypeResultListAndAuditAlarm 또는 AccessCheckByTypeResultListAndAuditAlarmByHandle과 같은 함수를 사용합니다.

예제

이 함수를 사용하는 예제는 ACL을 사용하여 클라이언트 액세스 확인을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 securitybaseapi.h(Windows.h 포함)
라이브러리 Advapi32.lib
DLL Advapi32.dll

추가 정보

AccessCheckAndAuditAlarm

AreAllAccessesGranted

AreAnyAccessesGranted

클라이언트/서버 Access Control

클라이언트/서버 Access Control 함수

GENERIC_MAPPING

AccessCheck 작동 방식

MakeAbsoluteSD

MapGenericMask

PRIVILEGE_SET

PrivilegeCheck

SECURITY_DESCRIPTOR