View a markdown version of this page

AWS IoT Greengrass V2 Core-Geräte als Nicht-Root-Geräte einrichten - AWS IoT Greengrass

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS IoT Greengrass V2 Core-Geräte als Nicht-Root-Geräte einrichten

Auf dieser Seite werden vier Lösungen für die Ausführung der AWS IoT Greengrass Core-Software als Nicht-Root-Benutzer vorgestellt. Sehen Sie sich die Vergleichstabelle an, um die Funktionen und Kompromisse der einzelnen Lösungen zu verstehen, und ermitteln Sie dann anhand des Entscheidungsablaufdiagramms, welche Lösung Ihren Anforderungen entspricht.

Anmerkung

Die Nicht-Root-Lösungen auf dieser Seite gelten nur für AWS IoT Greengrass Nucleus auf Linux-Geräten. Windows ist nicht enthalten, da es unter Windows als Systemdienst ausgeführt werden AWS IoT Greengrass V2 muss. Informationen zur standardmäßigen Root-Installation unter Linux finden Sie unterInstallieren Sie die AWS IoT Greengrass Core-Software mit automatischer Ressourcenbereitstellung.

Informationen zum Ausführen von AWS IoT Greengrass Nucleus Lite als Nicht-Root-Benutzer finden Sie unter Podman im AWS IoT Greengrass Nucleus GitHub Lite-Repository verwenden.

Wählen Sie eine Nicht-Root-Lösung

Verwenden Sie die folgende Tabelle, um die Nicht-Root-Lösungen zu vergleichen und ihre Vor- und Nachteile zu verstehen. Jede Lösung bietet je nach Ihren Sicherheitsanforderungen und Geräteeinschränkungen unterschiedliche Funktionen.

Lösungen ohne Root-Rechte
Lösung Erfordert Root-Zugriff Kann Komponenten unter verschiedenen Benutzern ausführen Führt Greengrass als Systemdienst aus Am besten geeignet für

Lösung 1: Kein Root-Zugriff

Nein

Nein

Nein (Benutzerservice optional)

Geräte, auf denen Sie keinen Root-Zugriff haben

Lösung 2: Einzelbenutzer ohne Root

Ja (nur Setup)

Nein

Ja

Greengrass als Nicht-Root-Benutzer ausführen, wobei alle Komponenten unter demselben Benutzer ausgeführt werden

Lösung 3: Kein Root, mehrere Benutzer

Ja (nur Setup)

Ja

Ja

Greengrass als Nicht-Root-Benutzer ausführen, während Komponenten unter verschiedenen Benutzern ausgeführt werden

Lösung 4: Root mit eingeschränkten Funktionen

Ja

Ja

Ja

Greengrass als Root mit einer begrenzten Anzahl von Linux-Funktionen ausführen

Das folgende Flussdiagramm führt Sie durch die Auswahl der geeigneten Lösung auf der Grundlage Ihrer Geräteeinschränkungen und -anforderungen.

Flussdiagramm, das den Entscheidungsprozess für die Auswahl einer Nicht-Root-Lösung zeigt. Fragen Sie zunächst, ob Sie auf Ihrem Kerngerät Root-Zugriff haben. Falls nein, verwenden Sie Lösung 1. Falls ja, fragen Sie, ob Sie Komponenten unter verschiedenen Linux-Benutzern ausführen müssen. Falls nein, verwenden Sie Lösung 2. Falls ja, fragen Sie, ob Sie möchten, dass Greengrass als Root-Benutzer mit eingeschränkten Funktionen ausgeführt wird. Falls ja, verwenden Sie Lösung 4. Falls nein, verwenden Sie Lösung 3.

Lösung 1: AWS IoT Greengrass V2 Ohne Root-Zugriff einrichten

Verwenden Sie diese Lösung, wenn Sie auf dem Gerät keinen Root-Zugriff haben. In dieser Konfiguration wird die AWS IoT Greengrass Core-Software ausschließlich als Benutzer ohne Root-Rechte ausgeführt.

Kompromisse

