ก่อนอื่น เฉพาะผู้ใช้ที่เชื่อถือได้เท่านั้นที่ได้รับอนุญาตให้ควบคุม Docker daemon ของคุณ
docker daemon ทำงานเป็นรูทโดยค่าเริ่มต้นในการติดตั้ง Debian Bullseye การเพิ่มผู้ใช้ใน นักเทียบท่า
กลุ่มให้สิทธิ์การเข้าถึงรูท psuedo แก่ผู้ใช้เนื่องจากมีการควบคุม docker daemon ที่มีจำนวนการเข้าถึงนั้น ผู้ใช้ทุกคนในกลุ่มนักเทียบท่าจะสามารถควบคุมโฮสต์และคอนเทนเนอร์อื่นๆ ได้อย่างสมบูรณ์ และสามารถเรียกใช้คอนเทนเนอร์ที่ --เผยแพร่
พอร์ตใดก็ได้
มีตัวเลือกไม่กี่ตัวในการรักษาความปลอดภัยให้กับการเข้าถึงนักเทียบท่าของผู้ใช้
- นักเทียบท่าไร้รูท
ซูโด
- เอพีไอ
1. นักเทียบท่าไร้รูท
ก การตั้งค่านักเทียบท่าที่ไม่มีรูท จะช่วยให้ผู้ใช้แต่ละคนเรียกใช้ docker deamon สำหรับพอร์ตที่ต่ำกว่า 1,024 จะต้องปฏิบัติตาม ข้อมูลพอร์ตที่ไม่มีสิทธิพิเศษ บ็อบจัดให้เนื่องจากผู้ใช้แต่ละคนจะ "เป็นเจ้าของ" เดมอนของตนเอง นักเทียบท่ายังมีให้ คำแนะนำที่เกี่ยวข้อง. สิ่งนี้จะไม่ทำให้แอนนาหยุดรับพอร์ตบ็อบส์
2. ซูโด
วิธีที่ง่ายที่สุดในการอนุญาตให้ผู้ใช้รันคำสั่งนักเทียบท่าคือการจัดเตรียมสคริปต์ควบคุมรูทผ่าน sudo ที่เป็นสแตติก หรือควบคุมอินพุตของผู้ใช้สำหรับอาร์กิวเมนต์ทางเลือก:
#!/bin/bash
นักเทียบท่าเรียกใช้ --detach --เผยแพร่ 1300:1300 anna/app-image
anna ALL=(root) NOPASSWD: /usr/local/bin/start-anna-image
หากคุณต้องการให้ผู้ใช้สามารถเพิ่มตัวเลือกของตนเองได้ คุณต้องระมัดระวังอย่างมากเกี่ยวกับการควบคุมการป้อนข้อมูลของพวกเขา เนื่องจากมันง่ายที่จะ
3. ปลั๊กอินการอนุญาตหรือ API สำหรับนักเทียบท่า
เนื่องจาก Docker ไม่มีชั้นการอนุญาตใดๆ บน daemon คุณต้องเพิ่มบางอย่างเพื่อควบคุมการเข้าถึงของผู้ใช้
นักเทียบท่ามีมาให้ในตัว ปลั๊กอินการอนุญาต กรอบงานเพื่อเปิดใช้งานสิ่งนี้ ตัวอย่างบางส่วนคือ opa-docker-authz และ casbin-authz-ปลั๊กอิน
คุณสามารถให้ผู้ใช้เข้าถึงรูปแบบของพร็อกซี API ที่ให้การรับรองความถูกต้องและการให้สิทธิ์เหนือสิ่งที่ส่งต่อไปยัง Docker REST API มีไลบรารีนักเทียบท่าสำหรับภาษาโปรแกรมส่วนใหญ่Kubernetes+RBAC เป็นตัวอย่างของ API ที่อยู่ด้านหน้าของ Docker daemon และควบคุมการเข้าถึง (เป็นเพียงอันที่ใหญ่/ซับซ้อนที่ทำได้มากกว่านั้นมาก)