Die vorige Antwort schien die Fragen nicht direkt anzusprechen, also dachte ich, ich würde sie ergänzen.
- Mein Plan ist es, den Dienst als Standardkonto "Lokaler Dienst" auszuführen. Ich werde explizit "Vollzugriff" -Privilegien für das Konto "Lokaler Dienst" für den Ordner festlegen, in den / den ich schreibe / schreibe. Ich glaube, das obige ist ein guter Plan.
Ich persönlich sehe mit diesem Plan kein großes Problem. Bei BUILTINs haben Sie die Wahl zwischen:
- Ausführung als LOCALSYSTEM - Wenn also dieser Dienst gefährdet ist, besitzt der Angreifer alles und sofort.
- Ausführung als LOCALSERVICE - Wenn also dieser Dienst oder einer der vielen anderen Dienste, die unter diesem Konto ausgeführt werden, gefährdet sind, hat der Angreifer Zugriff auf ein zusätzliches Verzeichnis. *
Es ist zu bevorzugen, einige zusätzliche ACLs hinzuzufügen, um die zweite Option verwenden zu können. Ja, die sicherste Option für einen Dienst mit geringen Berechtigungen, der jedoch sehr sicherheitsrelevant ist, wäre die Ausführung unter einem benutzerdefinierten Dienstkonto mit niedrigem Berechtigungen. Wenn Sie jedoch nicht für jeden bereitgestellten Dienst ein neues Konto erstellen / Kennwörter verwalten möchten, ist die Verwendung von LocalService für kleinere, nicht vertrauliche Aufgaben keine so schlimme Sache. Sie müssen nur eine verantwortungsbewusste Entscheidung auf der Grundlage dieser Überlegungen treffen, z. B. was in diesem Verzeichnis oder in dieser Datenbank enthalten ist, die Auswirkungen, wenn diese verletzt werden usw.
Obwohl das Prinzip der kleinsten Privilegien wieder gilt, sollten Sie nur festlegen, Full Control
ob Modify
es wirklich nicht ausreicht.
2.Meine Frage ist, muss ich für den Ordner, in den ich lese und schreibe, eine "Netzwerkdienst" -Rolle mit vollem Steuerungszugriff einrichten? Ich frage mich, da mein Dienst die Datenbankverbindung zu einem anderen Server verwendet, wenn ich das Konto "Network Service" einrichten möchte.
Wenn für Ihre Datenbank ein Windows Integrated / SSPI-Login erforderlich ist, müssen Sie NetworkService (oder ein Domänendienstkonto) überall verwenden, z. B. RunAs und Verzeichnisberechtigungen. Vorausgesetzt, Sie haben Ihrem Computername $ oder dem Domänenkonto auch Zugriff auf diese Datenbank gewährt. Ich bezweifle, dass Sie das tun. Wenn Sie also die normale Authentifizierung mit Benutzername / PDA verwenden, sollten Sie in der Lage sein, alles mit LocalService zu erledigen. Sie müssen nur ein Konto für dieses Verzeichnis vergeben, je nachdem, was Sie in Ihren RunAs verwenden, nicht für beide.
3.Ich kann falsch verstehen, was das Konto "Netzwerkdienst" tut.
LocalService / NetworkService sind fast identische Konten auf dem lokalen Computer. Der Unterschied besteht hauptsächlich darin, was sie im Netzwerk tun können. NS kann auf einige Netzwerkressourcen zugreifen, da es im Netzwerk als echtes (Computer-) Konto angezeigt wird. LS wird jedoch als ANONYMOUS angezeigt, daher wird meistens alles im Netzwerk abgelehnt.
Übrigens sollten Sie dafür eine geplante Aufgabe verwenden, keinen Dienst.
* Von Vista ab, aufgrund Service Isolation kann man kompromittiert LocalService- Prozess andere nicht leicht angreifen. Im Gegensatz zu Windows 2003 erhält jeder LocalService- / NetworkService-Dienstprozess / jede Instanz eine eigene eindeutige Anmeldesitzungs-SID (eindeutiger Besitzer). Ich bin jedoch nicht sicher, ob dies perfekt ist und die DACL-Sicherheitsanfälligkeit für Dateien und Ressourcen vollständig verringert. In diesem Zusammenhang werden eingeschränkte SIDs und schreibgeschützte Token erwähnt.