Helm เป็นตัวจัดการแพ็คเกจสำหรับ Kubernetes อะไรทำนองนี้ apt-get
สำหรับอูบุนตู ในบันทึกนี้ เราจะเห็นเวอร์ชันก่อนหน้าของ helm (v2) พร้อมบริการตัวไถที่ติดตั้งตามค่าเริ่มต้น ซึ่งเราจะเข้าถึงคลัสเตอร์ผ่านทางนั้น
มาเตรียมคลัสเตอร์กัน โดยรันคำสั่ง:
kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash
สาธิต
- หากคุณไม่ได้กำหนดค่าใดๆ เพิ่มเติม helm v2 จะเริ่มบริการตัวช่วยซึ่งมี RBAC ที่มีสิทธิ์ผู้ดูแลระบบคลัสเตอร์เต็มรูปแบบ
- หลังจากติดตั้งในเนมสเปซ
kube-system
ปรากฏtiller-deploy
และยังเปิดพอร์ต 44134 ซึ่งเชื่อมโยงกับ 0.0.0.0 สามารถตรวจสอบได้โดยใช้ telnet
$ telnet tiller-deploy.kube-system 44134
- ตอนนี้คุณสามารถเชื่อมต่อกับบริการไถนาได้ เราจะใช้ไบนารีหางเสือเพื่อดำเนินการเมื่อสื่อสารกับบริการตัวไถ:
$ helm --host tiller-deploy.kube-system:44134 version
- เรามาลองรับความลับของคลัสเตอร์ Kubernetes จากเนมสเปซกันดีกว่า
kube-system
:
$ kubectl get secrets -n kube-system
- ตอนนี้เราสามารถสร้างแผนภูมิของเราเองได้ ซึ่งเราจะสร้างบทบาทที่มีสิทธิ์ของผู้ดูแลระบบและกำหนดบทบาทนี้ให้กับบัญชีบริการเริ่มต้น เมื่อใช้โทเค็นจากบัญชีบริการนี้ เราได้รับสิทธิ์เข้าถึงคลัสเตอร์ของเราโดยสมบูรณ์
$ helm --host tiller-deploy.kube-system:44134 install /pwnchart
- ตอนนี้เมื่อ
pwnchart
เมื่อปรับใช้แล้ว บัญชีบริการเริ่มต้นจะมีสิทธิ์การเข้าถึงระดับผู้ดูแลระบบโดยสมบูรณ์ เรามาตรวจสอบวิธีการรับความลับอีกครั้งkube-system
kubectl get secrets -n kube-system
การดำเนินการสคริปต์นี้ให้สำเร็จขึ้นอยู่กับวิธีการปรับใช้ Tiller บางครั้งผู้ดูแลระบบจะปรับใช้สคริปต์ในเนมสเปซที่แยกจากกันซึ่งมีสิทธิพิเศษที่แตกต่างกัน Helm 3 ไม่ไวต่อช่องโหว่ดังกล่าวเนื่องจาก... ไม่มีหางเสืออยู่ในนั้น
หมายเหตุของผู้แปล: การใช้นโยบายเครือข่ายเพื่อกรองการรับส่งข้อมูลในคลัสเตอร์จะช่วยป้องกันช่องโหว่ประเภทนี้
ที่มา: will.com