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 |
SC_MANAGER_ENUMERATE_SERVICE SC_MANAGER_QUERY_LOCK_STATUS |
GENERIC_WRITE |
SC_MANAGER_CREATE_SERVICE SC_MANAGER_MODIFY_BOOT_CONFIG |
GENERIC_EXECUTE |
SC_MANAGER_CONNECT SC_MANAGER_LOCK |
GENERIC_ALL |
|
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 |
|
Lokale geverifieerde gebruikers (inclusief LocalService en NetworkService) |
SC_MANAGER_ENUMERATE_SERVICE SC_MANAGER_QUERY_LOCK_STATUS STANDARD_RIGHTS_READ |
LocalSystem |
SC_MANAGER_ENUMERATE_SERVICE SC_MANAGER_MODIFY_BOOT_CONFIG SC_MANAGER_QUERY_LOCK_STATUS STANDARD_RIGHTS_READ |
Beheerders |
|
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 |
SERVICE_QUERY_CONFIG SERVICE_QUERY_STATUS SERVICE_INTERROGATE SERVICE_ENUMERATE_DEPENDENTS |
GENERIC_WRITE |
SERVICE_CHANGE_CONFIG |
GENERIC_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) |
SERVICE_ENUMERATE_DEPENDENTS SERVICE_INTERROGATE SERVICE_QUERY_CONFIG SERVICE_QUERY_STATUS SERVICE_USER_DEFINED_CONTROL |
LocalSystem |
SERVICE_ENUMERATE_DEPENDENTS SERVICE_INTERROGATE SERVICE_PAUSE_CONTINUE SERVICE_QUERY_CONFIG SERVICE_QUERY_STATUS SERVICE_START SERVICE_STOP SERVICE_USER_DEFINED_CONTROL |
Beheerders |
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.