|
|
Veröffentlicht am 23.12.2023 17:30:10
|
|
|
|

Vor .NET 8 liefen Container standardmäßig als Root, und ab .NET 8 enthalten alle unsere Linux-Container-Images Nicht-Root-Nutzer. Als Nicht-Root-Nutzer kannst du .NET-Container mit einer einzigen Codezeile hosten. Diese plattformweite Änderung wird Ihre Anwendung sicherer machen und .NET zu einem der sichersten Entwickler-Ökosysteme machen. Das ist eine kleine Änderung, aber sie hat großen Einfluss auf die Defense in Depth.
Verstehen Sie die UIDs und GIDs in Docker-Containern
Standardmäßig läuft der Prozess im Container mit Root-Benutzerrechten, und dieser Root-Benutzer ist derselbe Benutzer wie der Root auf der Host-Maschine. Klingt das nicht beängstigend, denn das bedeutet, dass ein Prozess, sobald er die richtige Chance hat, alles auf der Host-Maschine steuern kann!
Referenz:Der Hyperlink-Login ist sichtbar.
.NET 8 Docker-Abbild
Es gibt zwei Hauptänderungen am .NET 8 Docker-Image, wie folgt:
- Image erstellt ein neues App-Konto und eine neue Gruppe und führt die App standardmäßig mit dem App-Konto aus
- Auf Port 8080 gewechselt, stellte sich heraus, dass es Port 80 war, da Port 80 ein privilegierter Port ist, Root-Rechte erforderlich sind (zumindest an einigen Orten) erforderlich
Quellcode-Adresse des .NET Docker-Images:Der Hyperlink-Login ist sichtbar.
Die Abhängigkeiten sind wie folgt:
aspnet:8.0-bookworm-slim -> dotnet/runtime-8.0.0-bookworm-slim-amd64 -> dotnet/runtime-deps-8.0.0-bookworm-slim-amd64 -> amd64/debian:bookworm-slim
dotnet/runtime-deps-8.0.0-bookworm-slim-amd64 sieht so aus:
Wie unten gezeigt:
Verwenden Sie das App-Konto, um das Basisimage einzugeben, und der Befehl lautet wie folgt:
Geben Sie die aktuellen Benutzer- und Umweltvariablen aus, wie in der folgenden Abbildung dargestellt:
Referenz:Der Hyperlink-Login ist sichtbar.
Dockerfile-Datei
Wenn Sie Ihr Projekt in ein Docker-Image verpacken müssen, müssen Sie eine neue .NET 8 Docker-Container-Unterstützung erstellen, und die Standardkonfiguration der Dockerfile-Dateikonfiguration der Linux-Umgebung ist wie folgt:
Wenn Sie die Systemzeitzone in der Dockerfile einstellen, folgt folgender Code:
Der Fehler mit der verweigerten Genehmigung kann wie folgt auftreten:
4>F:\itsvse\Dockerfile : Fehler CTC1014: #21 [final 3/3] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone 4>F:\itsvse\Dockerfile : Fehler CTC1014: #21 0.314 ln: Konnte keinen symbolischen Link '/etc/localtime' erstellen: Berechtigung verweigert 4>F:\itsvse\Dockerfile : Fehler CTC1014: #21 FEHLER: Prozess "/bin/sh -c ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone" wurde nicht erfolgreich abgeschlossen: Ausgangscode: 1 4>F:\itsvse\Dockerfile : Fehler CTC1014: ------ 4>F:\itsvse\Dockerfile : Fehler CTC1014: > [final 3/3] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone: 4>F:\itsvse\Dockerfile : Fehler CTC1014: #21 0.314 ln: Konnte keinen symbolischen Link '/etc/localtime' erstellen: Berechtigung verweigert Verwenden Sie das Root-Konto, um die Zeitzone einzustellen, wechseln Sie dann zurück zum App-Konto und ändern Sie es wie folgt:
(Ende)
|
Vorhergehend:.NET/C#, um die ToLookup-Methode zu sammelnNächster:PHP erhält alle Header-Informationen
|