ดึงการอัปเดตอย่าดัน
ในขณะที่คุณปรับขนาดมันจะกลายเป็นเรื่องยากที่จะทำการผลักดันการอัปเดตไปยังผลิตภัณฑ์ทั้งหมดของคุณ
- คุณจะต้องติดตามลูกค้าทุกรายซึ่งแต่ละคนอาจมีการกำหนดค่าไฟร์วอลล์ที่แตกต่างกัน
- คุณจะต้องสร้างการเชื่อมต่อขาเข้าผ่านไฟร์วอลล์ของลูกค้าซึ่งจะต้องมีการส่งต่อพอร์ตหรือกลไกอื่นที่คล้ายคลึงกัน นี่คือความเสี่ยงด้านความปลอดภัยให้กับลูกค้าของคุณ
ให้ผลิตภัณฑ์ของคุณ 'ดึง' การอัปเดตเป็นระยะ ๆ จากนั้นคุณสามารถเพิ่มเซิร์ฟเวอร์ด้านความจุพิเศษเมื่อคุณเติบโต
อย่างไร?
ปัญหานี้ได้รับการแก้ไขแล้วตามที่คุณแนะนำ นี่คือวิธีการหลายวิธีที่ฉันสามารถคิดได้
- using apt : ใช้ระบบ apt ในตัวพร้อม PPA แบบกำหนดเองและรายการแหล่งข้อมูล ฉันจะตั้งค่า PPA ได้อย่างไร
- คอนดิชั่น:หากคุณไม่ใช้บริการโฮสติ้งสาธารณะเช่น Launchpad การตั้งค่าระบบบรรจุภัณฑ์ PPA + ของคุณเองนั้นไม่เหมาะกับคนใจร้อน
- using ssh : สร้างรหัสสาธารณะ SSH สำหรับแต่ละผลิตภัณฑ์แล้วเพิ่มรหัสของอุปกรณ์นั้นในเซิร์ฟเวอร์การอัพเดทของคุณ จากนั้นเพียงแค่มีซอฟต์แวร์
rsync
/ scp
ไฟล์ของคุณที่จำเป็น
- คอนดิชั่น:ต้องติดตาม (และสำรอง!) กุญแจสาธารณะทั้งหมดสำหรับแต่ละผลิตภัณฑ์ที่คุณส่งออกไป
- Pro : ความปลอดภัยมากกว่าการดาวน์โหลดแบบดิบเนื่องจากอุปกรณ์เดียวที่สามารถเข้าถึงการอัปเดตจะเป็นอุปกรณ์ที่ติดตั้งรหัสสาธารณะ
raw download + การตรวจสอบลายเซ็นต์ :
- โพสต์ไฟล์อัปเดตที่ลงชื่อบางแห่ง (Amazon S3, เซิร์ฟเวอร์ FTP ฯลฯ )
- ผลิตภัณฑ์ของคุณตรวจสอบไฟล์การอัพเดทที่จะมีการเปลี่ยนแปลงเป็นระยะ ๆ จากนั้นดาวน์โหลด / ตรวจสอบลายเซ็น
- คอนดิชั่น : ขึ้นอยู่กับวิธีที่คุณปรับใช้นี้ไฟล์อาจเข้าถึงได้แบบสาธารณะ(ซึ่งอาจทำให้ผลิตภัณฑ์ของคุณง่ายต่อการย้อนกลับของวิศวกรและแฮ็ค)
ansible : Ansible เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการจัดการการกำหนดค่าระบบ มันอยู่ในขอบเขตของหุ่นเชิด / พ่อครัว แต่ไม่ใช้เอเจนต์ (ใช้ python) และได้รับการออกแบบให้เป็น idempotent หากการปรับใช้ซอฟต์แวร์ของคุณต้องใช้สคริปต์ทุบตีที่ซับซ้อนฉันจะใช้เครื่องมือเช่นนี้เพื่อทำให้ซับซ้อนน้อยลงในการอัปเดตของคุณ
แน่นอนมีวิธีอื่นในการทำเช่นนี้ .. แต่มันทำให้ฉันถึงจุดสำคัญ
ลงชื่อเข้าใช้ / ตรวจสอบการอัปเดตของคุณ!
ไม่ว่าสิ่งที่คุณทำมันจำเป็นที่คุณต้องมีกลไกเพื่อให้แน่ใจว่าการอัปเดตของคุณไม่ได้รับการดัดแปลงด้วย ผู้ใช้ที่เป็นอันตรายสามารถปลอมตัวเป็นเซิร์ฟเวอร์การอัพเดทของคุณในการกำหนดค่าใด ๆ ข้างต้น หากคุณไม่ได้ตรวจสอบการอัปเดตของคุณกล่องของคุณเป็นมากง่ายต่อการตัดและได้รับเป็น
วิธีที่ดีในการทำเช่นนี้คือลงชื่อไฟล์อัปเดตของคุณ คุณจะต้องรักษาใบรับรอง (หรือจ่ายให้ใครบางคนทำ) แต่คุณจะสามารถติดตั้งลายนิ้วมือของคุณในแต่ละอุปกรณ์ของคุณก่อนที่คุณจะส่งพวกเขาออกเพื่อให้พวกเขาสามารถปฏิเสธการปรับปรุงที่ถูกดัดแปลง
ความปลอดภัยทางกายภาพ
แน่นอนว่าถ้าใครบางคนมีการเข้าถึงการปรับใช้ของลูกค้าพวกเขาสามารถยึดครองเซิร์ฟเวอร์ได้อย่างง่ายดาย แต่อย่างน้อยพวกเขาก็ไม่สามารถโจมตีการปรับใช้อื่น ๆ ได้! ความปลอดภัยทางกายภาพน่าจะเป็นความรับผิดชอบของลูกค้าของคุณ
หากคุณต้องการสักครู่ลองจินตนาการว่าจะเกิดอะไรขึ้นถ้าคุณใช้เครือข่าย OpenVPN ขนาดใหญ่เพื่อรับการอัปเดต ... จากนั้นพวกเขาสามารถใช้เซิร์ฟเวอร์ที่ถูกบุกรุกเพื่อโจมตีทุก ๆ อินสแตนซ์บน VPN
ความปลอดภัย
ไม่ว่าคุณจะทำอะไรระบบรักษาความปลอดภัยจะต้องสร้างขึ้นตั้งแต่แรก อย่าตัดมุมที่นี่ - คุณจะเสียใจในท้ายที่สุดถ้าคุณทำ
การรักษาความปลอดภัยของระบบอัพเดทนี้อยู่นอกขอบเขตของโพสต์นี้และฉันขอแนะนำให้จ้างที่ปรึกษาหากคุณหรือคนในทีมของคุณไม่มีความรู้ในเรื่องนี้ มันคุ้มค่าทุกเพนนี