มีเหตุผลที่ฉันไม่ควรตั้งเจ้าของ db เป็น [sa] หรือไม่?


15

เมื่อวานนี้ฉันถามคำถามนี้เกี่ยวกับการเปลี่ยน dbo ของหลายฐานข้อมูลที่ฉันมี การเปลี่ยนแปลงนั้นสมเหตุสมผล แต่ฉันต้องการชัดเจน

มีเหตุผลหรือสถานการณ์ที่ดีว่าทำไมฉันไม่ควรตั้งค่า dbo ของฐานข้อมูลเป็น [sa]?


1
FYI: เมื่อเปลี่ยนเจ้าของฐานข้อมูลหรือโดยเฉพาะอย่างยิ่งเมื่อคุณใช้สิ่งนี้กับฐานข้อมูลจำนวนมากพร้อมกันตรวจสอบให้แน่ใจว่าสคริปต์ของคุณมีข้อกำหนดเพื่อเชื่อมโยงผู้ใช้ฐานข้อมูลอีกครั้งกับการเข้าสู่ระบบของพวกเขา ทำการเปลี่ยนแปลงนี้ในช่วงปิดยอดถ้าเป็นไปได้
Jon Seigel

คำตอบ:


18

การทำให้ SA เป็นเจ้าของฐานข้อมูลทำให้ง่ายขึ้นและ / หรือแก้ไขสิ่งต่าง ๆ แต่สามารถมีผลกระทบด้านความปลอดภัยได้บ้าง

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

ซึ่งนำขึ้นจุดถัดไป: ไม่เคยทำเครื่องหมายฐานข้อมูลดังกล่าวเป็นที่น่าเชื่อถือเว้นแต่คุณจริงๆ , จริงๆแน่ใจว่ามันมีความปลอดภัย เพราะทุกคนที่มีความสามารถในการสร้างโพรซีเดอร์ในสคีมา [dbo] สามารถดำเนินการในรูปแบบ SA บนเซิร์ฟเวอร์ทั้งหมดหากต้องการ

ปัญหาอื่นอาจเกิดขึ้นเนื่องจากผลิตภัณฑ์และแอปพลิเคชันจำนวนมากที่มีฐานข้อมูล SQL Server ของตัวเองมักจะระบุว่าการเข้าสู่ระบบแอปพลิเคชันของพวกเขาจะต้องเป็น DBO ของฐานข้อมูล เห็นได้ชัดว่าคุณสามารถแก้ไขได้โดยการทำให้แอปพลิเคชันของพวกเขาเป็น 'SA' หวังว่าจะเห็นได้ชัดว่าคุณไม่ควรทำอย่างนั้นเว้นแต่ว่า SQL Server Instance นั้นไม่ได้ใช้สำหรับสิ่งอื่น (ถึงตอนนั้นฉันอยากจะแนะนำ)


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