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