Delen via


Servicebeveiligings- en toegangsrechten

Met het Windows-beveiligingsmodel kunt u de toegang tot servicebeheerbeheer (SCM) en serviceobjecten beheren. De volgende secties bevatten gedetailleerde informatie:

Toegangsrechten voor Service Control Manager

Hier volgen de specifieke toegangsrechten voor de SCM.

Toegangsrecht Beschrijving
SC_MANAGER_ALL_ACCESS (0xF003F) Bevat STANDARD_RIGHTS_REQUIRED, naast alle toegangsrechten in deze tabel.
SC_MANAGER_CREATE_SERVICE (0x0002) Vereist om de functie CreateService aan te roepen om een serviceobject te maken en toe te voegen aan de database.
SC_MANAGER_CONNECT (0x0001) Vereist om verbinding te maken met de servicebeheerbeheerder.
SC_MANAGER_ENUMERATE_SERVICE (0x0004) Vereist voor het aanroepen van de functie EnumServicesStatus of EnumServicesStatusEx om de services in de database weer te geven.
Vereist om de NotifyServiceStatusChange--functie aan te roepen om een melding te ontvangen wanneer een service wordt gemaakt of verwijderd.
SC_MANAGER_LOCK (0x0008) Vereist om de functie LockServiceDatabase aan te roepen om een vergrendeling op de database te verkrijgen.
SC_MANAGER_MODIFY_BOOT_CONFIG (0x0020) Vereist om de NotifyBootConfigStatus--functie aan te roepen.
SC_MANAGER_QUERY_LOCK_STATUS (0x0010) Vereist om de functie QueryServiceLockStatus aan te roepen om de statusgegevens voor de vergrendeling voor de database op te halen.

Hier volgen de algemene toegangsrechten voor de SCM.

Toegangsrecht Beschrijving
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

Een proces met de juiste toegangsrechten kan een ingang openen voor de SCM die kan worden gebruikt in de functies OpenService, EnumServicesStatusExen QueryServiceLockStatus. Alleen processen met beheerdersbevoegdheden kunnen ingangen openen voor de SCM die kunnen worden gebruikt door de functies CreateService en LockServiceDatabase.

Het systeem maakt de beveiligingsdescriptor voor de SCM. Als u de beveiligingsdescriptor voor de SCM wilt ophalen of instellen, gebruikt u de functies QueryServiceObjectSecurity en SetServiceObjectSecurity met een ingang naar het SCManager-object.

Windows Server 2003 en Windows XP: In tegenstelling tot de meeste andere beveiligbare objecten, kan de beveiligingsdescriptor voor de SCM niet worden gewijzigd. Dit gedrag is gewijzigd vanaf Windows Server 2003 met Service Pack 1 (SP1).

De volgende toegangsrechten worden verleend.

