เมื่อวานนี้ฉันถามคำถามนี้เกี่ยวกับการเปลี่ยน dbo ของหลายฐานข้อมูลที่ฉันมี การเปลี่ยนแปลงนั้นสมเหตุสมผล แต่ฉันต้องการชัดเจน
มีเหตุผลหรือสถานการณ์ที่ดีว่าทำไมฉันไม่ควรตั้งค่า dbo ของฐานข้อมูลเป็น [sa]?
เมื่อวานนี้ฉันถามคำถามนี้เกี่ยวกับการเปลี่ยน dbo ของหลายฐานข้อมูลที่ฉันมี การเปลี่ยนแปลงนั้นสมเหตุสมผล แต่ฉันต้องการชัดเจน
มีเหตุผลหรือสถานการณ์ที่ดีว่าทำไมฉันไม่ควรตั้งค่า dbo ของฐานข้อมูลเป็น [sa]?
คำตอบ:
การทำให้ SA เป็นเจ้าของฐานข้อมูลทำให้ง่ายขึ้นและ / หรือแก้ไขสิ่งต่าง ๆ แต่สามารถมีผลกระทบด้านความปลอดภัยได้บ้าง
โดยเฉพาะอย่างยิ่งจำไว้ว่าถ้า SA dbo = 'SA'
เป็นเจ้าของฐานข้อมูลแล้ว ซึ่งหมายความว่าในขั้นตอนอื่น ๆ ใน schema [dbo] (ซึ่งเป็นค่าเริ่มต้น) ที่มี "EXECUTE As Owner" อยู่ในตัวพวกมันกำลังดำเนินการในฐานะ SA ที่ไม่ได้ค่อนข้างดีเท่าที่มันฟังเพราะถ้าคุณได้ทำเครื่องหมายฐานข้อมูลเป็นที่น่าเชื่อถือ, SQL Server จะไม่ปล่อยให้เซสชั่นหรืองานออกจากฐานข้อมูลที่มีหลักเซิร์ฟเวอร์ระดับการเลียนแบบเช่นเดียวกับที่
ซึ่งนำขึ้นจุดถัดไป: ไม่เคยทำเครื่องหมายฐานข้อมูลดังกล่าวเป็นที่น่าเชื่อถือเว้นแต่คุณจริงๆ , จริงๆแน่ใจว่ามันมีความปลอดภัย เพราะทุกคนที่มีความสามารถในการสร้างโพรซีเดอร์ในสคีมา [dbo] สามารถดำเนินการในรูปแบบ SA บนเซิร์ฟเวอร์ทั้งหมดหากต้องการ
ปัญหาอื่นอาจเกิดขึ้นเนื่องจากผลิตภัณฑ์และแอปพลิเคชันจำนวนมากที่มีฐานข้อมูล SQL Server ของตัวเองมักจะระบุว่าการเข้าสู่ระบบแอปพลิเคชันของพวกเขาจะต้องเป็น DBO ของฐานข้อมูล เห็นได้ชัดว่าคุณสามารถแก้ไขได้โดยการทำให้แอปพลิเคชันของพวกเขาเป็น 'SA' หวังว่าจะเห็นได้ชัดว่าคุณไม่ควรทำอย่างนั้นเว้นแต่ว่า SQL Server Instance นั้นไม่ได้ใช้สำหรับสิ่งอื่น (ถึงตอนนั้นฉันอยากจะแนะนำ)