.NETDocker

วิธีเสริมความปลอดภัยให้ ASP.NET Core ใน Docker

เรื่องที่เกี่ยวข้อง - , , ,

ASP.NET Core นั้นมาแรงทีเดียวกับการใช้พัฒนาเว็บแอพพลิเคชั่นในปัจจุบันด้วย C#.NET และการเอามาใช้งานกับ Docker ได้ก็ยิ่งเพิ่มความสะดวกสบายขึ้นไปอีก

ทีนี้พลไปเจอเทคนิคเสริมความปลอดภัยให้กับ ASP.NET Core ที่รันบน Docker มาครับ โดยเทคนิคนี้เป็นของ Muhammad Rehan Saeed ที่แชร์กันในกลุ่ม

เลยขอสรุปวิธีการเป็นภาษาไทยมาให้ลองเอาไปใช้งานกันครับ

รัน ASP.NET Core แบบ Read-only

วิธีการของ Muhammad คือเราสามารถตั้งให้ Docker รันทำงานในโหมด Read-only อย่างเดียว เพื่อป้องกันผู้บุกรุกเข้ามาเปลี่ยนแปลงไฟล์ที่ deploy ลงไปใน Docker ไว้แล้ว

โดย Dockerfile สามารถเขียนได้แบบนี้

FROM microsoft/dotnet:2.2-sdk AS builder
WORKDIR /source
COPY *.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish --output /app/ --configuration Release

FROM microsoft/dotnet:2.2-aspnetcore-runtime
WORKDIR /app
COPY --from=builder /app .
ENTRYPOINT ["dotnet", "ReadOnlyTest.dll"]

ทีนี้ถ้าเรารัน docker โดยใช้คำสั่งทั่วไป แบบด้านล่าง

docker run --rm --read-only -it -p 8000:80 read-only-test

จะทำให้เกิด Error ต่อไปนี้ครับ

Failed to initialize CoreCLR, HRESULT: 0x80004005

ดังนั้น Muhammad เลยแนะนำว่า ควรรัน docker โดยเพิ่ม option ตัวหนึงที่ชื่อ COMPlus_EnableDiagnostics=0 เข้าไปในคำสั่ง

docker run --rm --read-only -it -p 8000:80 -e COMPlus_EnableDiagnostics=0 read-only-test

โดยค่าดังกล่าว จะปิดการทำงานของส่วน debugging และ profiling นั่นเอง ซึ่งการรัน Docker ขึ้นมาด้วยคำสั่งดังกล่าวจะทำให้เว็บแอพพลิเคชั่นที่สร้างจาก ASP.NET Core ทำงานได้อย่างไม่มีปัญหา แถมปลอดภัยเพิ่มขึ้นด้วยครับ

สนใจก็สามารถลองเอา source code จาก Repository นี้มาทดสอบดูครับผม

อ้างอิง – Securing ASP.NET Core in Docker

Loading Facebook Comments ...
Menu