เหตุใดฐานข้อมูล MSDB จึงเชื่อถือได้


9

การTRUSTWORTHYตั้งค่าอาจค่อนข้างอันตรายหากคุณไม่ระวังและยกเว้นในบางกรณีคำแนะนำคือให้ปิดไว้ อย่างไรก็ตามโดยค่าเริ่มต้นMSDBฐานข้อมูลได้TRUSTWORHTYตั้งค่าไว้ONตามค่าเริ่มต้น ฉันสงสัยว่าทำไม

ฉันอ่านรายการนี้เป็นBOL แล้ว

หมายเหตุโดยค่าเริ่มต้นการตั้งค่า TRUSTWORTHY ถูกตั้งค่าเป็น ON สำหรับฐานข้อมูล MSDB การเปลี่ยนแปลงการตั้งค่านี้จากค่าเริ่มต้นอาจส่งผลให้เกิดพฤติกรรมที่ไม่คาดคิดโดยคอมโพเนนต์ของ SQL Server ที่ใช้ฐานข้อมูล MSDB

แต่ฉันอยากรู้เกี่ยวกับเฉพาะ ทำไมMSDBต้องTRUSTWORTHYเปิดใช้งานโดยเฉพาะ ฟังก์ชั่นใช้งานอะไร?


2
แค่คิดอย่างรวดเร็วโดยไม่มีการวิจัยว่าทำไมจึงเป็นเช่นนั้นบริการ SQL Agent สามารถโต้ตอบกับฐานข้อมูลทั้งหมดบนอินสแตนซ์เพื่อใช้จดหมาย DB สำหรับการแจ้งเตือนทรัพยากรภายนอกอื่น ๆ เส้นทาง, วัตถุโฆษณา, ฯลฯ ภายในงาน SQL Agent
Pimp Juice IT

1
@JUICED_IT ยังมีประวัติงาน SQL Agent, บันทึกการตรวจสอบสถานะการจัดส่งสินค้า, แพคเกจ SSIS, โปรแกรมช่วยแนะนำการปรับแต่งฐานข้อมูล, ข้อมูลคิวบริการ Broker และข้อมูลสำรอง นั่นเป็นหลายสิ่งที่คุณต้องการพฤติกรรมมาตรฐาน sqlperformance.com/2015/07/sql-maintenance/msdb
ConstantineK

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

คำตอบ:


3

มีวัตถุหลายสิบรายการในmsdbการอ้างอิงmasterฐานข้อมูล

หาก msdb ไม่ถูกทำเครื่องหมายเป็นTRUSTWORTHYผู้ใช้จะต้องได้รับอนุญาตจากทั้งmsdbวัตถุที่พวกเขากำลังโต้ตอบด้วยรวมถึงmasterวัตถุที่ถูกอ้างอิง

ตัวอย่างเช่นผู้ใช้ msdb ที่ได้รับสิทธิ์ผ่านบทบาทของฐานข้อมูล SQLAgentUserRole msdb.dbo.sp_enum_sqlagent_subsystemsจะได้รับการดำเนินการเกี่ยวกับ สแตกการเรียกสำหรับโพรซีเดอร์นั้นในที่สุดจะกระทบmaster:

* msdb.dbo.sp_enum_sqlagent_subsystems
    * msdb.dbo.sp_enum_sqlagent_subsystems_internal
        * master.dbo.xp_instance_regread

ถ้าmsdbไม่ได้ทำเครื่องหมายว่าเป็นTRUSTWORTHYผู้ใช้แล้วที่เป็นส่วนหนึ่งของบทบาทของฐานข้อมูล SQLAgentUserRole master.dbo.xp_instance_regreadยังจะต้องดำเนินการเกี่ยวกับการได้รับอนุญาต

เทคนิคการพูดมันอาจจะเป็นไปได้ที่จะเอาTRUSTWORTHYการตั้งค่าในและแทนที่จะให้สิทธิ์เฉพาะในmsdb masterอย่างไรก็ตามสิทธิ์ที่จำเป็นเหล่านั้นไม่ได้จัดทำเป็นเอกสารหรือสนับสนุน


คุณอาจถูกต้อง แต่ถ้าเป็นเช่นนั้นมันสำคัญพอ ๆ กันที่เจ้าของ MSDB มีสิทธิ์เหล่านั้น
Kenneth Fisher

@KennethFisher น่าจะเป็น? ฉันมักจะไม่ยุ่งกับเจ้าของฐานข้อมูลสำหรับ msdb ดังนั้นฉันไม่แน่ใจ ฉันมักจะทิ้งมันไว้เป็น SA ฉันถูกต้องตามกฎหมายไม่ได้คิดอย่างนั้น
AMTwo

อ่า แต่ถ้าฉันมีสิทธิ์ที่ถูกต้องใน MSDB ฉันสามารถใช้การเข้าถึงนั้นร่วมกับ TRUSTWORTHY เพื่อครอบครองเซิร์ฟเวอร์ของคุณ :)
Kenneth Fisher

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