.NET › Docker & Containerization
Why is it recommended to run a containerized .NET application as a non-root user, and how do you configure this in a Dockerfile?
IntermediateAnswer
Running as root inside a container provides no additional privilege within the container itself, but if an attacker manages to escape the container's isolation (via a container runtime vulnerability), running as root significantly increases the potential impact, since the compromised process would have root privileges on the host in that failure scenario -- Microsoft's official aspnet images since .NET 8 include a built-in non-root 'app' user you can switch to explicitly.
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app/publish .
USER app # switch to the built-in non-root user
ENTRYPOINT ["dotnet", "MyApp.dll"]Real-world example A security audit flags several production containers running as root unnecessarily; adding a single USER app line to each Dockerfile closes this finding without any application code changes, since the base image already includes a properly configured non-root user.