同期オブジェクトのセキュリティとアクセス権

Windows セキュリティ モデルを使用すると、イベント、ミューテックス、セマフォ、および待機可能タイマー オブジェクトへのアクセスを制御できます。 タイマー キュー、インターロックされた変数、クリティカル セクション オブジェクトはセキュリティ保護できません。 詳細については、「 アクセス制御モデル」を参照してください。

CreateEventCreateMutexCreateSemaphore、または CreateWaitableTimer 関数を呼び出すときに、プロセス間同期オブジェクトのセキュリティ記述子を指定できます。 NULL を指定すると、オブジェクトは既定のセキュリティ記述子を取得します。 同期オブジェクトの既定のセキュリティ記述子の アクセス制御リスト (ACL) は 、作成者のプライマリ トークンまたは偽装トークンから取得されます。

イベント、ミューテックス、セマフォ、または待機可能タイマー オブジェクトのセキュリティ記述子を取得または設定するには、 GetNamedSecurityInfoSetNamedSecurityInfoGetSecurityInfo、または SetSecurityInfo 関数を呼び出します。

CreateEventCreateMutexCreateSemaphoreCreateWaitableTimer によって返されるハンドルは、新しいオブジェクトへのフル アクセス権を持ちます。 OpenEventOpenMutexOpenSemaphoreOpenWaitableTimer 関数を呼び出すと、要求されたアクセス権がオブジェクトのセキュリティ記述子に対してチェックされます。

プロセス間同期オブジェクトの有効なアクセス権には、 標準のアクセス権 とオブジェクト固有のアクセス権が含まれます。 次の表に、すべてのオブジェクトで使用される標準アクセス権の一覧を示します。

説明
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) SetWaitableTimer 関数と CancelWaitableTimer 関数に必要な状態アクセスを変更します。
TIMER_QUERY_STATE (0x0001) 将来利用するために予約されています。

 

プロセス間同期オブジェクトの SACL を読み取りまたは書き込むには、 ACCESS_SYSTEM_SECURITY アクセス権を要求する必要があります。 詳細については、 アクセス制御リスト (ACL)SACL アクセス権に関するページを参照してください