Diese Lösung hat die folgenden Einschränkungen:

  • Keine Trennung der Komponenten durch Benutzer — Alle Komponenten werden unter demselben Benutzer ausgeführt, der die AWS IoT Greengrass Core-Software ausführt. Sie können die posixUser Konfiguration nicht verwenden, um Komponenten unter verschiedenen Benutzern auszuführen.

  • RequiresPrivilege ignoriert — Die AWS IoT Greengrass Core-Software ignoriert die RequiresPrivilege Option in den Komponentenrezepten. Komponenten können keine erhöhten Rechte anfordern.

  • Kein Systemdienst — Sie können die AWS IoT Greengrass Core-Software nicht als Systemdienst installieren. Sie können ihn optional so konfigurieren AWS IoT Greengrass V2 , dass er als Systemd-Benutzerdienst ausgeführt wird.

Voraussetzungen

Diese Lösung erfordert:

  • Ein Benutzerkonto auf dem Gerät, das kein Root-Konto ist

  • Schreibzugriff auf das Verzeichnis, in dem Sie die AWS IoT Greengrass Core-Software installieren möchten

Zur Installation und Ausführung AWS IoT Greengrass V2 ohne Root-Zugriff
  1. Gehen Sie wie folgt vorInstallieren Sie die AWS IoT Greengrass Core-Software mit automatischer Ressourcenbereitstellung: Richten Sie Ihre Geräteumgebung ein, geben Sie Anmeldeinformationen ein und laden Sie die AWS IoT Greengrass Core-Software herunter.

  2. Erstellen Sie das Installationsverzeichnis und stellen Sie sicher, dass es Ihrem Benutzer gehört.

    mkdir -p $HOME/greengrass/v2
  3. Führen Sie das Installationsprogramm ohne aussudo. Stellen --component-default-user Sie Ihren aktuellen Benutzer ein.

    java -Droot="$HOME/greengrass/v2" -Dlog.store=FILE \ -jar ./GreengrassInstaller/lib/Greengrass.jar \ --aws-region region \ --thing-name MyGreengrassCore \ --thing-group-name MyGreengrassCoreGroup \ --thing-policy-name GreengrassV2IoTThingPolicy \ --tes-role-name GreengrassV2TokenExchangeRole \ --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \ --component-default-user $USER \ --provision true

    Nicht verwenden--setup-system-service true, da Sie keinen Root-Zugriff haben, um einen Systemdienst zu erstellen.

(Optional) Richten Sie einen Systemd-Benutzerdienst ein

Sie können einen Systemd-Benutzerdienst zur Verwaltung der AWS IoT Greengrass Core-Software konfigurieren. Dadurch kann die Software automatisch gestartet werden, wenn Sie sich anmelden.

Um einen Systemd-Benutzerdienst einzurichten
  1. Stoppen Sie die AWS IoT Greengrass Core-Software, falls sie gerade läuft.

    kill $(cat $HOME/greengrass/v2/alts/loader.pid)
  2. Erstellen Sie das Systemd-Benutzerdienstverzeichnis.

    mkdir -p $HOME/.config/systemd/user
  3. Erstellen Sie die Servicedatei unter $HOME/.config/systemd/user/greengrass.service mit dem folgenden Inhalt.

    [Unit] Description=Greengrass Core [Service] Type=simple PIDFile=%h/greengrass/v2/alts/loader.pid RemainAfterExit=no Restart=on-failure RestartSec=10 ExecStart=/bin/sh %h/greengrass/v2/alts/current/distro/bin/loader Environment="JAVA_HOME=/path/to/java" [Install] WantedBy=default.target

    In Systemd-Benutzereinheitendateien %h ist dies ein Spezifizierer, der in das Home-Verzeichnis des Benutzers aufgelöst wird, der den Dienst ausführt.

    Ersetzen Sie es /path/to/java durch den Pfad zu Ihrer Java-Installation.

  4. Aktivieren und starten Sie den Dienst.

    systemctl --user daemon-reload systemctl --user enable greengrass.service systemctl --user start greengrass.service
Verhalten beim Neustart und beim OTA-Update

Das Verhalten hängt davon ab, ob Sie einen Systemd-Benutzerdienst konfiguriert haben.

