ตามแนวทางปฏิบัติที่ดีที่สุดของSQL Serverกล่าวว่า " โหมดการตรวจสอบ Windows มีความปลอดภัยมากกว่าการรับรองความถูกต้องของ SQL " และตอนนี้ฉันอยากรู้ว่า: มีวิธีปกป้อง SQL Server จากผู้ใช้ด้วยสิทธิ์ผู้ดูแลระบบ Windows หรือไม่?
ตามแนวทางปฏิบัติที่ดีที่สุดของSQL Serverกล่าวว่า " โหมดการตรวจสอบ Windows มีความปลอดภัยมากกว่าการรับรองความถูกต้องของ SQL " และตอนนี้ฉันอยากรู้ว่า: มีวิธีปกป้อง SQL Server จากผู้ใช้ด้วยสิทธิ์ผู้ดูแลระบบ Windows หรือไม่?
คำตอบ:
เลขที่
หากผู้ใช้เป็นผู้ดูแลระบบ Windows ของกล่องสมมติว่าพวกเขาเป็นเจ้าของทุกอย่างในกล่อง (รวมถึง SQL Server) ด้วยสิทธิ์ของผู้ดูแลของ Windows มันไม่ได้เป็นเรื่องที่จะข้ามการป้องกันการกำหนดเป้าหมายที่คุณใช้ (เช่นทริกเกอร์เข้าสู่ระบบที่ระบุชื่อผู้ใช้ของพวกเขา) โดยแอบอ้างเป็นคนอื่น (รวมทั้งNT AUTHORITY\SYSTEM
ที่ได้รับพฤตินัยสิทธิผู้ดูแลระบบในทุกกรณี SQL Server ท้องถิ่น ) การตรวจสอบจะไม่ช่วยอะไรมากนักเนื่องจากสามารถปิดได้ง่าย แต่คุณควรมีไว้ในกรณี
หากคุณไม่เชื่อใจใครสักคนอย่าให้สิทธิ์ผู้ดูแลระบบ Windows กับพวกเขาเป็นระยะเวลา
ไม่ไม่สามารถป้องกันผู้ดูแลระบบภายในจากการsysadmin
เข้าถึง SQL Server ได้
หากมีการเริ่มต้นอินสแตนซ์ใหม่ในโหมดผู้ใช้คนเดียว SQL Server จะถูกกำหนดค่าตายตัวเพื่อให้sysadmin
สิทธิ์ผู้ดูแลระบบภายในแม้ว่าจะไม่มีการเข้าสู่ระบบที่ชัดเจน เหตุผลที่มีอยู่นี้มีวัตถุประสงค์เพื่อการกู้คืนเพราะเป็นไปได้ที่จะล็อคตัวเองออกจากอินสแตนซ์
ที่กล่าวว่าการ จำกัด การเข้าถึงในขณะที่อินสแตนซ์กำลังทำงานในโหมดผู้ใช้หลายคน (โดยไม่มีการหยุดชะงักของบริการ) นั้นไม่ยาก ตามที่กล่าวไว้ใน Aaron ผู้ดูแลระบบในท้องถิ่นสามารถเลียนแบบNT AUTHORITY\SYSTEM
ซึ่งโดยค่าเริ่มต้นจะมีการsysadmin
เข้าสู่ระบบระดับที่สร้างขึ้นใน SQL Server 2008 ซึ่งสามารถนำไปใช้เพื่อกู้คืนsysadmin
การเข้าถึงในขณะที่เซิร์ฟเวอร์กำลังทำงานอยู่ (หมายเหตุ: ใน SQL Server 2012 การเข้าสู่ระบบนี้ไม่มีอีกต่อไปsysadmin
) ฉันไม่รู้ว่าการเข้าสู่ระบบนี้ใช้สำหรับอะไร (การอัพเกรด / การแก้ไขที่น่าสนใจ / ฯลฯ ซึ่งสันนิษฐานได้) แต่ฉันคิดว่ามันปลอดภัยที่จะปิดใช้งานยกเว้นในระหว่าง เหตุการณ์เหล่านั้น หากไม่มีการเข้าสู่ระบบที่ไม่มีตัวตนอื่น ๆ นั่นน่าจะเพียงพอที่จะปฏิเสธการเข้าถึง อีกครั้งเฉพาะในกรณีเช่นกำลังทำงานอย่างต่อเนื่อง
โดยค่าเริ่มต้นใน SQL 2008 และ 2012 ไม่มีการเข้าถึงเริ่มต้นสำหรับผู้ดูแลระบบ Windows ไปยัง SQL Server สำหรับผู้ดูแลระบบ Windows (เช่นใครบางคนที่เป็นทั้งผู้ดูแลโดเมนหรือผู้ดูแลท้องถิ่น) เพื่อให้สามารถเข้าถึงการเข้าสู่ระบบของพวกเขาจะต้องได้รับสิทธิ์การเข้าถึงอย่างชัดเจนหรือกลุ่มที่พวกเขาอยู่ในการเข้าถึงที่ได้รับสิทธิ์ คุณจะต้องทำการตั้งค่าอินสแตนซ์เพื่อระบุการเข้าสู่ระบบ Active Directory หนึ่งครั้งหรือกลุ่มในฐานะผู้ดูแลระบบ แต่การเข้าสู่ระบบ / กลุ่มนั้นสามารถเป็นใครก็ได้ในโดเมนของคุณ
ใน SQL 2005 มีBUILTIN\Administrators
กลุ่มที่มีสิทธิ์การเข้าถึงดูแลระบบ กลุ่มนี้จะช่วยให้ผู้ดูแลระบบท้องถิ่นดูแลระบบการเข้าถึง SQL Server กลุ่มนี้สามารถลบออกจาก SQL Server และได้รับการพิจารณาว่าเป็นแนวทางปฏิบัติที่ดีที่สุด
อย่างที่กล่าวไว้ไม่มีวิธีใดที่จะป้องกัน Windows (ภายในหรือโดเมน) ไม่ให้กระทบกับเซิร์ฟเวอร์ที่ SQL Server ใช้งานอยู่ ซึ่งหมายความว่าผู้ดูแลระบบยังสามารถส่งผลกระทบต่อบริการและการกำหนดค่าระดับระบบปฏิบัติการเปลี่ยนการรักษาความปลอดภัยไดเรกทอรีและงานระดับระบบปฏิบัติการอื่น นี่คือเหตุผลว่าทำไมพวกเขาถึงเป็นผู้ดูแลระบบ Windows
โดยทั่วไปคุณควรเชื่อถือผู้ดูแลระบบของคุณทั้ง SQL Server และ Windows ในขณะที่ผู้ดูแลระบบ Windows ไม่สามารถทำงานหรือเข้าถึงข้อมูล (โดยค่าเริ่มต้น) ภายใน SQL Server เองพวกเขายังคงควบคุมสภาพแวดล้อมที่ SQL Server ของคุณอาศัยอยู่ คุณต้องดูแลกับคนที่คุณมอบหมายให้กับบทบาทเหล่านั้น