Cyber Security Academy · บทเรียน

RBAC และบัญชีบริการ

จำกัดการเข้าถึงคลัสเตอร์ให้ปลอดภัย

บทเรียน 2 จาก 413 ขั้นตอน

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

RBAC ควบคุมทุกอย่าง

การควบคุมการเข้าถึงตามบทบาท (RBAC) เป็นตัวกำหนดว่าตัวตนใดทำการกระทำใดกับทรัพยากรใดในคลัสเตอร์ได้บ้าง การเรียก API ทุกครั้งจะได้รับการอนุญาตโดยตรวจสอบกับ RBAC การตั้งค่า RBAC ผิดพลาดเป็นสาเหตุหลักของการยกระดับสิทธิ์ภายในคลัสเตอร์

  • ตัวเรื่อง: ผู้ใช้ กลุ่ม และบัญชีบริการ
  • บทบาทผูกการกระทำเข้ากับทรัพยากร
  • การผูกสิทธิ์เชื่อมตัวเรื่องเข้ากับบทบาท

บทบาทเทียบกับ ClusterRoles

มีขอบเขตอยู่สองแบบ

  • Role + RoleBinding: สิทธิ์ที่มีขอบเขตเฉพาะเนมสเปซ
  • ClusterRole + ClusterRoleBinding: สิทธิ์ทั่วทั้งคลัสเตอร์

การผูก ClusterRoleBinding กับ cluster-admin คือการควบคุมทั้งหมด การมอบสิทธิ์นี้ให้บัญชีบริการเป็นข้อผิดพลาดที่พบบ่อยและอันตราย

โทเค็นบัญชีบริการ

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

คลัสเตอร์สมัยใหม่ออกโทเค็นแบบฉายที่มีอายุสั้นและผูกกับผู้รับ แต่โทเค็นลับแบบอายุยาวรุ่นเก่ายังคงหลงเหลืออยู่

# Inspect which service account a pod uses
kubectl get pod web -o jsonpath='{.spec.serviceAccountName}'

การตรวจสอบสิทธิ์ของคุณ

หลังจากได้โทเค็นมาแล้ว ขั้นตอนแรกคือเรียนรู้ว่าโทเค็นนั้นทำอะไรได้บ้าง Kubernetes มี API สำหรับตรวจสอบสิทธิ์ตนเอง

# What can this token do?
kubectl auth can-i --list

# Specific checks
kubectl auth can-i create pods
kubectl auth can-i create clusterrolebindings

การผสมผสานสิทธิ์ที่เป็นอันตราย

การกระทำบางอย่างเป็นพื้นฐานสำหรับการยกระดับสิทธิ์ แม้ไม่มี cluster-admin

  • create pods: จัดตารางพ็อดที่มีสิทธิ์สูงหรือใช้ hostPath เพื่อหลบหนี
  • create pods/exec: เรียกใช้คำสั่งในพ็อดที่มีอยู่
  • get/list secrets: อ่านข้อมูลรับรองทั่วทั้งคลัสเตอร์
  • create rolebindings/clusterrolebindings: ผูกตัวคุณเองเข้ากับผู้ดูแลระบบ
  • escalate / bind: มอบสิทธิ์ที่คุณไม่มีให้แก่ตนเอง
  • การสวมรอยตัวตน: ดำเนินการในฐานะตัวเรื่องอื่นที่มีสิทธิ์สูงกว่า

การยกระดับสิทธิ์ผ่านการสร้างพ็อด

หากบัญชีบริการสามารถสร้างพ็อดได้ บัญชีนั้นก็มักจะยึดครองโหนดได้ ผู้โจมตีจะจัดตารางพ็อดที่เมานต์ระบบไฟล์ของโฮสต์หรือทำงานด้วยสิทธิ์สูง จากนั้นอ่านข้อมูลรับรองของโหนดหรือหลบหนีออกมา

# Pod spec snippet that mounts the host root
# volumes: hostPath path: /  ;  container mounts it at /host
kubectl apply -f evil-pod.yaml
kubectl exec -it evil -- chroot /host bash

การยกระดับสิทธิ์ผ่านการผูกสิทธิ์

หากคุณสามารถสร้าง RoleBinding (หรือ ClusterRoleBinding) ได้ คุณอาจผูกบัญชีบริการของคุณเข้ากับ cluster-admin โดยตรง Kubernetes ป้องกันกรณีนี้ด้วยการกระทำ bind/escalate แต่บางครั้งบทบาทที่ตั้งค่าผิดพลาดก็เปิดให้ทำได้

