0Pricing
Docker & DevOps Fundamentals · บทเรียน

นโยบายเครือข่ายและเครือข่ายตามสิทธิ์น้อยที่สุด

จำกัดทราฟฟิกระหว่างคอนเทนเนอร์ด้วยนโยบายเครือข่ายที่ปฏิเสธเป็นค่าเริ่มต้น กฎอนุญาตที่ระบุชัดเจน และหลักสิทธิ์น้อยที่สุดที่นำมาใช้กับเครือข่าย

นโยบายเครือข่ายและเครือข่ายตามสิทธิ์น้อยที่สุด เป็นบทเรียน Docker & DevOps Fundamentals ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Docker & DevOps Fundamentals และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Docker & DevOps Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน

การเปิดทั้งหมดเป็นค่าเริ่มต้นมีความเสี่ยง

ตามค่าเริ่มต้น คอนเทนเนอร์ในคลัสเตอร์มักสื่อสารกับคอนเทนเนอร์อื่นได้ทั้งหมด หากพ็อดถูกเจาะ ผู้โจมตีก็อาจเข้าถึงฐานข้อมูลและบริการภายในได้อย่างอิสระ นโยบายเครือข่าย จะปิดช่องทางนี้

สิทธิ์เท่าที่จำเป็นสำหรับเครือข่าย

หลักการ สิทธิ์เท่าที่จำเป็น ใช้กับการรับส่งข้อมูลด้วย บริการควรยอมรับและสร้างการเชื่อมต่อเฉพาะที่จำเป็นจริง ๆ เท่านั้น ไม่มากไปกว่านั้น

นโยบายเครือข่ายคืออะไร

NetworkPolicy คือออบเจ็กต์ Kubernetes ที่เลือกพ็อดตามป้ายกำกับ และระบุว่าการรับส่งข้อมูลขาเข้าและขาออกใดได้รับอนุญาต โดยปลั๊กอิน CNI (Calico, Cilium) เป็นผู้บังคับใช้

คุณต้องมี CNI ที่บังคับใช้นโยบาย

เช่นเดียวกับที่อินเกรสต้องใช้คอนโทรลเลอร์ NetworkPolicies ก็ต้องใช้ CNI ที่รองรับด้วย หากปลั๊กอินไม่สนใจนโยบายเหล่านี้ กฎก็จะไม่ทำงานอย่างเงียบ ๆ

ปฏิเสธการรับส่งข้อมูลขาเข้าทั้งหมดเป็นค่าเริ่มต้น

เริ่มต้นด้วยการปฏิเสธการรับส่งข้อมูลขาเข้าทั้งหมดไปยังเนมสเปซ แล้วจึงเปิดเฉพาะสิ่งที่จำเป็น ค่า podSelector ที่ว่างเปล่าจะจับคู่กับพ็อดทุกตัว

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-ingress
spec:
  podSelector: {}
  policyTypes:
  - Ingress

อนุญาตการรับส่งข้อมูลเฉพาะที่กำหนด

ตอนนี้อนุญาตให้เฉพาะพ็อดส่วนหน้าเข้าถึง API ที่พอร์ต 8080 ได้ ส่วนอื่นทั้งหมดจะยังถูกบล็อก

spec:
  podSelector:
    matchLabels:
      app: api
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend
    ports:
    - port: 8080

การจำกัดการรับส่งข้อมูลขาออก

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

spec:
  podSelector:
    matchLabels:
      app: api
  policyTypes:
  - Egress
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: db

ตัวเลือกเนมสเปซ

กฎสามารถจับคู่ด้วย namespaceSelector เพื่ออนุญาตการรับส่งข้อมูลข้ามเนมสเปซเฉพาะจากเนมสเปซที่เชื่อถือได้ เหมาะสำหรับบริการแพลตฟอร์มที่ใช้ร่วมกัน

from:
- namespaceSelector:
    matchLabels:
      team: platform

การอนุญาต DNS

จุดที่มักพลาดคือ การปฏิเสธการรับส่งข้อมูลขาออกทั้งหมดเป็นค่าเริ่มต้นอย่างเข้มงวดจะบล็อก DNS ด้วย ทำให้การแปลงชื่อใช้งานไม่ได้ อย่าลืมอนุญาต UDP/TCP 53 ไปยัง kube-dns

egress:
- to: []
  ports:
  - protocol: UDP
    port: 53

นอกเหนือจาก Kubernetes

ผู้ใช้ Docker จะได้รับประโยชน์ที่เกี่ยวข้องจาก เครือข่ายที่ผู้ใช้กำหนดเอง เช่นกัน โดยมีเพียงคอนเทนเนอร์ในเครือข่ายเดียวกันเท่านั้นที่เข้าถึงกันได้ จึงแยกแอปที่ไม่เกี่ยวข้องออกจากกัน

docker network create --internal backend

แนวคิดไม่ไว้วางใจโดยค่าเริ่มต้น

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

ตรวจสอบความเข้าใจ

กลยุทธ์เริ่มต้นที่เหมาะสมสำหรับนโยบายเครือข่ายคืออะไร

สรุปทบทวน

ตอนนี้คุณสามารถจำกัดการรับส่งข้อมูลได้อย่างปลอดภัยแล้ว:

  • ใช้การ ปฏิเสธทั้งหมดเป็นค่าเริ่มต้น แล้วเพิ่มกฎอนุญาตอย่างชัดเจน
  • ควบคุมทั้งการรับส่งข้อมูล ขาเข้า และ ขาออก ตามป้ายกำกับ/เนมสเปซ
  • อย่าลืมอนุญาต DNS และต้องมี CNI ที่บังคับใช้นโยบาย
  • เครือข่ายภายในของ Docker ให้การแยกออกจากกันในลักษณะคล้ายกัน

เครือข่ายที่ให้สิทธิ์เท่าที่จำเป็นช่วยลดขอบเขตความเสียหายจากการเจาะระบบ

คำถามที่พบบ่อย

บทเรียน “นโยบายเครือข่ายและเครือข่ายตามสิทธิ์น้อยที่สุด” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “นโยบายเครือข่ายและเครือข่ายตามสิทธิ์น้อยที่สุด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Docker & DevOps Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Docker & DevOps Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “นโยบายเครือข่ายและเครือข่ายตามสิทธิ์น้อยที่สุด”

จำกัดทราฟฟิกระหว่างคอนเทนเนอร์ด้วยนโยบายเครือข่ายที่ปฏิเสธเป็นค่าเริ่มต้น กฎอนุญาตที่ระบุชัดเจน และหลักสิทธิ์น้อยที่สุดที่นำมาใช้กับเครือข่าย คุณปฏิบัติ Docker & DevOps Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Docker & DevOps Fundamentals หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Docker & DevOps Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “นโยบายเครือข่ายและเครือข่ายตามสิทธิ์น้อยที่สุด” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Docker & DevOps Fundamentals นี้ได้ไหม

ได้ บทเรียน Docker & DevOps Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสแกนความปลอดภัยของอิมเมจคอนเทนเนอร์
  2. ความปลอดภัยของคอนเทนเนอร์ขณะทำงาน
  3. การจัดการข้อมูลลับและ RBAC
  4. นโยบายเครือข่ายและเครือข่ายตามสิทธิ์น้อยที่สุด
← กลับไปที่ Docker & DevOps Fundamentals