ความเสี่ยงเซิร์ฟเวอร์ที่เชื่อมโยง


10

ฉันกำลังใช้คุณสมบัติใหม่ที่ต้องการข้อมูลจากฐานข้อมูลบนเซิร์ฟเวอร์หลายเครื่อง ฉันเพียงต้องการรวมข้อมูลจากเซิร์ฟเวอร์ทั้งหมดเหล่านี้และจัดเรียง ตัวเลือกสองตัวที่อยู่ในใจคือ:

  1. ใช้เซิร์ฟเวอร์ที่เชื่อมโยงและเขียนแบบสอบถามอย่างง่ายเพื่อรวมและเรียงลำดับข้อมูลซึ่งจะเรียกใช้จากเซิร์ฟเวอร์หนึ่งและรวบรวมข้อมูลจากเซิร์ฟเวอร์อื่น

  2. ใช้แอปพลิเคชันเพื่อรวบรวมข้อมูลจากเซิร์ฟเวอร์ทั้งหมดและส่งกลับไปยัง SQL Server เพื่อเรียงลำดับ (ไม่ต้องการใช้การเรียงลำดับในแอปพลิเคชัน)

เราเรียกใช้เซิร์ฟเวอร์ของเราในกลุ่มที่ใช้งาน / ใช้งานอยู่ใน SQL Server 2008 r2 ฐานข้อมูลทั้งหมดมีสิทธิ์เหมือนกันถ้าคุณมีสิทธิ์เข้าถึงฐานข้อมูล / เซิร์ฟเวอร์เดียวคุณมีสิทธิ์ทั้งหมด นี่เป็นแอปพลิเคชั่นหันหน้าสู่สาธารณะ (ซึ่งต้องมีการเข้าสู่ระบบของผู้ใช้)

การใช้เซิร์ฟเวอร์ที่เชื่อมโยงมีความเสี่ยงอะไรบ้าง มีข้อบกพร่องด้านความปลอดภัยที่ฉันควรจะเกี่ยวข้องกับ? มีปัญหาใด ๆ ในการใช้งานเซิร์ฟเวอร์ที่เชื่อมโยงในกลุ่มที่ใช้งานอยู่หรือไม่? จะมีปัญหาเรื่องประสิทธิภาพที่สำคัญเมื่อเทียบกับทางเลือกหรือไม่

ดูเหมือนจะมี "buzz" เชิงลบทั่วไปเกี่ยวกับเซิร์ฟเวอร์ที่เชื่อมโยง แต่ฉันไม่สามารถค้นหาสิ่งที่เป็นรูปธรรมที่จะทำให้ฉันเชื่อว่ามีข้อกังวลจริง ๆ


การอ้างอิงในอนาคตที่ดีที่สุดคือไม่โพสต์คำถามหลายครั้ง คุณมีความคิดเห็นเกี่ยวกับคำถามของคุณอยู่แล้วคุณสามารถตั้งค่าสถานะคำถามเพื่อให้ผู้ดูแลสนใจและขอให้พวกเขาโยกย้ายคำถามไปที่ DBA stackoverflow.com/questions/16045441/linked-server-risks

คำตอบ:


13

