Biztonsági és hozzáférési jogosultságok feldolgozása

A Microsoft Windows biztonsági modell lehetővé teszi a folyamatobjektumok hozzáférésének szabályozását. További információ a biztonságról: Access-Control Modell.

Amikor egy felhasználó bejelentkezik, a rendszer összegyűjti azokat az adatokat, amelyek egyedileg azonosítják a felhasználót a hitelesítési folyamat során, és egy hozzáférési jogkivonatban tárolják. Ez a hozzáférési jogkivonat a felhasználóhoz társított összes folyamat biztonsági környezetét ismerteti. A folyamat biztonsági környezete a folyamathoz vagy a folyamatot létrehozó felhasználói fiókhoz megadott hitelesítő adatok készlete.

Jogkivonat használatával megadhatja egy folyamat aktuális biztonsági környezetét a CreateProcessWithTokenW függvénnyel. Egy folyamathoz biztonsági leíró is megadhat, amikor meghívja a CreateProcess, CreateProcessAsUservagy CreateProcessWithLogonW függvényt. Ha NULLad meg, a folyamat egy alapértelmezett biztonsági leírót kap. A folyamat alapértelmezett biztonsági leírójában szereplő ACL-ek a létrehozó elsődleges vagy megszemélyesítési jogkivonatából származnak.

Egy folyamat biztonsági leírójának lekéréséhez hívja meg a GetSecurityInfo függvényt. A folyamat biztonsági leírójának módosításához hívja meg a SetSecurityInfo függvényt.

A folyamatobjektumok érvényes hozzáférési jogosultságai közé tartozik a szabványos hozzáférési jogosultságok és néhány folyamatspecifikus hozzáférési jogosultság. Az alábbi táblázat az összes objektum által használt szabványos hozzáférési jogosultságokat sorolja fel.

Érték Jelentés
DELETE (0x00010000L) Az objektum törléséhez szükséges.
READ_CONTROL (0x00020000L) Az objektum biztonsági leírójában lévő információk olvasásához szükséges, a SACL-ben lévő információkat nem beleértve. A SACL olvasásához vagy írásához a ACCESS_SYSTEM_SECURITY hozzáférési jogosultságot kell kérnie. További információ: SACL Access Right.
SZINKRONIZÁL (0x00100000L) Az objektum szinkronizáláshoz való használatának joga. Ez lehetővé teszi, hogy a szál megvárja, amíg az objektum a jelzett állapotban van.
WRITE_DAC (0x00040000L) A DACL módosításához szükséges az objektum biztonsági leírójában.
WRITE_OWNER (0x00080000L) Az objektum biztonsági leírójának tulajdonosának módosításához szükséges.

 

Az alábbi táblázat a folyamatspecifikus hozzáférési jogosultságokat sorolja fel.

