동기화 개체 보안 및 액세스 권한

Windows 보안 모델을 사용하면 이벤트, 뮤텍스, 세마포 및 대기 가능한 타이머 개체에 대한 액세스를 제어할 수 있습니다. 타이머 큐, 상호 잠긴 변수 및 중요한 섹션 개체는 보안이 유지되지 않습니다. 자세한 내용은 Access-Control 모델을 참조하세요.

CreateEvent, CreateMutex, CreateSemaphore 또는 CreateWaitableTimer 함수를 호출할 때 프로세스 간 동기화 개체에 대한 보안 설명자를 지정할 수 있습니다. NULL을 지정하는 경우 개체는 기본 보안 설명자를 가져옵니다. 동기화 개체에 대한 기본 보안 설명자의 ACL(Access-Control List) 은 작성자의 기본 또는 가장 토큰에서 가져옵니다.

이벤트, 뮤텍스, 세마포 또는 대기 가능한 타이머 개체의 보안 설명자를 얻거나 설정하려면 GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo 또는 SetSecurityInfo 함수를 호출합니다.

CreateEvent, CreateMutex, CreateSemaphoreCreateWaitableTimer에서 반환된 핸들은 새 개체에 대한 모든 권한을 갖습니다. OpenEvent, OpenMutex, OpenSemaphoreOpenWaitableTimer 함수를 호출하면 시스템은 개체의 보안 설명자에 대해 요청된 액세스 권한을 확인합니다.

interprocess 동기화 개체에 대한 유효한 액세스 권한에는 표준 액세스 권한 및 일부 개체별 액세스 권한이 포함됩니다. 다음 표에는 모든 개체에서 사용하는 표준 액세스 권한이 나열되어 있습니다.

의미
DELETE (0x00010000L) 개체를 삭제하는 데 필요합니다.
READ_CONTROL (0x00020000L) SACL의 정보를 포함하지 않고 개체의 보안 설명자에서 정보를 읽는 데 필요합니다. SACL을 읽거나 쓰려면 ACCESS_SYSTEM_SECURITY 액세스 권한을 요청해야 합니다. 자세한 내용은 SACL 액세스 권한을 참조하세요.
SYNCHRONIZE (0x00100000L) 동기화에 개체를 사용할 수 있는 권한입니다. 이렇게 하면 스레드가 개체가 신호 상태가 될 때까지 대기할 수 있습니다.
WRITE_DAC (0x00040000L) 개체의 보안 설명자에서 DACL을 수정하는 데 필요합니다.
WRITE_OWNER (0x00080000L) 개체의 보안 설명자에서 소유자를 변경해야 합니다.

 

다음 표에서는 이벤트 개체에 대한 개체별 액세스 권한을 나열합니다. 이러한 권한은 표준 액세스 권한 외에도 지원됩니다.

의미
EVENT_ALL_ACCESS (0x1F0003) 이벤트 개체에 대해 가능한 모든 액세스 권한입니다. 이 권한은 애플리케이션이 표준 액세스 권한 및 EVENT_MODIFY_STATE 부여한 액세스 이상의 액세스가 필요한 경우에만 사용합니다. 이 액세스 권한을 사용하면 관리자가 애플리케이션을 실행해야 할 가능성이 높아질 수 있습니다.
EVENT_MODIFY_STATE (0x0002) SetEvent, ResetEventPulseEvent 함수에 필요한 상태 액세스를 수정합니다.

 

다음 표에서는 뮤텍스 개체에 대한 개체별 액세스 권한을 나열합니다. 이러한 권한은 표준 액세스 권한 외에도 지원됩니다.

의미
MUTEX_ALL_ACCESS (0x1F0001) 뮤텍스 개체에 대해 가능한 모든 액세스 권한입니다. 이 권한은 애플리케이션이 표준 액세스 권한에서 부여한 액세스 이상의 액세스가 필요한 경우에만 사용합니다. 이 액세스 권한을 사용하면 관리자가 애플리케이션을 실행해야 할 가능성이 높아질 수 있습니다.
MUTEX_MODIFY_STATE (0x0001) 다음에 사용하도록 예약됩니다.

 

다음 표에서는 세마포 개체에 대한 개체별 액세스 권한을 나열합니다. 이러한 권한은 표준 액세스 권한 외에도 지원됩니다.

의미
SEMAPHORE_ALL_ACCESS (0x1F0003) 세마포 개체에 대해 가능한 모든 액세스 권한입니다. 이 권한은 애플리케이션이 표준 액세스 권한 및 SEMAPHORE_MODIFY_STATE 부여한 액세스 이상의 액세스가 필요한 경우에만 사용합니다. 이 액세스 권한을 사용하면 관리자가 애플리케이션을 실행해야 할 가능성이 높아질 수 있습니다.
SEMAPHORE_MODIFY_STATE (0x0002) ReleaseSemaphore 함수에 필요한 상태 액세스를 수정합니다.

 

다음 표에서는 대기 가능한 타이머 개체에 대한 개체별 액세스 권한을 나열합니다. 이러한 권한은 표준 액세스 권한 외에도 지원됩니다.

의미
TIMER_ALL_ACCESS (0x1F0003) 대기 가능한 타이머 개체에 대해 가능한 모든 액세스 권한입니다. 이 권한은 애플리케이션이 표준 액세스 권한 및 TIMER_MODIFY_STATE 부여한 액세스 이상의 액세스가 필요한 경우에만 사용합니다. 이 액세스 권한을 사용하면 관리자가 애플리케이션을 실행해야 할 가능성이 높아질 수 있습니다.
TIMER_MODIFY_STATE (0x0002) SetWaitableTimerCancelWaitableTimer 함수에 필요한 상태 액세스를 수정합니다.
TIMER_QUERY_STATE (0x0001) 다음에 사용하도록 예약됩니다.

 

프로세스 간 동기화 개체의 SACL을 읽거나 쓰려면 ACCESS_SYSTEM_SECURITY 액세스 권한을 요청해야 합니다. 자세한 내용은 ACL(액세스 제어 목록)SACL 액세스 권한을 참조하세요.