Mit einem Benutzerdienst
  • Geräteneustart — Die AWS IoT Greengrass Core-Software wird automatisch gestartet, wenn sich der Benutzer anmeldet.

  • OTA-Update — OTA-Updates sind erfolgreich und die Software wird automatisch neu gestartet.

Ohne Benutzerdienst
  • Geräteneustart — Die AWS IoT Greengrass Core-Software wird nicht automatisch neu gestartet. Sie müssen es manuell starten.

  • OTA-Update — OTA-Updates sind erfolgreich, aber Sie müssen die AWS IoT Greengrass Core-Software danach manuell starten.

Beschränkungen der Systemressourcen

Ressourcenbeschränkungen pro Komponente, die Cgroups verwenden, funktionieren in dieser Lösung nicht, da Benutzer, die keine Root-Benutzer sind, keine Cgroup-Verzeichnisse in erstellen können. /sys/fs/cgroup/ Wenn Sie eine Komponente mit konfigurierten Ressourcenlimits bereitstellen, ignoriert die AWS IoT Greengrass Core-Software die konfigurierten Grenzwerte.

Sie können die folgenden Alternativen verwenden, um die Ressourcennutzung zu verwalten:

  • Systemd-Benutzerdienstgrenzen — Wenn Sie die AWS IoT Greengrass Core-Software als Systemd-Benutzerdienst ausführen, können Sie der Servicedatei unter Ressourcenbeschränkungen hinzufügen. $HOME/.config/systemd/user/greengrass.service Diese Grenzwerte gelten für den gesamten Service, einschließlich des Greengrass-Kerns und aller Komponenten.

    MemoryMax=2G CPUQuota=100%
  • Greengrass Nucleus JVM-Grenzwerte — Sie können den Greengrass Nucleus-Prozessspeicher einschränken, indem Sie JVM-Optionen konfigurieren. Weitere Informationen finden Sie unter Konfiguration der AWS IoT Greengrass Core-Software.

Lösung 2: Ohne Benutzertrennung der Komponenten AWS IoT Greengrass V2 als Root-Benutzer einrichten

Verwenden Sie diese Lösung, wenn Sie Root-Zugriff für die Ersteinrichtung haben und möchten, dass die AWS IoT Greengrass Core-Software als Nicht-Root-Systemdienst ausgeführt wird, Sie Komponenten aber nicht als verschiedene Benutzer ausführen müssen. Dies ähnelt Lösung 1, aber die Software wird als Systemdienst ausgeführt, der beim Systemstart automatisch gestartet wird.

Kompromisse

Diese Lösung hat die folgenden Einschränkungen:

  • Keine Trennung der Komponenten durch Benutzer — Alle Komponenten werden unter demselben Benutzer ausgeführt, der die AWS IoT Greengrass Core-Software ausführt. Sie können die posixUser Konfiguration nicht verwenden, um Komponenten unter verschiedenen Benutzern auszuführen.

  • RequiresPrivilege ignoriert — Die AWS IoT Greengrass Core-Software ignoriert die RequiresPrivilege Option in den Komponentenrezepten. Komponenten können keine erhöhten Rechte anfordern.

Voraussetzungen

Diese Lösung erfordert:

  • Root-Zugriff für die Ersteinrichtung

  • systemd auf deinem Gerät

