> For the complete documentation index, see [llms.txt](https://docs.enginsight.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.enginsight.com/docs/knowledge-base/plugins/wie-kann-ich-in-enginsight-plugins-im-unprivilegierten-modus-ausfuhren.md).

# Wie kann ich in Enginsight Plugins im unprivilegierten Modus ausführen?

Standardmäßig führt der Enginsight Agent Pulsar benutzerdefinierte Skripte, sogenannte Plugins, mit denselben erhöhten Rechten aus wie der Agent selbst. Dies bringt jedoch das Risiko mit sich, dass auch bösartige oder fehlerhafte Plugins mit System- bzw. Root-Rechten ausgeführt werden und so weitere schädliche Aktionen eingeleitet werden können.&#x20;

Eine unprivilegierte Ausführung von Plugins dagegen setzt das Prinzip der geringsten Rechte, auch Least Privilege-Prinzip, um, indem Plugins ausschließlich unter einem unprivilegierten Service-Account (Windows) oder als unprivilegierter Service-User (Linux) ausgeführt werden. Damit kann die Angriffsfläche auf dem Host reduziert werden, da bösartige oder fehlerhafte Plugins nur noch auf das zugreifen dürfen, was das eingeschränkte Konto bzw. der eingeschränkte Benutzer darf.

Um die unprivilegierte Ausführung von Plugins zu aktivieren, musst du neben verschiedenen Einstellungen in der Enginsight Plattform noch weitere Konfigurationen vornehmen. Im Folgenden zeigen wir dir, welche dies sind.

***

## Schritt 1: Unprivilegierten Modus auf dem Host aktivieren

Zunächst musst du auf dem Host selbst die unprivilegierte Ausführung von Plugins aktivieren. Du hast dafür zwei Möglichkeiten:

#### Aktivierung in den Host-Einstellungen des einzelnen Hosts

1. Navigiere in der Enginsight Plattform zu **Hosts** → **Übersicht** und klicke auf den Namen eines Hosts, um das Host-Detailmenü auf dem Dashboard zu öffnen.
2. Klicke im Host-Detailmenü auf [Einstellungen](https://docs.enginsight.com/docs/manual/bedienung-der-plattform/host-detailansichten/einstellungen), um den Host zu konfigurieren.&#x20;
3. Setze im Bereich **Core Feature** einen Haken in die Checkbox neben **Benutzerdefinierte Plugins ausführen** sowie neben **Unprivilegierte Plugin-Ausführung**.
4. Klicke auf **Änderungen speichern**, um die Anpassungen für den Host zu übernehmen.

#### Aktivierung über den Policy Manager

1. Navigiere in der Enginsight Plattform zu **Hosts** → **Management** → [Policy Manager](https://docs.enginsight.com/docs/manual/bedienung-der-plattform/hosts/management/policy-manager) und klicke auf **Policy hinzufügen** in der rechten oberen Ecke, um einen neuen Policy Manager zu erstellen, oder bearbeite einen existierenden Policy Manager.
2. Klicke im Bereich **Verfügbare Einstellungen** → **Plugins** in das Feld **Neue Einstellung hinzufügen**, um verfügbare Optionen auszuklappen.
3. Wähle die Option **Unprivilegierte Plugin-Ausführung** aus.
4. Klicke auf **Policy hinzufügen** oder auf **Änderungen speichern**, um die Anpassungen für zugeordnete Hosts zu übernehmen.

### Neu angelegte Konten

Beim Aktivieren der unprivilegierten Plugin-Ausführung legt der Pulsar auf dem oder den entsprechenden Hosts je nach Betriebssystem ein eigenes, eingeschränktes Konto an:

<table><thead><tr><th width="177.75">Betriebssystem</th><th>Angelegtes Konto</th></tr></thead><tbody><tr><td>Windows</td><td>Virtuelles Dienstkonto <code>NT SERVICE\enginsight-plugin-user</code></td></tr><tr><td>Linux</td><td>Systembenutzer und -gruppe <code>enginsight-plugin-user</code></td></tr><tr><td>macOS</td><td>Rollenkonto <code>enginsight-plugin-user</code></td></tr></tbody></table>

### Hinweis zur Aktivierung auf macOS-Systemen

{% hint style="danger" %}
**Bitte beachte**: Die Anwendung der unprivilegierten Plugin-Ausführung auf macOS-Hosts ist zwar möglich, wird von Enginsight aber nicht offiziell unterstützt. Die Anwendung erfolgt auf eigene Gefahr!
{% endhint %}

Wenn du die unprivilegierte Plugin-Ausführung auf macOS dennoch anwenden möchtest, musst du zunächst auf deinem Host den **Festplattenvollzugriff** manuell aktivieren.

1. Navigiere dazu auf deinem macOS-Host zu **Systemeinstellungen** → **Datenschutz & Sicherheit** → **Festplattenvollzugriff**.
2. Aktiviere den Schieberegler neben **Enginsight Pulsar**, damit der Pulsar den notwendigen Nutzereintrag anlegen kann.

### Hinweise zur Deaktivierung des unprivilegierten Modus

Wenn du die unprivilegierte Ausführung von Plugins nach der Aktivierung wieder deaktivierst, entfernt der Pulsar das angelegte, eingeschränkte Konto wieder. Aktivierst du die Einstellung erneut, wird das Konto neu angelegt.

Ob die Zugriffsrechte, die du dem jeweiligen Konto in [Schritt 2](#schritt-2-zugriffsrechte-fur-das-angelegte-konto-vergeben) vergibst, bestehen bleiben, hängt vom Betriebssystem deines Hosts ab.

#### Windows

Rechte, die du dem virtuellen Dienstkonto `NT SERVICE\enginsight-plugin-user` gegeben hast, bleiben wirksam.&#x20;

Die Identität des Kontos ist an dessen Namen gebunden und ändert sich beim Neuanlegen nicht, bestehende Berechtigungen gelten also weiter.

#### Linux / macOS

Berechtigungen werden über die numerische Benutzer- und Gruppen-ID des Kontos gespeichert. Meist bleiben die Rechte wirksam, weil das neu angelegte Konto in der Regel dieselbe ID erhält.&#x20;

Allerdings kann dies nicht garantiert werden, denn wenn zwischenzeitlich andere Systemkonten angelegt wurden, kann sich die ID ändern. An Eigentümer oder Gruppe gebundene Rechte greifen in diesem Fall nicht mehr.&#x20;

Für alle Benutzer geöffnete Rechte (die "other"-Bits einer Datei) bleiben immer wirksam.&#x20;

Prüfe daher nach dem erneuten Aktivieren der Einstellung, ob deine Plugins noch den benötigten Zugriff haben.

***

## Schritt 2: Zugriffsrechte für das angelegte Konto vergeben

Da unprivilegierte Plugins nun unter dem neu angelegten, eingeschränkten Konto laufen und nicht mehr mit erhöhten Rechten, haben sie ebenfalls nur noch eingeschränkten Zugriff auf Ressourcen.

Daher musst du dem Konto jede Datei, jedes Verzeichnis, jeden Registry-Schlüssel und jede sonstige Ressource, die ein Plugin lesen oder schreiben muss, ausdrücklich zugänglich machen.&#x20;

{% hint style="warning" %}
**Bitte beachte**: Vergebe den entsprechenden Konten ausschließlich Rechte, die auch wirklich benötigt werden! Anderenfalls ist das Least Privilege-Prinzip hinfällig.
{% endhint %}

Vergebe die nötigen Rechte mit den Standardwerkzeugen deines Betriebssystems zur Zugriffssteuerung, zum Beispiel:

* **Windows** : Gib dem virtuellen Dienstkonto `NT SERVICE\enginsight-plugin-user` auf den relevanten Dateien oder Ordnern Lese-/Ausführungsrechte (bei Bedarf Schreibrechte) über den Reiter **Sicherheit** der Dateieigenschaften oder mit `icacls`.
* **Linux**: Gib dem Benutzer oder der Gruppe `enginsight-plugin-user` Zugriff auf die relevanten Pfade, etwa über Eigentümer, Dateirechte, Gruppenmitgliedschaft oder ACLs.
* **macOS**: Gib dem Konto `enginsight-plugin-user` über Dateirechte oder ACLs Zugriff auf die relevanten Pfade.

***

## Schritt 3: Plugins im unprivilegierten Modus konfigurieren und ausführen

Für jedes Plugin kannst du festlegen, ob es privilegiert oder unprivilegiert ausgeführt werden soll. Nimm dazu folgende Schritte vor:

1. Navigiere in der Enginsight Plattform zu **Hosts** → **Management** → [Plugins](https://docs.enginsight.com/docs/manual/bedienung-der-plattform/hosts/management/plugins) und klicke in der rechten oberen Ecke auf **Plugin hinzufügen**, um ein neues Plugin zu erstellen, oder bearbeite ein existierendes Plugin.
2. Klicke auf **Erweiterte Einstellungen**, um verfügbare Optionen anzuzeigen.
3. Setze einen Haken in die Checkbox neben **Unprivilegierte Plugin-Ausführung**, um den unprivilegierten Modus zu aktivieren.
4. Klicke auf **Plugin hinzufügen**, nachdem du das Plugin vollständig konfiguriert hast, oder auf **Änderungen speichern**.

Zusammen mit der Host-Einstellung aus [Schritt 1](#schritt-1-unprivilegierten-modus-auf-dem-host-aktivieren) ergibt sich eine Einstellungskombination, die bestimmt, wie das Plugin ausgeführt wird:

### Verhalten je Einstellungskombination

Je nachdem, ob die unprivilegierte Plugin-Ausführung auf dem Host und/oder auf dem Plugin **aktiviert** oder **deaktiviert** ist, ergibt sich folgendes Verhalten:&#x20;

<table><thead><tr><th width="197.84375">Host-Einstellung</th><th width="185.29296875">Plugin-Einstellung</th><th>Ergebnis</th></tr></thead><tbody><tr><td>Aktiviert</td><td>Aktiviert</td><td>Das Plugin läuft mit reduzierten Rechten unter dem <strong>eingeschränkten Konto</strong>. Dies entspricht dem vorgesehenen Least-Privilege-Prinzip.</td></tr><tr><td>Aktiviert</td><td>Deaktiviert</td><td>Das Plugin läuft mit <strong>erhöhten Rechten</strong>. Es nimmt sich ausdrücklich von der Rechte-Reduzierung aus.</td></tr><tr><td>Deaktiviert</td><td>Deaktiviert</td><td>Das Plugin läuft mit <strong>erhöhten Rechten</strong>.</td></tr><tr><td>Deaktiviert</td><td>Aktiviert</td><td><p>Das Plugin wird <strong>nicht ausgeführt</strong>. Es verlangt das eingeschränkte Konto, der Host stellt es aber nicht bereit.</p><div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p><strong>Bitte beachte</strong>: Ein ausdrücklich als unprivilegiert markiertes Plugin wird niemals stillschweigend mit erhöhten Rechten ausgeführt!</p></div></td></tr></tbody></table>

***

## Hinweis zum Schreiben von unprivilegierten Plugin-Skripten

Ist der unprivilegierte Modus aktiviert, wird jeder Schritt eines Plugins, der erhöhte Rechte benötigt, abgewiesen. Dies ist zwar korrektes Verhalten, führt allerdings dazu, dass das Plugin nicht fehlerfrei ausgeführt werden kann.

Der Pulsar bewertet die erfolgreiche Ausführung eines Plugin-Skripts anhand dessen Exit-Code. Der Exit-Code 0 steht für Erfolg, während der Exit-Code 1 einen Fehlschlag signalisiert.

Viele gängige Tools und Skripte geben jedoch Fehler, die auf Rechte-Problemen basieren, lediglich als Text auf dem Fehlerstrom aus und beenden sich weiterhin mit Exit-Code 0, also Erfolg.

Um dieses Problem aufzufangen, empfehlen wir dir, Skripte zu schreiben, die dem Pulsar auch bei Rechte-Problemen ausdrücklich einen Fehlschlag signalisieren:

* Prüfe in Skripten die benötigten Rechte vorab und beende das Skript im Fehlerfall mit Exit-Code 1.
* Setze bspw. in PowerShell `$ErrorActionPreference = 'Stop'` (optional mit `try` / `catch`), damit eine verweigerte Operation zu einem abbrechenden Fehler wird und das Skript mit einem Wert ungleich 0 endet.

Benötigt ein Plugin Root- oder Administratorrechte, um überhaupt zu funktionieren, empfehlen wir dir, den unprivilegierten Modus zu deaktivieren.

***