Érték Jelentés
PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED (0x000F0000L) | SZINKRONIZÁL (0x00100000L) | 0xFFFF) Egy folyamatobjektum összes lehetséges hozzáférési jogosultsága.Windows Server 2003 és Windows XP: A PROCESS_ALL_ACCESS jelző mérete a Windows Server 2008 és a Windows Vista rendszeren nőtt. Ha a Windows Server 2008 és a Windows Vista rendszerhez lefordított alkalmazás Windows Server 2003 vagy Windows XP rendszeren fut, a PROCESS_ALL_ACCESS jelző túl nagy, és a jelölőt jelölő függvény ERROR_ACCESS_DENIEDmeghiúsul. A probléma elkerülése érdekében adja meg a művelethez szükséges minimális hozzáférési jogosultságokat. Ha PROCESS_ALL_ACCESS kell használni, állítsa a _WIN32_WINNT az alkalmazás által megcélzott minimális operációs rendszerre (például #define _WIN32_WINNT _WIN32_WINNT_WINXP). További információ: A Windows-fejlécek használata.
PROCESS_CREATE_PROCESS (0x0080) A folyamat szülőfolyamatként való használatához szükséges a PROC_THREAD_ATTRIBUTE_PARENT_PROCESS.
PROCESS_CREATE_THREAD (0x0002) A folyamat során létre kell hoznia egy szálat.
PROCESS_DUP_HANDLE (0x0040) Egy leíró duplikálásához szükséges DuplicateHandlehasználatával.
PROCESS_QUERY_INFORMATION (0x0400) Bizonyos információk lekéréséhez szükséges egy folyamatról, például a jogkivonatáról, a kilépési kódról és a prioritási osztályról (lásd OpenProcessToken).
PROCESS_QUERY_LIMITED_INFORMATION (0x1000) A folyamat bizonyos információinak lekéréséhez szükséges (lásd: GetExitCodeProcess, GetPriorityClass, IsProcessInJob, QueryFullProcessImageName). A PROCESS_QUERY_INFORMATION hozzáférési joggal rendelkező leíró automatikusan PROCESS_QUERY_LIMITED_INFORMATIONkap.Windows Server 2003 és Windows XP: Ez a hozzáférési jogosultság nem támogatott.
PROCESS_SET_INFORMATION (0x0200) Egy folyamat bizonyos információinak, például a prioritási osztályának beállításához szükséges (lásd SetPriorityClass).
PROCESS_SET_QUOTA (0x0100) A memóriakorlátok SetProcessWorkingSetSizehasználatával történő beállításához szükséges.
PROCESS_SUSPEND_RESUME (0x0800) A folyamat felfüggesztéséhez vagy folytatásához szükséges.
PROCESS_TERMINATE (0x0001) A folyamat TerminateProcesshasználatával történő leállításához szükséges.
PROCESS_VM_OPERATION (0x0008) Művelet végrehajtásához szükséges egy folyamat címterén (lásd VirtualProtectEx és WriteProcessMemory).
PROCESS_VM_READ (0x0010) A ReadProcessMemoryhasználatával történő memóriaolvasáshoz szükséges.
PROCESS_VM_WRITE (0x0020) A WriteProcessMemoryhasználatával a memóriába való íráshoz szükséges.
SZINKRONIZÁL (0x00100000L) A várakozási függvényekhasználatával meg kell várni a folyamat befejezését.

 

Ha egy leírót egy másik folyamathoz szeretne megnyitni, és teljes hozzáférési jogosultságot szeretne szerezni, engedélyeznie kell a SeDebugPrivilege jogosultságot. További információ: Jogkivonatok jogosultságainak módosítása.

A CreateProcess függvény által visszaadott leíró PROCESS_ALL_ACCESS hozzáféréssel rendelkezik a folyamatobjektumhoz. Amikor meghívja a OpenProcess függvényt, a rendszer ellenőrzi a kért hozzáférési jogosultságokat, a folyamat biztonsági leírójában lévő DACL-n. Amikor meghívja a GetCurrentProcess függvényt, a rendszer egy olyan pszeudo-kezelőt ad vissza, amely a DACL által a hívó számára engedélyezett maximális hozzáféréssel rendelkezik.

Az ACCESS_SYSTEM_SECURITY hozzáférést kérhet egy folyamatobjektumhoz, ha be szeretné olvasni vagy meg szeretné írni az objektum SACL-jét. További információ: Access-Control listák (ACL-ek) és SACL access right.

Figyelmeztetés

Az itt feljegyzett hozzáférési jogosultságok némelyikét tartalmazó folyamat más hozzáférési jogosultságok megszerzésére is használhatja őket. Ha például az A folyamat rendelkezik egy leíróval a B PROCESS_DUP_HANDLE hozzáféréssel történő feldolgozásához, akkor duplikálhatja a B folyamat pszeudo fogópontját. Ez létrehoz egy leírót, amely maximális hozzáféréssel rendelkezik a B folyamathoz. A pszeudofogópontokról további információt GetCurrentProcesscímű témakörben talál.

 

Védett folyamatok

A Windows Vista védett folyamatokat vezet be, a digitális tartalomvédelem támogatásának növelése érdekében. A rendszer korlátozza a védett folyamatokhoz és a védett folyamatok szálaihoz való hozzáférést.

A következő szabványos hozzáférési jogosultságok nem engedélyezettek egy folyamatból egy védett folyamatba:

  • DELETE
  • READ_CONTROL
  • WRITE_DAC
  • WRITE_OWNER

A következő konkrét hozzáférési jogosultságok nem engedélyezettek egy folyamatból egy védett folyamatba:

  • PROCESS_ALL_ACCESS
  • PROCESS_CREATE_PROCESS
  • PROCESS_CREATE_THREAD
  • PROCESS_DUP_HANDLE
  • PROCESS_QUERY_INFORMATION
  • PROCESS_SET_INFORMATION
  • PROCESS_SET_QUOTA
  • PROCESS_VM_OPERATION
  • PROCESS_VM_READ
  • PROCESS_VM_WRITE

A PROCESS_QUERY_LIMITED_INFORMATION jogot bevezettük, hogy hozzáférést biztosítsunk a PROCESS_QUERY_INFORMATIONkeresztül elérhető információk egy részhalmazához.