Zur Installation und Ausführung AWS IoT Greengrass V2 als Nicht-Root-Benutzer ohne Trennung der Komponenten durch Benutzer
  1. Gehen Sie wie folgt vorInstallieren Sie die AWS IoT Greengrass Core-Software mit automatischer Ressourcenbereitstellung: Richten Sie Ihre Geräteumgebung ein, geben Sie Anmeldeinformationen ein und laden Sie die AWS IoT Greengrass Core-Software herunter.

  2. Erstellen Sie einen Benutzer ohne Root-Rechte, der die AWS IoT Greengrass Core-Software und alle Komponenten ausführt.

    sudo useradd --create-home gg_non_root
  3. Melden Sie sich als Nicht-Root-Benutzer an und führen Sie das Installationsprogramm aus. Auf denselben Benutzer eingestellt--component-default-user. Verwenden Sie keinen Systemdienst sudo und richten Sie ihn nicht ein.

    java -Droot="/home/gg_non_root/greengrass/v2" -Dlog.store=FILE \ -jar ./GreengrassInstaller/lib/Greengrass.jar \ --aws-region region \ --thing-name MyGreengrassCore \ --thing-group-name MyGreengrassCoreGroup \ --thing-policy-name GreengrassV2IoTThingPolicy \ --tes-role-name GreengrassV2TokenExchangeRole \ --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \ --component-default-user gg_non_root \ --provision true \ --setup-system-service false
  4. Erstellen Sie als Root-Benutzer die Systemdienstdatei unter /etc/systemd/system/greengrass.service mit dem folgenden Inhalt.

    [Unit] Description=Greengrass Core After=network.target [Service] Type=simple User=gg_non_root PIDFile=/home/gg_non_root/greengrass/v2/alts/loader.pid RemainAfterExit=no Restart=on-failure RestartSec=10 ExecStart=/bin/sh -c "exec /home/gg_non_root/greengrass/v2/alts/current/distro/bin/loader >> /home/gg_non_root/greengrass/v2/logs/loader.log 2>&1" KillMode=mixed NoNewPrivileges=true ProtectSystem=strict ReadWritePaths=/home/gg_non_root/greengrass /tmp [Install] WantedBy=multi-user.target
  5. Stoppen Sie die laufende AWS IoT Greengrass Core-Instanz, aktivieren und starten Sie dann den Systemdienst.

    sudo systemctl daemon-reload sudo systemctl enable greengrass.service sudo systemctl start greengrass.service
Verhalten beim Neustart und beim OTA-Update

In dieser Lösung:

  • Die AWS IoT Greengrass Core-Software wird als Systemdienst ausgeführt und bei einem Ausfall oder einem Neustart des Geräts automatisch neu gestartet.

  • OTA-Updates für die AWS IoT Greengrass Core-Software funktionieren. Der Dienst wird automatisch als konfigurierter Nicht-Root-Benutzer neu gestartet.

Beschränkungen der Systemressourcen

Ressourcenbeschränkungen pro Komponente, die Cgroups verwenden, funktionieren in dieser Lösung nicht, da Benutzer ohne Linux-Fähigkeiten keine Cgroup-Verzeichnisse in erstellen können. /sys/fs/cgroup/ Wenn Sie eine Komponente mit konfigurierten Ressourcenlimits bereitstellen, ignoriert die AWS IoT Greengrass Core-Software die konfigurierten Grenzwerte.

Sie können die folgenden Alternativen verwenden, um die Ressourcennutzung zu verwalten:

  • Systemd-Servicebeschränkungen — Sie können der Systemdienstdatei unter /etc/systemd/system/greengrass.service Ressourcenlimits hinzufügen. Diese Grenzwerte gelten für den gesamten Service, einschließlich des Greengrass-Kerns und aller Komponenten.

    MemoryMax=2G CPUQuota=100%
  • Greengrass Nucleus JVM-Grenzwerte — Sie können den Greengrass Nucleus-Prozessspeicher einschränken, indem Sie JVM-Optionen konfigurieren. Weitere Informationen finden Sie unter Konfiguration der AWS IoT Greengrass Core-Software.

Lösung 3: AWS IoT Greengrass V2 Als Nicht-Root-Benutzer einrichten und dabei die einzelnen Benutzer trennen

Verwenden Sie diese Lösung, wenn Sie Root-Zugriff für die Ersteinrichtung haben, die AWS IoT Greengrass Core-Software aber als Nicht-Root-Benutzer ausgeführt werden soll und gleichzeitig die Möglichkeit haben soll, Komponenten unter verschiedenen Benutzern auszuführen. Diese Konfiguration verwendet Linux-Funktionen und Sudoers, damit Benutzer, die keine Root-Benutzer sind, beim Ausführen von Komponenten zu anderen Benutzern wechseln können.

Kompromisse

Diese Lösung hat die folgenden Einschränkungen:

  • Erfordert eine Sudoers-Konfiguration — Sie müssen Sudoers so konfigurieren, dass der AWS IoT Greengrass V2 Benutzer Befehle wie andere Benutzer ausführen kann.

Voraussetzungen

