Avant .NET 8, les conteneurs fonctionnaient par défaut en tant que root, et à partir de .NET 8, toutes nos images de conteneurs Linux contiendront des utilisateurs non root. Vous pourrez héberger des conteneurs .NET avec une seule ligne de code en tant qu’utilisateur non-root. Ce changement au niveau de la plateforme rendra votre application plus sécurisée et fera de .NET l’un des écosystèmes de développeurs les plus sécurisés. C’est un petit changement, mais il a un impact important sur la défense en profondeur.
Comprendre les UID et les GID dans les conteneurs Docker
Par défaut, le processus dans le conteneur s’exécute avec les privilèges de l’utilisateur root, et cet utilisateur root est le même utilisateur que la racine de la machine hôte. Cela ne semble pas effrayant, car cela signifie qu’une fois qu’un processus dans un conteneur a la bonne chance, il peut tout contrôler sur la machine hôte !
Référence:La connexion hyperlientérée est visible.
Image Docker .NET 8
Il y a deux principaux changements à l’image Docker de .NET 8, comme suit :
- Image crée un nouveau compte et un nouveau groupe d’application, et lance l’application par défaut avec le compte applicatif
- En passant au port 8080, il s’est avéré que c’était le port 80, puisque le port 80 est un port privilégié, des privilèges racines sont nécessaires (du moins à certains endroits)
Adresse du code source de l’image Docker .NET :La connexion hyperlientérée est visible.
Les dépendances sont les suivantes :
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 ressemble à ceci :
Comme montré ci-dessous :
Utilisez le compte application pour entrer l’image de base, et la commande est la suivante :
Sortez les variables utilisateur et environnement actuelles, comme montré dans la figure suivante :
Référence:La connexion hyperlientérée est visible.
Fichier Dockerfile
Si vous devez empaqueter votre projet dans une image Docker, vous devez créer un nouveau support du conteneur Docker .NET 8, et la configuration par défaut du fichier Dockerfile de l’environnement Linux est la suivante :
Si vous définissez le fuseau horaire système dans le fichier Dockerfile, le code suivant apparaît :
L’erreur de refus peut se produire comme suit :
4>F :\itsvse\Dockerfile : erreur CTC1014 : #21 [3/3 final] EXÉCUTION ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/fuseau horaire 4>F :\itsvse\Dockerfile : erreur CTC1014 : #21 0.314 ln : failed to create symbolic link '/etc/localtime' : Permission refusée 4>F :\itsvse\Dockerfile : erreur CTC1014 : #21 ERREUR : process « /bin/sh -c ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone » n’a pas été terminé avec succès : code de sortie : 1 4>F :\itsvse\Dockerfile : erreur CTC1014 : ------ 4>F :\itsvse\Dockerfile : erreur CTC1014 : > [3/3 final] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/time : 4>F :\itsvse\Dockerfile : erreur CTC1014 : #21 0.314 ln : failed to create symbolic link '/etc/localtime' : Permission refusée Utilisez le compte racine pour définir le fuseau horaire, puis revenez au compte application, et modifiez-le comme suit :
(Fin)
|