Dela via


Tjänstsäkerhet och åtkomsträttigheter

Med Windows-säkerhetsmodellen kan du styra åtkomsten till tjänstkontrollhanteraren (SCM) och tjänstobjekt. Följande avsnitt innehåller detaljerad information:

Åtkomsträttigheter för Service Control Manager

Följande är de specifika åtkomsträttigheterna för SCM.

Åtkomsträtt Beskrivning
SC_MANAGER_ALL_ACCESS (0xF003F) Innehåller STANDARD_RIGHTS_REQUIRED, utöver alla åtkomsträttigheter i den här tabellen.
SC_MANAGER_CREATE_SERVICE (0x0002) Krävs för att anropa funktionen CreateService för att skapa ett tjänstobjekt och lägga till det i databasen.
SC_MANAGER_CONNECT (0x0001) Krävs för att ansluta till tjänstkontrollhanteraren.
SC_MANAGER_ENUMERATE_SERVICE (0x0004) Krävs för att anropa funktionen EnumServicesStatus eller EnumServicesStatusEx för att visa en lista över de tjänster som finns i databasen.
Krävs för att anropa funktionen NotifyServiceStatusChange för att ta emot meddelanden när någon tjänst skapas eller tas bort.
SC_MANAGER_LOCK (0x0008) Krävs för att anropa funktionen LockServiceDatabase för att hämta ett lås på databasen.
SC_MANAGER_MODIFY_BOOT_CONFIG (0x0020) Krävs för att anropa funktionen NotifyBootConfigStatus.
SC_MANAGER_QUERY_LOCK_STATUS (0x0010) Krävs för att anropa funktionen QueryServiceLockStatus för att hämta låsstatusinformationen för databasen.

Följande är allmänna åtkomsträttigheter för SCM.

Åtkomsträtt Beskrivning
GENERIC_READ
STANDARD_RIGHTS_READ
SC_MANAGER_ENUMERATE_SERVICE
SC_MANAGER_QUERY_LOCK_STATUS
GENERIC_WRITE
STANDARD_RIGHTS_WRITE
SC_MANAGER_CREATE_SERVICE
SC_MANAGER_MODIFY_BOOT_CONFIG
GENERIC_EXECUTE
STANDARD_RIGHTS_EXECUTE
SC_MANAGER_CONNECT
SC_MANAGER_LOCK
GENERIC_ALL
SC_MANAGER_ALL_ACCESS

En process med rätt åtkomsträttigheter kan öppna en referens till SCM som kan användas i funktionerna OpenService, EnumServicesStatusExoch QueryServiceLockStatus. Endast processer med administratörsbehörighet kan öppna referenser till den SCM som kan användas av funktionerna CreateService och LockServiceDatabase.

Systemet skapar säkerhetsbeskrivningen för SCM. Om du vill hämta eller ange säkerhetsbeskrivningen för SCM använder du funktionerna QueryServiceObjectSecurity och SetServiceObjectSecurity med ett handtag till SCManager-objektet.

Windows Server 2003 och Windows XP: Till skillnad från de flesta andra skyddsbara objekt kan inte säkerhetsbeskrivningen för SCM ändras. Det här beteendet har ändrats från och med Windows Server 2003 med Service Pack 1 (SP1).

Följande åtkomsträttigheter beviljas.

Konto Åtkomsträttigheter
Fjärranslutna autentiserade användare
SC_MANAGER_CONNECT
Lokala autentiserade användare (inklusive LocalService och NetworkService)
SC_MANAGER_CONNECT
SC_MANAGER_ENUMERATE_SERVICE
SC_MANAGER_QUERY_LOCK_STATUS
STANDARD_RIGHTS_READ
LocalSystem
SC_MANAGER_CONNECT
SC_MANAGER_ENUMERATE_SERVICE
SC_MANAGER_MODIFY_BOOT_CONFIG
SC_MANAGER_QUERY_LOCK_STATUS
STANDARD_RIGHTS_READ
Administratörer
SC_MANAGER_ALL_ACCESS

Observera att fjärranvändare som autentiseras via nätverket men inte är interaktivt inloggade kan ansluta till SCM men inte utföra åtgärder som kräver andra åtkomsträttigheter. För att utföra dessa åtgärder måste användaren vara inloggad interaktivt eller så måste tjänsten använda något av tjänstkontona.

Windows Server 2003 och Windows XP: Fjärranslutna autentiserade användare beviljas åtkomstbehörigheterna SC_MANAGER_CONNECT, SC_MANAGER_ENUMERATE_SERVICE, SC_MANAGER_QUERY_LOCK_STATUSoch STANDARD_RIGHTS_READ. Dessa åtkomsträttigheter begränsas enligt beskrivningen i föregående tabell från och med Windows Server 2003 med SP1

När en process använder funktionen OpenSCManager för att öppna en referens till en databas med installerade tjänster kan den begära åtkomsträttigheter. Systemet utför en säkerhetskontroll mot säkerhetsbeskrivningen för SCM innan de begärda åtkomsträttigheterna beviljas.

Åtkomsträttigheter för en tjänst

Följande är de specifika åtkomsträttigheterna för en tjänst.