# Bind a service account to cluster-admin (if permitted)
kubectl create clusterrolebinding pwn \
  --clusterrole=cluster-admin \
  --serviceaccount=default:web

การใช้การสวมรอยตัวตนในทางที่ผิด

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

# Act as a privileged user via impersonation
kubectl get secrets --as=admin-user --as-group=system:masters

การตรวจสอบ RBAC

ฝ่ายป้องกันควรทบทวน RBAC อย่างต่อเนื่องเพื่อค้นหาการมอบสิทธิ์ที่มีความเสี่ยง

  • ค้นหาตัวเรื่องที่ถูกผูกกับ cluster-admin
  • ทำเครื่องหมายการกระทำหรือทรัพยากรที่ใช้ไวลด์การ์ด (*)
  • ตรวจจับการมอบสิทธิ์อ่านข้อมูลลับและสร้างพ็อดให้กับบัญชีที่ไม่ใช่ผู้ดูแลระบบ
# Tools to audit RBAC
kubectl-who-can create pods
rbac-tool analysis
rakkess --as=system:serviceaccount:default:web

การเสริมความแข็งแกร่งให้บัญชีบริการ

ใช้หลักสิทธิ์น้อยที่สุดกับตัวตนต่าง ๆ

  • กำหนด automountServiceAccountToken: false ในกรณีที่พ็อดไม่จำเป็นต้องเข้าถึง API
  • มอบบัญชีบริการเฉพาะที่มีขอบเขตน้อยที่สุดให้แก่ภาระงานแต่ละรายการ
  • หลีกเลี่ยงบัญชีบริการ default กับภาระงานจริง
  • ใช้โทเค็นแบบฉายที่มีอายุสั้นและมีผู้รับ พร้อมหมุนเวียนและผูกโทเค็นเหล่านั้น
  • อย่าผูกภาระงานเข้ากับ cluster-admin

การทดสอบ RBAC อย่างมีจริยธรรม

เมื่อประเมิน RBAC ให้เลือกการตรวจสอบที่ไม่ก่อให้เกิดความเสียหาย (auth can-i, การทดลองโดยไม่ดำเนินการจริง) แทนการสร้างการผูก cluster-admin ในระบบจริง หากจำเป็นต้องพิสูจน์การยกระดับสิทธิ์ ให้จำกัดการทดสอบไว้ในเนมสเปซทดสอบและลบการผูกหรือพ็อดที่คุณสร้างขึ้น

รายงานบทบาทและการผูกสิทธิ์ที่แน่นอนซึ่งทำให้เกิดการยกระดับสิทธิ์ เพื่อให้สามารถปรับให้รัดกุมยิ่งขึ้น

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ตรวจสอบความเข้าใจ RBAC ของคุณ

สรุปทบทวน

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

  • RBAC ผูกตัวเรื่องเข้ากับการกระทำบนทรัพยากร ส่วน cluster-admin คือการควบคุมทั้งหมด
  • พ็อดเมานต์โทเค็น SA และ auth can-i เปิดเผยขอบเขตการเข้าถึงของพ็อด
  • การสร้างพ็อด การผูกสิทธิ์ การอ่านข้อมูลลับ และการสวมรอยตัวตนเป็นพื้นฐานสำหรับการยกระดับสิทธิ์
  • บัญชีที่มีสิทธิ์น้อยที่สุดและการปิดการเมานต์อัตโนมัติช่วยเสริมความแข็งแกร่งให้คลัสเตอร์

ถัดไป: ความปลอดภัยของพ็อดและนโยบายเครือข่าย

เริ่มต้นได้ฟรี

เรียนรู้ Cyber Security Academy ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
76
บทเรียน
303

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

บทเรียน “RBAC และบัญชีบริการ” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “RBAC และบัญชีบริการ”

จำกัดการเข้าถึงคลัสเตอร์ให้ปลอดภัย คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่

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

บทเรียน “RBAC และบัญชีบริการ” ใช้เวลานานแค่ไหน

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

ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม

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

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

  1. แบบจำลองภัยคุกคาม Kubernetes
  2. RBAC และบัญชีบริการ
  3. ความปลอดภัยของพ็อดและนโยบายเครือข่าย
  4. การรักษาความปลอดภัยห่วงโซ่อุปทานและข้อมูลลับ
← กลับไปที่ Cyber Security Academy