ผลกระทบด้านความปลอดภัยและประสิทธิภาพของ“ สถานะเซิร์ฟเวอร์ดู”


13

คำถามนี้ชี้ให้เห็นว่าจำเป็นต้องได้รับอนุญาต "ดูสถานะเซิร์ฟเวอร์" สำหรับ DMV (มุมมองการจัดการแบบไดนามิก) ต่างๆ แต่ฉันไม่สามารถหาสิ่งที่คุณทำและไม่ต้องการให้สิทธิ์

ตอนนี้ฉันเข้าใจแล้วว่า "การอนุญาตน้อยที่สุด" และทำไมคุณไม่ต้องการให้ใครเลย แต่ฉันไม่สามารถหาแนวทางในการประเมินว่าควรได้รับอนุญาตหรือไม่

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

อัปเดต : ข้อบ่งชี้หนึ่งคือผู้ใช้จะสามารถใช้ DMV เพื่อดูข้อความค้นหาได้ หากการสืบค้นหรือพารามิเตอร์การสืบค้นสามารถมีข้อมูลที่เป็นความลับที่ผู้ใช้ไม่สามารถมองเห็นได้การอนุญาตให้ VIEW SERVER STATE อนุญาตให้ทำเช่นนั้นได้ (เช่น dob = หรือ ssn =)

คำตอบ:


5

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

เป็นไปได้ไหม อย่างแน่นอน. เป็นไปได้ไหม ฉันถูกบังคับให้ต้องบอกว่าไม่ แต่จำไว้ว่าประมาณว่า 90% ของการโจมตี บริษัท นั้นมาจากผู้โจมตีภายใน


3

ในฐานะผู้ดูแลระบบคุณจะเห็นข้อมูลนี้ว่าอยู่ในโดเมนของคุณ (การใช้งาน / การใช้ดัชนี / ฯลฯ ) แต่มีเหตุผลที่น่าสนใจที่องค์กรพัฒนาต้องการให้ข้อมูลนี้สำหรับระบบเดิมที่มีขนาดใหญ่ซึ่งสนับสนุนตารางระบุซอมบี้ที่สัมผัสเท่านั้น โดยกระบวนการบำรุงรักษาเช่น

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


1

เกี่ยวกับผลกระทบด้านประสิทธิภาพฉันไม่ได้ตระหนักถึงการอนุญาตนี้หรือการอนุญาตอื่นใด

เกี่ยวกับ:

พวกเขาทำอะไรได้บ้างพวกเขาอาจไม่ได้รับอนุญาตให้ทำ

พูดง่ายๆก็คือพวกเขาสามารถเห็นสิ่งต่าง ๆ ที่พวกเขาไม่ควรมองเห็น และอย่าคิดว่าเรื่องนี้เป็นเพียงแค่เซิร์ฟเวอร์ SQL สิทธิ์เฉพาะนี้ยังควบคุม DMV เช่นsys.dm_os_sys_infoและอีกไม่กี่แห่งที่ให้ข้อมูลเชิงลึกเกี่ยวกับเครื่องโฮสต์ (ฮาร์ดแวร์บริการ ฯลฯ ) คุณไม่เคยรู้ว่าข้อมูลใดที่สามารถใช้กับคุณได้ และแม้ว่าคุณจะโอเคกับใครบางคนที่เห็นทุกอย่างที่ได้รับอนุญาตจากการอนุญาตในตอนนี้บางครั้ง DMVs จะถูกเพิ่มใน Service Pack / การปรับปรุงที่สะสม

ฉันไม่สามารถหาคำแนะนำเกี่ยวกับวิธีการประเมินว่าควรได้รับอนุญาตหรือไม่

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

  1. สร้างโพรซีเดอร์ที่จัดเก็บและ / หรือหลายคำสั่ง TVF (s) เพื่อดำเนินการตามที่ต้องการ
  2. ให้สิทธิ์EXECUTEโมดูลเหล่านี้แก่ผู้ใช้และ / หรือบทบาทที่ต้องการเพื่อดำเนินการเหล่านี้
  3. สร้างใบรับรอง
  4. เซ็นชื่อโมดูลโดยใช้ใบรับรองนั้น (โดยใช้ADD SIGNATURE)
  5. คัดลอกใบรับรองไปยัง[master]ฐานข้อมูล (เช่นสร้างใบรับรอง[master]โดยใช้กุญแจสาธารณะของใบรับรองที่ใช้ในการเซ็นชื่อโมดูล
  6. สร้างการเข้าสู่ระบบจากใบรับรองที่คัดลอกไปยัง [master]
  7. ให้สิทธิ์ระดับอินสแตนซ์ใดก็ตามที่จำเป็นสำหรับการลงชื่อเข้าใช้แบบอิงใบรับรองนั้น (ซึ่งอาจรวมถึงการเพิ่มลงในบทบาทระดับอินสแตนซ์)

สำหรับตัวอย่างโปรดดู:


0

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

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


1
ใครบอกว่าพวกเขาแจกมันโดยไม่จำเป็น OP อาจต้องให้สิทธิ์แก่ใครบางคนในการตรวจสอบปัญหาที่เฉพาะเจาะจง (เช่นดูที่sys.dm_db_missing_index_details) และพวกเขาต้องการทราบว่ามีความเสี่ยงอะไรบ้าง
Martin Smith

ฉันเดาว่าฉันไม่มีเครื่องหมายกับคำถามนี้ฉันไม่เห็นสิ่งใดในคำถามที่ระบุถึงความจำเป็นในการขออนุญาต
Thomas Stringer

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