.NETDocker

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

เรื่องที่เกี่ยวข้อง - .NET Core, ASP.NET, 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

เริ่มต้นยุค AI ด้วยคอร์สฟรี และพรีเมี่ยม กับพล

หากชอบสิ่งที่พลเล่า เรื่องที่พลสอน สามารถสนับสนุนพลโดยการเข้าเรียนคอร์สออนไลน์ของพลนะคร้าบ

  • เข้าใจง่าย ใช้ได้จริง ออกแบบการสอนอย่างเข้าใจโดยโค้ชพล
  • มีคอร์สสำหรับคนใช้งานทั่วไป จนถึงเรียนรู้เพื่อใช้งานในสายอาชีพขั้นสูง
  • ทุกคอร์สมีใบประกาศณียบัตรรับรองหลังเรียนจบ

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save