Åtkomsträtt Beskrivning
SERVICE_ALL_ACCESS (0xF01FF) Innehåller STANDARD_RIGHTS_REQUIRED utöver alla åtkomsträttigheter i den här tabellen.
SERVICE_CHANGE_CONFIG (0x0002) Krävs för att anropa funktionen ChangeServiceConfig eller ChangeServiceConfig2 för att ändra tjänstkonfigurationen. Eftersom detta ger anroparen rätt att ändra den körbara fil som systemet kör, bör den endast beviljas administratörer.
SERVICE_ENUMERATE_DEPENDENTS (0x0008) Krävs för att anropa funktionen EnumDependentServices för att räkna upp alla tjänster som är beroende av tjänsten.
SERVICE_INTERROGATE (0x0080) Krävs för att anropa funktionen ControlService för att be tjänsten att rapportera dess status omedelbart.
SERVICE_PAUSE_CONTINUE (0x0040) Krävs för att anropa funktionen ControlService för att pausa eller fortsätta tjänsten.
SERVICE_QUERY_CONFIG (0x0001) Krävs för att anropa funktionerna QueryServiceConfig och QueryServiceConfig2 för att köra frågor mot tjänstkonfigurationen.
SERVICE_QUERY_STATUS (0x0004) Krävs för att anropa funktionen QueryServiceStatus eller QueryServiceStatusEx för att fråga tjänstkontrollhanteraren om tjänstens status.
Krävs för att anropa funktionen NotifyServiceStatusChange för att få ett meddelande när en tjänst ändrar status.
SERVICE_START (0x0010) Krävs för att anropa funktionen StartService för att starta tjänsten.
SERVICE_STOP (0x0020) Krävs för att anropa funktionen ControlService för att stoppa tjänsten.
SERVICE_USER_DEFINED_CONTROL(0x0100) Krävs för att anropa funktionen ControlService för att ange en användardefinierad kontrollkod.

Följande är standardåtkomsträttigheter för en tjänst.

Åtkomsträtt Beskrivning
ACCESS_SYSTEM_SECURITY Krävs för att anropa funktionen QueryServiceObjectSecurity eller SetServiceObjectSecurity för att få åtkomst till SACL. Det rätta sättet att få den här åtkomsten är att aktivera SE_SECURITY_NAMEbehörighet i anroparens aktuella åtkomsttoken, öppna handtaget för ACCESS_SYSTEM_SECURITY åtkomst och sedan inaktivera behörigheten.
DELETE (0x10000) Krävs för att anropa funktionen DeleteService för att ta bort tjänsten.
READ_CONTROL (0x20000) Krävs för att anropa funktionen QueryServiceObjectSecurity för att fråga säkerhetsbeskrivningen för tjänstobjektet.
WRITE_DAC (0x40000) Krävs för att anropa funktionen SetServiceObjectSecurity för att ändra Dacl- medlem i tjänstobjektets säkerhetsbeskrivning.
WRITE_OWNER (0x80000) Krävs för att anropa funktionen SetServiceObjectSecurity för att ändra Owner och Group medlemmar i tjänstobjektets säkerhetsbeskrivning.

Följande är allmänna åtkomsträttigheter för en tjänst.

Åtkomsträtt Beskrivning
GENERIC_READ
STANDARD_RIGHTS_READ
SERVICE_QUERY_CONFIG
SERVICE_QUERY_STATUS
SERVICE_INTERROGATE
SERVICE_ENUMERATE_DEPENDENTS
GENERIC_WRITE
STANDARD_RIGHTS_WRITE
SERVICE_CHANGE_CONFIG
GENERIC_EXECUTE
STANDARD_RIGHTS_EXECUTE
SERVICE_START
SERVICE_STOP
SERVICE_PAUSE_CONTINUE
SERVICE_USER_DEFINED_CONTROL

SCM skapar ett tjänstobjekts säkerhetsbeskrivning när tjänsten installeras av funktionen CreateService. Standardsäkerhetsbeskrivningen för ett tjänstobjekt ger följande åtkomst.

Konto Åtkomsträttigheter
Fjärranslutna autentiserade användare Beviljas inte som standard.Windows Server 2003 med SP1: SERVICE_USER_DEFINED_CONTROL
Windows Server 2003 och Windows XP: Åtkomsträttigheterna för fjärranslutna autentiserade användare är desamma som för lokala autentiserade användare.
Lokala autentiserade användare (inklusive LocalService och NetworkService)
READ_CONTROL
SERVICE_ENUMERATE_DEPENDENTS
SERVICE_INTERROGATE
SERVICE_QUERY_CONFIG
SERVICE_QUERY_STATUS
SERVICE_USER_DEFINED_CONTROL
LocalSystem
READ_CONTROL
SERVICE_ENUMERATE_DEPENDENTS
SERVICE_INTERROGATE
SERVICE_PAUSE_CONTINUE
SERVICE_QUERY_CONFIG
SERVICE_QUERY_STATUS
SERVICE_START
SERVICE_STOP
SERVICE_USER_DEFINED_CONTROL
Administratörer
DELETE
READ_CONTROL
SERVICE_ALL_ACCESS
WRITE_DAC
WRITE_OWNER

Om du vill utföra några åtgärder måste användaren vara inloggad interaktivt eller så måste tjänsten använda något av tjänstkontona.

Om du vill hämta eller ange säkerhetsbeskrivningen för ett tjänstobjekt använder du funktionerna QueryServiceObjectSecurity och SetServiceObjectSecurity. Mer information finns i Ändra DACL för en tjänst.

När en process använder funktionen OpenService kontrollerar systemet de begärda åtkomsträttigheterna mot säkerhetsbeskrivningen för tjänstobjektet.

Att bevilja vissa åtkomsträttigheter till ej betrodda användare (till exempel SERVICE_CHANGE_CONFIG eller SERVICE_STOP) kan göra det möjligt för dem att störa körningen av din tjänst och eventuellt tillåta dem att köra program under LocalSystem-kontot.

När Funktionen EnumServicesStatusEx anropas, utelämnas tjänsten tyst från listan över tjänster som returneras till klienten om anroparen inte har SERVICE_QUERY_STATUS åtkomstbehörighet till en tjänst.