นโยบายเครือข่ายและเครือข่ายตามสิทธิ์น้อยที่สุด
จำกัดทราฟฟิกระหว่างคอนเทนเนอร์ด้วยนโยบายเครือข่ายที่ปฏิเสธเป็นค่าเริ่มต้น กฎอนุญาตที่ระบุชัดเจน และหลักสิทธิ์น้อยที่สุดที่นำมาใช้กับเครือข่าย
นโยบายเครือข่ายและเครือข่ายตามสิทธิ์น้อยที่สุด เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสแกนความปลอดภัยของอิมเมจคอนเทนเนอร์
- ความปลอดภัยของคอนเทนเนอร์ขณะทำงาน
- การจัดการข้อมูลลับและ RBAC
- นโยบายเครือข่ายและเครือข่ายตามสิทธิ์น้อยที่สุด