Für diese Lösung ist Folgendes erforderlich:

  • Root-Zugriff für die Ersteinrichtung

  • Systemd Version 229 oder höher, die unterstütztAmbientCapabilities. Führen systemctl --version Sie den Befehl aus, um Ihre Version zu überprüfen.

Um die Installation und Ausführung AWS IoT Greengrass V2 als Nicht-Root-Benutzer mit Benutzertrennung nach Komponenten durchzuführen
  1. Gehen Sie wie folgt vorInstallieren Sie die AWS IoT Greengrass Core-Software mit automatischer Ressourcenbereitstellung: Richten Sie Ihre Geräteumgebung ein, geben Sie Anmeldeinformationen ein und laden Sie die AWS IoT Greengrass Core-Software herunter.

  2. Erstellen Sie einen Benutzer ohne Root-Rechte, der die AWS IoT Greengrass Core-Software ausführen wird.

    sudo useradd --create-home gg_non_root
  3. Fügen Sie den Nicht-Root-Benutzer zu sudoers hinzu, damit er Befehle als Komponentenbenutzer ausführen kann. Erstellen Sie eine Datei unter. /etc/sudoers.d/gg_non_root

    gg_non_root ALL=(ggc_user:ggc_group) NOPASSWD: SETENV: /bin/sh, /bin/bash

    Wenn Sie Komponenten so konfigurieren, dass sie als zusätzliche Benutzer ausgeführt werdenposixUser, fügen Sie für jeden Benutzer einen Sudoers-Eintrag hinzu. Beispiel:

    gg_non_root ALL=(ggc_user:ggc_group) NOPASSWD: SETENV: /bin/sh, /bin/bash gg_non_root ALL=(another_user:another_group) NOPASSWD: SETENV: /bin/sh, /bin/bash
  4. Melden Sie sich als Nicht-Root-Benutzer an und führen Sie das Installationsprogramm aus. Verwenden Sie keinen Systemdienst sudo und richten Sie ihn nicht ein.

    java -Droot="/home/gg_non_root/greengrass/v2" -Dlog.store=FILE \ -jar ./GreengrassInstaller/lib/Greengrass.jar \ --aws-region region \ --thing-name MyGreengrassCore \ --thing-group-name MyGreengrassCoreGroup \ --thing-policy-name GreengrassV2IoTThingPolicy \ --tes-role-name GreengrassV2TokenExchangeRole \ --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \ --component-default-user ggc_user:ggc_group \ --provision true \ --setup-system-service false
  5. Erstellen Sie als Root-Benutzer die Systemdienstdatei unter /etc/systemd/system/greengrass.service mit dem folgenden Inhalt.

    [Unit] Description=Greengrass Core After=network.target [Service] Type=simple User=gg_non_root PIDFile=/home/gg_non_root/greengrass/v2/alts/loader.pid RemainAfterExit=no Restart=on-failure RestartSec=10 ExecStart=/bin/sh -c "exec /home/gg_non_root/greengrass/v2/alts/current/distro/bin/loader >> /home/gg_non_root/greengrass/v2/logs/loader.log 2>&1" KillMode=mixed AmbientCapabilities=CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_SETUID CAP_SETGID CAP_SYS_RESOURCE CAP_AUDIT_WRITE CapabilityBoundingSet=CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_SETUID CAP_SETGID CAP_SYS_RESOURCE CAP_AUDIT_WRITE ProtectSystem=strict ReadWritePaths=/home/gg_non_root/greengrass /tmp [Install] WantedBy=multi-user.target

    Informationen zu den erforderlichen Funktionen finden Sie unterLinux-Funktionen werden benötigt von AWS IoT Greengrass V2.

    • AmbientCapabilitiesgewährt dem Nicht-Root-Benutzer, der den Dienst ausführt, die angegebenen Linux-Funktionen. Dadurch kann die AWS IoT Greengrass Core-Software privilegierte Operationen wie das Wechseln von Benutzern beim Ausführen von Komponenten ausführen, ohne dass sie als Root ausgeführt wird.

    • CapabilityBoundingSetschränkt den maximalen Funktionsumfang ein, den der Dienst und seine untergeordneten Prozesse nutzen können. Funktionen, die nicht in diesem Satz enthalten sind, werden dauerhaft gelöscht.

    • ProtectSystem=strictmacht das gesamte Dateisystem für den Dienst schreibgeschützt, wodurch Änderungen am Betriebssystem verhindert werden.

    • ReadWritePathsgibt die einzigen Verzeichnisse an, in die der Dienst schreiben kann.

  6. Stoppen Sie die laufende AWS IoT Greengrass Core-Instanz, aktivieren und starten Sie dann den Systemdienst.

    sudo systemctl daemon-reload sudo systemctl enable greengrass.service sudo systemctl start greengrass.service
