Die vorherige Antwort schien die Fragen nicht direkt zu beantworten, daher dachte ich, ich würde sie ergänzen.
- Mein Plan ist es, den Dienst als Standardkonto für "Lokale Dienste" auszuführen. Ich werde explizit "Vollzugriff" -Berechtigungen für das Konto "Lokaler Dienst" für den Ordner festlegen, in den ich lese bzw. aus dem ich schreibe. Ich glaube, das oben Genannte ist ein guter Plan.
Persönlich sehe ich kein großes Problem mit diesem Plan. Bei BUILTINs haben Sie die Wahl zwischen:
- Wird als LOCALSYSTEM ausgeführt. Wenn dieser Dienst gefährdet ist, besitzt der Angreifer " Alles" und zwar sofort.
- Wird als LOCALSERVICE ausgeführt. Wenn dieser Dienst oder einer der vielen anderen Dienste, die unter diesem Konto ausgeführt werden, gefährdet ist, hat der Angreifer Zugriff auf ein zusätzliches Verzeichnis. *
Es ist wahrscheinlich vorzuziehen, ein paar zusätzliche ACLs hinzuzufügen, um die zweite Option verwenden zu können. Ja, die sicherste Option für einen Dienst mit geringen Rechten, der jedoch sehr sicherheitsrelevant ist, ist die Ausführung unter einem benutzerdefinierten Dienstkonto mit geringen Rechten. Wenn Sie jedoch nicht für jeden Dienst, den Sie bereitstellen, ein neues Konto erstellen / Kennwörter verwalten möchten, ist es nicht so schlimm, LocalService für kleinere, nicht vertrauliche Aufgaben zu verwenden. Sie müssen lediglich eine verantwortungsbewusste Entscheidung treffen, die auf diesen Überlegungen basiert, z. B. was sich in diesem Verzeichnis oder in dieser Datenbank befindet, Auswirkungen auf Verstöße usw.
Auch hier gilt das Prinzip der geringsten Berechtigung, Sie sollten jedoch nur festlegen, Full Control
ob dies Modify
wirklich nicht ausreicht.
2.Meine Frage ist, ob ich für den Ordner, in den ich lese und in den ich schreibe, eine "Netzwerkdienst" -Rolle mit Vollzugriff einrichten muss. Ich frage mich, ob mein Dienst die Datenbankverbindung zu einem anderen Server verwendet, wenn ich das Konto "Netzwerkdienst" einrichten muss.
Wenn für Ihre Datenbank eine Windows Integrated / SSPI-Anmeldung erforderlich ist, müssen Sie NetworkService (oder ein Domänendienstkonto) überall verwenden, dh RunAs und Verzeichnisberechtigungen. Angenommen, Sie haben auch Ihrem Computernamen $ oder Ihrem Domänenkonto Zugriff auf diese Datenbank gewährt. Ich bezweifle, dass Sie das tun. Wenn Sie also die normale Benutzername / pwd-Authentifizierung verwenden, sollten Sie in der Lage sein, alles mit LocalService zu tun. Sie müssen nur ein Konto für dieses Verzeichnis berechtigen, unabhängig davon, was Sie in Ihren RunAs verwenden, nicht für beide.
3.Ich habe möglicherweise ein Missverständnis mit der Funktion des Kontos "Netzwerkdienst".
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 sie im Netzwerk als echtes (Computer-) Konto angezeigt werden. Da LS jedoch als ANONYMOUS angezeigt wird, wird fast alles im Netzwerk verweigert.
Übrigens sollten Sie für diesen Zweck einen geplanten Task 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 (Unique Owner). Ich bin mir jedoch nicht sicher, ob dies perfekt ist und die DACL-Sicherheitsanfälligkeit für Dateien und Ressourcen vollständig verringert. Eingeschränkte SIDs und Token mit Schreibbeschränkung werden in diesem Zusammenhang erwähnt.