เซิร์ฟเวอร์ที่เชื่อมโยงสามารถทำงานได้ดีตราบใดที่คุณคำนึงถึงนัย:

  1. ความปลอดภัย: ข้อควรพิจารณาที่สำคัญคือหากคุณเชื่อมโยงเซิร์ฟเวอร์หากมีการบุกรุกเซิร์ฟเวอร์จะมีความเสี่ยงสูง แม้ว่าคุณจะมีหนังสือรับรองที่แตกต่างกันสำหรับผู้ใช้แต่ละคนเซิร์ฟเวอร์ที่แตกต่างกัน (ซึ่งจะหยุดการโจมตีที่แหล่งข้อมูลอื่น ๆ หากเวกเตอร์การโจมตีเพียงอย่างเดียวถูกรั่วไหล / ค้นพบ / ข้อมูลประจำตัวที่คาดเดา) ลิงก์สามารถข้ามสิ่งต่างๆ ลิงก์จะหลีกเลี่ยงการป้องกันที่ซ่อนฐานข้อมูลอื่นจากเครือข่ายสาธารณะเช่นกรณีที่เซิร์ฟเวอร์อย่างน้อยหนึ่งเซิร์ฟเวอร์ไม่ส่งข้อมูลไปยังส่วนต่อประสานสาธารณะดังนั้นโดยทั่วไปจะไม่สามารถมองเห็นผ่านไฟร์วอลล์ด้วยวิธีการใด ๆ คุณอาจคิดว่า "ดีความเสี่ยงในการจำลองแบบนั้นไม่เหมือนกันหรือไม่" คำตอบคือใช่แต่การจำลองแบบอยู่ระหว่างฐานข้อมูลแอปพลิเคชันแต่ละตัวและเส้นทางเซิร์ฟเวอร์ที่เชื่อมโยงอาจเป็นไปได้ที่จะประนีประนอมฐานข้อมูลอื่น ๆ บนเซิร์ฟเวอร์เดียวกันเนื่องจากลิงก์อยู่ในระดับเซิร์ฟเวอร์ไม่ใช่ระดับ DB (แน่นอนว่าคุณสามารถลดความเสี่ยงนี้ได้โดยการควบคุมผู้ใช้อย่างระมัดระวัง สิทธิ์ แต่อย่างน้อยคุณต้องระวังในการวางแผนของคุณ) หมายเหตุด้านความปลอดภัย: หากเซิร์ฟเวอร์ไม่ได้อยู่ในเว็บไซต์เดียวกันตรวจสอบให้แน่ใจว่าคุณใช้ VPN รูปแบบบางอย่างเพื่อเชื่อมโยงพวกเขาแทนที่จะทำให้ SQL Server พร้อมใช้งานในส่วนต่อประสานสาธารณะ

  2. แบนด์วิดท์: หากเซิร์ฟเวอร์ทั้งหมดอยู่ใน DC เดียวกันที่มีการเชื่อมต่อที่ดีรวดเร็วและไม่มีการเชื่อมต่อระหว่างกันคุณอาจไม่ต้องกังวลเกี่ยวกับเซิร์ฟเวอร์นี้ แต่ระวังให้มากขึ้นด้วยการเชื่อมต่อที่ห่างไกลโดยเฉพาะอย่างยิ่ง แบบสอบถามนี้มีความหลากหลาย การบีบอัดที่ระดับลิงค์ VPN จะช่วยได้มากที่นี่สำหรับชุดข้อมูลส่วนใหญ่ แต่โปรดทราบว่านี่จะเป็นค่าใช้จ่ายของเวลาแฝงที่มากขึ้นซึ่งอาจทำให้ปัญหาประสิทธิภาพแย่ลง (ดูด้านล่าง)

  3. ประสิทธิภาพ: หากคุณดึงข้อมูลลงไปในบรรทัดนี่ไม่ใช่ปัญหาใหญ่ (แต่ให้พิจารณาการล็อค: ดูประเด็นต่อไปของฉัน) แต่ทันทีที่คุณทำทุกอย่างด้วยการเข้าร่วมและอื่น ๆ มีข้อ จำกัด อะไรบ้าง ผู้วางแผนคิวรีสามารถทำได้เพื่อปรับแต่งคำขอของคุณให้เหมาะสม หากต้องการสร้างดัชนีจำนวนมากที่จะสร้างคิวรีที่ทำงานช้ามากหากเซิร์ฟเวอร์ไม่ได้อยู่ภายในเครื่องเนื่องจากเกิดเวลาแฝงของเครือข่าย (ปัญหาเดียวกันนี้เกิดขึ้นกับเซิร์ฟเวอร์ในพื้นที่เช่นกัน แต่ในระดับที่น้อยกว่า) และอาจใช้การสแกนดัชนีแทน (ปิดการใช้แบนด์วิดท์เพื่อผลประโยชน์ในการแฝง) แทนการใช้แบนด์วิดท์และหากล็อคไว้ (เพื่อหลีกเลี่ยงปัญหาการอ่านที่สกปรกเป็นต้น) สิ่งนี้จะส่งผลกระทบต่อส่วนอื่น ๆ ของแอปพลิเคชันด้วย

  4. การล็อค / การทำงานพร้อมกัน: การออกนอกเซิร์ฟเวอร์จะเพิ่มเวลาการสืบค้นซึ่งจะทำให้ปัญหาการล็อครุนแรงขึ้นซึ่งคุณอาจไม่ทราบว่าคุณมีและทำให้การทำงานพร้อมกันและการปรับขนาดของแอปพลิเคชันลดลงอย่างรุนแรง คุณจะต้องระมัดระวังเป็นอย่างมากหากใช้การสอบถามข้ามเซิร์ฟเวอร์ปกติและ / หรือใช้งานเป็นเวลานานซึ่งคุณต้องจับตามองปัญหาการล็อคและให้คำแนะนำผู้วางแผนตามความเหมาะสม

ตราบใดที่คุณมีบทบัญญัติเพียงพอในการจัดการปัญหาด้านความปลอดภัยและประสิทธิภาพฉันจะไม่เห็นปัญหากับการใช้เซิร์ฟเวอร์ที่เชื่อมโยงแม้ว่าอาจจะมีวิธีที่ดีกว่า / ปลอดภัยกว่า / เชื่อถือได้มากกว่า / ปลอดภัยกว่าง่ายกว่า ผลลัพธ์.


1

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

ในกรณีของคุณดูเหมือนจะไม่มีประโยชน์ใด ๆ ในการเขียนแอปพลิเคชันของคุณเองเนื่องจากจะยังคงต้องย้ายข้อมูล ดูเหมือนว่าคุณมีรูปแบบการอนุญาตที่ง่ายมากดังนั้นขึ้นอยู่กับสภาพแวดล้อมที่อาจจะคุ้มค่าในการตั้งค่าการอนุญาตพิเศษบางอย่างเพื่อไม่ให้มีการใช้ลิงก์ในที่ที่ไม่จำเป็นต้องใช้


0

เซิร์ฟเวอร์ที่เชื่อมโยงสร้างสถานะ "วิเศษ" เกือบสำหรับนักพัฒนา แต่มันสามารถกลายเป็นเรื่องง่ายมากที่จะเอาชนะเครือข่ายด้วยการสืบค้นเพียงครั้งเดียวซึ่งสามารถส่งคืนระเบียนนับแสนจากเซิร์ฟเวอร์ 5 เครื่องในคำขอเดียวและคุณสามารถล็อคระเบียนในเซิร์ฟเวอร์ทั้ง 5 เครื่องได้เช่นกัน ฉันจะไม่ยอมให้ใครนอกจาก DBA ที่มีประสบการณ์จะเขียนคำสั่งจนกว่าคุณจะได้ฝึกฝนนักพัฒนาชั้นนำ 1 หรือ 2 เกี่ยวกับอันตรายของการล็อคฐานข้อมูลทั้งหมดด้วยแบบสอบถามเดียว

เซิร์ฟเวอร์ที่เชื่อมโยงเป็นเหมือนยาเสพติดเมื่อคุณใช้มันคุณจะไม่ย้อนกลับไปและสงสัยว่าทำไมคุณไม่เคยใช้มันมาก่อน ฉันไม่เคยมีปัญหา แต่ฉันระมัดระวังอยู่เสมอ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.