Verhalten beim Neustart und beim OTA-Update

In dieser Lösung:

  • Die AWS IoT Greengrass Core-Software wird als Systemdienst ausgeführt und bei einem Ausfall oder einem Neustart des Geräts automatisch neu gestartet.

  • OTA-Updates für die AWS IoT Greengrass Core-Software funktionieren. Der Dienst wird automatisch als konfigurierter Nicht-Root-Benutzer neu gestartet.

Beschränkungen der Systemressourcen

Die komponentenspezifischen Ressourcenbeschränkungen für Arbeitsspeicher und CPU funktionieren in dieser Lösung genauso wie bei der Ausführung der AWS IoT Greengrass Core-Software als Root-Benutzer.

Lösung 4: AWS IoT Greengrass V2 Als Root-Benutzer mit eingeschränkten Funktionen einrichten

Verwenden Sie diese Lösung, wenn Sie möchten, dass die AWS IoT Greengrass Core-Software als Root-Benutzer ausgeführt wird, jedoch mit eingeschränkten Linux-Funktionen. Diese Konfiguration bietet die volle Funktionalität der Ausführung als Root und begrenzt gleichzeitig die Angriffsfläche, indem die für die Software und ihre Komponenten verfügbaren Funktionen eingeschränkt werden.

Kompromisse

Bei dieser Lösung sind die folgenden Überlegungen zu berücksichtigen:

  • Komponenten mit RequiresPrivilege eingeschränkten Funktionen — Komponenten, die die Software verwenden, werden mit denselben eingeschränkten Funktionen RequiresPrivilege ausgeführt wie die AWS IoT Greengrass Core-Software und nicht mit vollen Root-Rechten.

Voraussetzungen

Diese Lösung erfordert:

  • Root-Zugriff

  • systemd auf deinem Gerät

Zur Installation und Ausführung AWS IoT Greengrass V2 als Root-Benutzer mit eingeschränkten Funktionen
  1. Gehen Sie wie folgt vorInstallieren Sie die AWS IoT Greengrass Core-Software mit automatischer Ressourcenbereitstellung: Richten Sie Ihre Geräteumgebung ein, geben Sie Anmeldeinformationen ein und laden Sie die AWS IoT Greengrass Core-Software herunter.

  2. Ändern Sie die Dienstvorlagendatei unterGreengrassInstaller/bin/greengrass.service.template, in dem Verzeichnis, in das Sie die AWS IoT Greengrass Core-Software heruntergeladen haben. Fügen Sie dem [Service] Abschnitt die folgenden Zeilen hinzu, bevor Sie das Installationsprogramm ausführen:

    CapabilityBoundingSet=CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_SETUID CAP_SETGID CAP_SYS_RESOURCE CAP_AUDIT_WRITE ProtectSystem=strict ReadWritePaths=/greengrass /tmp
    • CapabilityBoundingSetist eine Systemd-Sicherheitsfunktion, die die Linux-Funktionen einschränkt, die der AWS IoT Greengrass Core-Software und all ihren untergeordneten Prozessen zur Verfügung stehen. Durch die Konfiguration eines Bounding-Sets schränken Sie ein, was der Greengrass Nucleus-Prozess und seine Komponenten tun können, auch wenn sie als Root ausgeführt werden. Informationen zu den einzelnen Funktionen finden Sie unter. Linux-Funktionen werden benötigt von AWS IoT Greengrass V2

    • ProtectSystem=strictmacht das gesamte Dateisystem für den Dienst schreibgeschützt, wodurch Änderungen am Betriebssystem verhindert werden. Dadurch wird systemd-Sandboxing bereitgestellt, das Systemdateien auch dann schützt, wenn eine schädliche Komponente mit erhöhten Rechten ausgeführt wird.

    • ReadWritePathsgibt die einzigen Verzeichnisse an, in die der Dienst schreiben kann. Zusammen mit ProtectSystem=strict beschränkt dies den Dienst darauf, nur in das AWS IoT Greengrass V2 Stammverzeichnis und zu schreiben/tmp.

  3. Führen Sie das Installationsprogramm mit aus--setup-system-service true.

    sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \ -jar ./GreengrassInstaller/lib/Greengrass.jar \ --aws-region region \ --thing-name MyGreengrassCore \ --thing-group-name MyGreengrassCoreGroup \ --thing-policy-name GreengrassV2IoTThingPolicy \ --tes-role-name GreengrassV2TokenExchangeRole \ --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \ --component-default-user ggc_user:ggc_group \ --provision true \ --setup-system-service true
