

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.

# Sicherheit und bewährte Methoden für Container-Jobs
<a name="containers-security"></a>

## Laufzeit ohne Roots
<a name="containers-security-rootless"></a>

Deadline Cloud läuft Docker im Rootless-Modus. Container-Aktionen werden als unprivilegierte `job-user` Identität ausgeführt und gewähren dem Worker keinen Root-Zugriff. Die verwaltete Docker Konfiguration aktiviert auch die `no-new-privileges` Einstellung und verwendet CDI für den GPU-Zugriff.

Fügen Sie keine privilegierten Container-Optionen, keine passwortlosen `sudo` Optionen und keinen Zugriff auf einen Root-eigenen Socket hinzu. Docker Mounten Sie den Docker Socket nicht innerhalb des Workload-Containers.

## Aufbau und Flucht von Befehlen
<a name="containers-security-command-construction"></a>

Bevorzugen Sie die Weiterleitung von Argumenten über Vektoren. Die standardmäßige Wrap-Umgebung `WrappedAction.Command` übergibt jeden Wert `WrappedAction.Args` als separate Argumente an. `docker container exec` Keine Shell analysiert diese Werte ein zweites Mal.

Interpolieren Sie keine rohen umschlossenen Werte in einen Befehl wie. `bash -c "{{WrappedAction.Command}} {{WrappedAction.Args}}"` Shell-Metazeichen in einem Befehl oder Argument können die Art und Weise ändern, wie die Shell diesen Befehl analysiert.

Wenn Sie einen Wert in Text einbetten müssen, den eine andere Sprache analysiert, verwenden Sie die Repräsentationsfunktion für diese Sprache:


| Parser | Funktion | Verwenden Sie | 
| --- | --- | --- | 
| POSIX-Shell | repr\_sh | Shell-Argumente und -Pfade. | 
| Python | repr\_py | Python-Literale, die in die Python-Quelle eingebettet sind. | 
| JSON | repr\_json | In ein JSON-Dokument eingebettete Werte. | 
| PowerShell | repr\_pwsh | PowerShellLiterale. | 
| Windows-Befehlsskripten | repr\_cmd | Werte, die analysiert wurden voncmd.exe. | 

Eine Repräsentationsfunktion schützt nur die Sprache, auf die sie abzielt. `repr_py`Erzeugt beispielsweise ein Python-Literal, kein Shell-Argument. Übergibt Jobparameter als Aktionsargumente, wenn die Anwendung bereits einen Argumentvektor akzeptiert.

Verweise `WrappedAction.*` nur in einem Wrap-Hooks `command` oder`args`. Eingebettete Dateien werden von allen Aktionen in der Umgebung gemeinsam genutzt, auch von `onEnter` und`onExit`, wenn Werte für umschlossene Aktionen nicht im Gültigkeitsbereich liegen. Halten Sie das eingebettete Wrap-Skript statisch und übergeben Sie ihm die umschlossene Aktion als Argumente.

## Bilder, Berechtigungen und Daten
<a name="containers-security-images"></a>
+ Verwenden Sie eine feste Image-Version oder einen Digest, sodass jede Sitzung den gewünschten Bildinhalt erhält.
+ Erteilen Sie Build-Identitäten die Erlaubnis, Bilder zu übertragen. Gewähren Sie Warteschlangen- und Flottenrollen schreibgeschützten Amazon ECR-Zugriff.
+ Speichern Sie keine AWS Anmeldeinformationen, Lizenzgeheimnisse oder privaten Schlüssel in einem Image.
+ Leiten Sie nur die Umgebungsvariablen weiter, die für den Workload erforderlich sind. Die Standard-Warteschlangenumgebung leitet eine Zulassungsliste mit nutzungsbasierten Lizenzvariablen weiter und leitet die Anmeldeinformationen des Hosts nicht weiter. AWS 
+ Hängen Sie nur die Verzeichnisse ein, die der Workload benötigt. Verwenden Sie schreibgeschützte Mounts für Eingabedaten, wenn keine Aktion zur Änderung dieser Daten erforderlich ist.
+ Stoppt nur den Container, der für die aktuelle Sitzung erstellt wurde. Beschneiden oder stoppen Sie keine Container auf dem Worker, die nichts miteinander zu tun haben.