Rekening Toegangsrechten
Externe geverifieerde gebruikers
SC_MANAGER_CONNECT
Lokale geverifieerde gebruikers (inclusief LocalService en 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
Beheerders
SC_MANAGER_ALL_ACCESS

U ziet dat externe gebruikers die zijn geverifieerd via het netwerk, maar niet interactief zijn aangemeld, verbinding kunnen maken met de SCM, maar geen bewerkingen uitvoeren waarvoor andere toegangsrechten zijn vereist. Als u deze bewerkingen wilt uitvoeren, moet de gebruiker interactief zijn aangemeld of moet de service een van de serviceaccounts gebruiken.

Windows Server 2003 en Windows XP: geverifieerde gebruikers op afstand krijgen de SC_MANAGER_CONNECT, SC_MANAGER_ENUMERATE_SERVICE, SC_MANAGER_QUERY_LOCK_STATUSen STANDARD_RIGHTS_READ toegangsrechten. Deze toegangsrechten zijn beperkt zoals beschreven in de vorige tabel vanaf Windows Server 2003 met SP1

Wanneer een proces gebruikmaakt van de functie OpenSCManager om een ingang te openen voor een database met geïnstalleerde services, kan het toegangsrechten aanvragen. Het systeem voert een beveiligingscontrole uit op basis van de beveiligingsdescriptor voor de SCM voordat de aangevraagde toegangsrechten worden verleend.

Toegangsrechten voor een service

Hier volgen de specifieke toegangsrechten voor een service.

Toegangsrecht Beschrijving
SERVICE_ALL_ACCESS (0xF01FF) Bevat STANDARD_RIGHTS_REQUIRED naast alle toegangsrechten in deze tabel.
SERVICE_CHANGE_CONFIG (0x0002) Vereist om de functie ChangeServiceConfig of ChangeServiceConfig2 aan te roepen om de serviceconfiguratie te wijzigen. Omdat hiermee de aanroeper het recht verleent om het uitvoerbare bestand te wijzigen dat door het systeem wordt uitgevoerd, mag het alleen worden verleend aan beheerders.
SERVICE_ENUMERATE_DEPENDENTS (0x0008) Vereist voor het aanroepen van de EnumDependentServices-functie om alle services op te sommen die afhankelijk zijn van de service.
SERVICE_INTERROGATE (0x0080) Vereist om de functie ControlService aan te roepen om de service te vragen de status onmiddellijk te rapporteren.
SERVICE_PAUSE_CONTINUE (0x0040) Vereist om de ControlService--functie aan te roepen om de service te onderbreken of voort te zetten.
SERVICE_QUERY_CONFIG (0x0001) Vereist om de functies QueryServiceConfig en QueryServiceConfig2 aan te roepen om een query uit te voeren op de serviceconfiguratie.
SERVICE_QUERY_STATUS (0x0004) Vereist voor het aanroepen van de functie QueryServiceStatus of QueryServiceStatusEx om de servicebeheermanager te vragen over de status van de service.
Vereist om de functie NotifyServiceStatusChange aan te roepen om een melding te ontvangen wanneer een service de status wijzigt.
SERVICE_START (0x0010) Vereist om de functie StartService aan te roepen om de service te starten.
SERVICE_STOP (0x0020) Vereist om de functie ControlService aan te roepen om de service te stoppen.
SERVICE_USER_DEFINED_CONTROL(0x0100) Vereist om de functie ControlService aan te roepen om een door de gebruiker gedefinieerde besturingscode op te geven.

Hier volgen de standaardtoegangsrechten voor een service.

Toegangsrecht Beschrijving
ACCESS_SYSTEM_SECURITY Vereist voor het aanroepen van de functie QueryServiceObjectSecurity of SetServiceObjectSecurity om toegang te krijgen tot de SACL. De juiste manier om deze toegang te verkrijgen, is door de SE_SECURITY_NAMEbevoegdheid in te schakelen in het huidige toegangstoken van de beller, de ingang voor ACCESS_SYSTEM_SECURITY toegang te openen en vervolgens de bevoegdheid uit te schakelen.
(0x10000) verwijderen Vereist om de functie DeleteService aan te roepen om de service te verwijderen.
READ_CONTROL (0x20000) Vereist om de functie QueryServiceObjectSecurity aan te roepen om een query uit te voeren op de beveiligingsdescriptor van het serviceobject.
WRITE_DAC (0x40000) Vereist voor het aanroepen van de functie SetServiceObjectSecurity om de Dacl- lid van de beveiligingsdescriptor van het serviceobject te wijzigen.
WRITE_OWNER (0x80000) Vereist voor het aanroepen van de functie SetServiceObjectSecurity om de Owner en Group leden van de beveiligingsdescriptor van het serviceobject te wijzigen.

Hier volgen de algemene toegangsrechten voor een service.

Toegangsrecht Beschrijving
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

De SCM maakt de beveiligingsdescriptor van een serviceobject wanneer de service wordt geïnstalleerd door de functie CreateService. De standaardbeveiligingsdescriptor van een serviceobject verleent de volgende toegang.

Rekening Toegangsrechten
Externe geverifieerde gebruikers Niet standaard verleend.Windows Server 2003 met SP1: SERVICE_USER_DEFINED_CONTROL
Windows Server 2003 en Windows XP: De toegangsrechten voor externe geverifieerde gebruikers zijn hetzelfde als voor lokale geverifieerde gebruikers.
Lokale geverifieerde gebruikers (inclusief LocalService en 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
Beheerders
VERWIJDEREN
READ_CONTROL
SERVICE_ALL_ACCESS
WRITE_DAC
WRITE_OWNER

Als u bewerkingen wilt uitvoeren, moet de gebruiker interactief zijn aangemeld of moet de service een van de serviceaccounts gebruiken.

Als u de beveiligingsdescriptor voor een serviceobject wilt ophalen of instellen, gebruikt u de functies QueryServiceObjectSecurity en SetServiceObjectSecurity. Zie De DACL voor een service-wijzigen voor meer informatie.

Wanneer een proces gebruikmaakt van de functie OpenService, controleert het systeem de aangevraagde toegangsrechten op basis van de beveiligingsdescriptor voor het serviceobject.

Het verlenen van bepaalde toegangsrechten aan niet-vertrouwde gebruikers (zoals SERVICE_CHANGE_CONFIG of SERVICE_STOP) kan hen in staat stellen de uitvoering van uw service te verstoren en mogelijk toepassingen uit te voeren onder het LocalSystem-account.

Wanneer enumServicesStatusEx-functie wordt aangeroepen, wordt de service op de achtergrond weggelaten uit de lijst met services die naar de client worden geretourneerd als de aanroeper niet beschikt over het SERVICE_QUERY_STATUS toegangsrecht tot een service.