Verhalten bei Neustart und OTA-Update

In dieser Lösung:

  • Die AWS IoT Greengrass Core-Software wird als Systemdienst ausgeführt und bei einem Ausfall oder einem Neustart des Geräts automatisch neu gestartet.

  • OTA-Updates für die AWS IoT Greengrass Core-Software funktionieren. Die Software wird automatisch aktualisiert und neu gestartet.

Beschränkungen der Systemressourcen

Die komponentenspezifischen Ressourcenbeschränkungen für Arbeitsspeicher und CPU funktionieren in dieser Lösung genauso wie bei der Ausführung der AWS IoT Greengrass Core-Software als Root-Benutzer.

Linux-Funktionen werden benötigt von AWS IoT Greengrass V2

In der folgenden Tabelle werden die Linux-Funktionen beschrieben, die für die AWS IoT Greengrass Core-Software erforderlich sind, wenn sie in Nicht-Root-Konfigurationen ausgeführt wird. Diese Funktionen werden in den Lösungen 3 und 4 verwendet.

Erforderliche Linux-Funktionen
Funktion Description Erforderlich für

CAP_CHOWN

Nehmen Sie beliebige Änderungen an der Datei vor UIDs und GIDs

Änderung des Dateibesitzes je nachdem, welcher Benutzer die Komponente ausführt

CAP_DAC_OVERRIDE

Umgehen Sie die Lese-, Schreib- und Ausführungsberechtigungsprüfungen für Dateien

Erlaubt dem Greengrass Nucleus-Benutzer, Dateien auszuführen, wenn sie für Skripte verwendet werden mit RequiresPrivilege

CAP_DAC_READ_SEARCH

Umgehen Sie die Prüfungen der Datei-Leseberechtigungen und die Lese- und Ausführungsberechtigungsprüfungen für Verzeichn

Die Ordnerhierarchie durchgehen, auch wenn es sich um Ordner handelt, für die der Greengrass Nucleus-Benutzer keine Leserechte hat

CAP_FOWNER

Umgehen Sie Berechtigungsprüfungen bei Vorgängen, bei denen normalerweise die Dateisystem-UID des Prozesses mit der UID der Datei übereinstimmen muss

Umgehen von Dateibesitzprüfungen

CAP_SETUID

Nehmen Sie willkürliche Manipulationen am Prozess vor UIDs

sudoWird verwendet, wenn Skripte als ein anderer Benutzer ausgeführt werden als der Benutzer, der den Greengrass-Nucleus ausführt

CAP_SETGID

Nehmen Sie willkürliche Manipulationen am Prozess vor GIDs

sudoWird verwendet, wenn Skripte als eine andere Gruppe ausgeführt werden als die Gruppe, die den Greengrass-Kern ausführt

CAP_SYS_RESOURCE

Überschreiben Sie Ressourcenlimits

Festlegung von Ressourcenbeschränkungen für Komponentenprozesse, auch wenn in Bereitstellungen keine Grenzwerte angegeben sind

CAP_AUDIT_WRITE

Schreiben Sie Datensätze in das Kernel-Auditing-Protokoll

sudoErlaubt das Schreiben in das Kernel-Audit-Log