คำแนะนำเกี่ยวกับสิทธิ์ของ SQL Server
สำหรับใครก็ตามที่จัดการฐานข้อมูล SQL Server การทำความเข้าใจสิทธิ์เป็นสิ่งสำคัญเพื่อให้แน่ใจว่ามีเพียงผู้ใช้ที่ได้รับอนุญาตเท่านั้นที่สามารถดูและแก้ไขข้อมูลได้
บทความนี้จะอธิบายสิทธิ์ SQL Server ประเภทต่างๆ รวมถึงสิทธิ์ผู้ใช้ระดับเซิร์ฟเวอร์และระดับฐานข้อมูล และให้คำแนะนำเกี่ยวกับวิธีการจัดการสิทธิ์เหล่านี้
ส่วนประกอบสำคัญของการรักษาความปลอดภัยของ SQL Server
Microsoft SQL Server คือระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (DBMS) ที่รองรับการประมวลผลธุรกรรม ระบบธุรกิจอัจฉริยะ และแอปพลิเคชันการวิเคราะห์ที่หลากหลายในสภาพแวดล้อมไอทีขององค์กร Microsoft SQL Server เป็นหนึ่งในสามเทคโนโลยีฐานข้อมูลชั้นนำของตลาด
SQL Server มีองค์ประกอบความปลอดภัยหลักสามองค์ประกอบที่ช่วยให้ DBA และผู้ดูแลระบบสามารถควบคุมว่าผู้ใช้สามารถเข้าสู่ระบบเซิร์ฟเวอร์ได้ ข้อมูลใดบ้างที่พวกเขาสามารถเข้าถึง และการดำเนินการใดที่พวกเขาได้รับอนุญาตให้ดำเนินการกับข้อมูลนั้น ส่วนประกอบเหล่านี้คือ:
- หลักความปลอดภัย — บุคคลหรือกระบวนการที่ได้รับอนุญาตให้เข้าถึงอินสแตนซ์ SQL Server เฉพาะ
- ความปลอดภัย — ทรัพยากรเซิร์ฟเวอร์และฐานข้อมูลที่ได้รับการควบคุมการเข้าถึง
- สิทธิ์ — ประเภทของการเข้าถึงที่ตัวการมีต่อความปลอดภัยเฉพาะ
อาจารย์ใหญ่ฝ่ายความมั่นคง
หลักการรักษาความปลอดภัยคือข้อมูลเฉพาะตัวที่ใช้ SQL Server และสามารถให้สิทธิ์ในการเข้าถึงและแก้ไขข้อมูลได้ Principals อาจเป็นบุคคล กลุ่มผู้ใช้ บทบาท หรือเอนทิตีที่ได้รับการปฏิบัติเหมือนเป็นบุคคล (เช่น dbowner, dbo หรือ sysadmin)
หลักการรักษาความปลอดภัยสามารถสร้างและจัดการได้สองวิธี:
SQL Server Management Studio (SSMS) — สภาพแวดล้อมนี้สร้างขึ้นสำหรับการจัดการโครงสร้างพื้นฐาน SQL ต่างๆ รวมถึง SQL Server และฐานข้อมูล Azure SQL SMSS มีเครื่องมือสำหรับ:
- การกำหนดค่า SQL Server และฐานข้อมูล การตรวจสอบ และการดูแลระบบอินสแตนซ์
- การปรับใช้ ตรวจสอบ และอัปเกรดส่วนประกอบแอปพลิเคชันระดับข้อมูล
- การสร้างแบบสอบถามและสคริปต์
การรักษาความปลอดภัยตามบทบาท
SQL Server รองรับการควบคุมการเข้าถึงตามบทบาทสำหรับหลักความปลอดภัย บทบาทคล้ายกับกลุ่มความปลอดภัยของ Microsoft Windows: คุณกำหนดบทบาทได้หลากหลาย กำหนดสิทธิ์และข้อจำกัด และเพิ่มผู้ใช้ให้กับบทบาทเซิร์ฟเวอร์ที่สอดคล้องกับหน้าที่งานของพวกเขา สิทธิ์ที่กำหนดให้กับบทบาทใดบทบาทหนึ่งจะได้รับการสืบทอดโดยสมาชิกทุกคนในบทบาทนั้น ดังนั้นจึงไม่จำเป็นต้องสร้างและจัดการชุดสิทธิ์เฉพาะสำหรับผู้ใช้แต่ละราย
สามารถใช้ทั้งบทบาทระดับเซิร์ฟเวอร์และระดับฐานข้อมูล
บทบาทระดับเซิร์ฟเวอร์
ตามชื่อที่แสดง บทบาทเซิร์ฟเวอร์อนุญาตให้คุณให้สิทธิ์ระดับเซิร์ฟเวอร์ บทบาทของเซิร์ฟเวอร์มีสองประเภท:
- บทบาทของเซิร์ฟเวอร์แบบคงที่ — SQL Server มีบทบาทเซิร์ฟเวอร์แบบคงที่เก้าบทบาท คุณสามารถมอบหมายบทบาทหลักให้กับบทบาทเหล่านี้ได้ แต่คุณไม่สามารถเปลี่ยนสิทธิ์ของบทบาทได้ บทบาทของเซิร์ฟเวอร์แบบคงที่มีความสะดวกและรองรับความเข้ากันได้แบบย้อนหลัง แต่แนะนำให้ใช้บทบาทที่ผู้ใช้กำหนดทุกครั้งที่เป็นไปได้ เนื่องจากช่วยให้คุณปรับแต่งสิทธิ์ได้อย่างละเอียด โปรดทราบว่าฐานข้อมูล SQL ไม่ รองรับบทบาทของเซิร์ฟเวอร์แบบคงที่ อย่างไรก็ตาม มีสองบทบาท dbmanager และ loginmanager ที่ทำงานเหมือนกับบทบาทของเซิร์ฟเวอร์
- บทบาทของเซิร์ฟเวอร์ที่ผู้ใช้กำหนด — คุณสามารถมอบหมายหลักการและเปลี่ยนสิทธิ์ของบทบาทได้
การสร้างบทบาทเซิร์ฟเวอร์ที่ผู้ใช้กำหนดนั้นง่ายดาย:
- สร้างบทบาทโดยใช้คำสั่งนี้:
CREATE SERVER ROLE serverrole- ให้สิทธิ์แก่บทบาทโดยใช้คำสั่งตามตัวอย่างนี้:
GRANT ALTER ANY DATABASE TO serverrole- เพิ่มตัวการให้กับบทบาทโดยใช้คำสั่งนี้:
ALTER SERVER ROLE serverrole ADD MEMBER [testexampleuser]ทำซ้ำขั้นตอนที่ 2 และ 3 เพื่อให้สิทธิ์เพิ่มเติม และเพิ่มหลักการให้กับบทบาท
บทบาทระดับฐานข้อมูล
บทบาทฐานข้อมูลทำงานเหมือนกับบทบาทของเซิร์ฟเวอร์ ยกเว้นว่าจะอนุญาตให้คุณกำหนดสิทธิ์ระดับฐานข้อมูลแทนสิทธิ์ระดับเซิร์ฟเวอร์
หากต้องการสร้างบทบาทฐานข้อมูล ให้ใช้ขั้นตอนเดียวกันกับรายละเอียดข้างต้นสำหรับบทบาทเซิร์ฟเวอร์ ตัวอย่างเช่น คุณอาจใช้คำสั่งต่อไปนี้:
CREATE ROLE dbrole
GRANT SELECT ON DATABASE::TestDatabase TO dbrole
ALTER ROLE dbrole ADD MEMBER exampleuser2หลักทรัพย์ค้ำประกัน
อาจารย์ใหญ่ได้รับสิทธิ์ในการรักษาความปลอดภัย ความปลอดภัยคือทรัพยากรที่มีการควบคุมการเข้าถึง Securables สามารถมีลำดับชั้นที่ซ้อนกัน เรียกว่า "ขอบเขต" ซึ่งสามารถรักษาความปลอดภัยได้เช่นกัน ขอบเขตที่ปลอดภัย ได้แก่ เซิร์ฟเวอร์ ฐานข้อมูล และสคีมา (สคีมาฐานข้อมูลเป็นโครงสร้างโครงกระดูกที่แสดงถึงมุมมองเชิงตรรกะของฐานข้อมูลทั้งหมด โดยจะกำหนดวิธีการจัดระเบียบข้อมูลและความสัมพันธ์ระหว่างข้อมูลเหล่านั้นที่เกี่ยวข้องกัน โดยจะระบุข้อจำกัดทั้งหมดที่ต้องนำไปใช้กับข้อมูล)
สิทธิ์
สิทธิ์คือประเภทของการเข้าถึงที่มอบให้แก่ผู้รักษาความปลอดภัยเฉพาะ ที่ระดับเซิร์ฟเวอร์ สิทธิ์จะถูกกำหนดให้กับการเข้าสู่ระบบ SQL Server และบทบาทของเซิร์ฟเวอร์ ที่ระดับฐานข้อมูล พวกเขาถูกกำหนดให้กับผู้ใช้ฐานข้อมูลและบทบาทของฐานข้อมูล
คุณมีสามวิธีหลักในการควบคุมสิทธิ์:
- Grant — คำสั่ง GRANT ช่วยให้ตัวการสามารถเข้าถึงความปลอดภัยที่ระบุได้
- ปฏิเสธ — คำสั่ง DENY ป้องกันไม่ให้ตัวการเข้าถึงความปลอดภัยที่ระบุ
- เพิกถอน — คำสั่ง REVOKE จะกำจัดสิทธิ์ที่ได้รับก่อนหน้านี้สำหรับความปลอดภัยเฉพาะเจาะจง
โปรดทราบว่าคำสั่งสิทธิ์ DENY จะแทนที่สิทธิ์ที่ได้รับทั้งหมด
ลำดับชั้นของการอนุญาต
Securables ได้รับการจัดระเบียบเป็นลำดับชั้นที่ประกอบด้วยเซิร์ฟเวอร์ ฐานข้อมูล สคีมา และอ็อบเจ็กต์ที่อยู่ภายในสคีมาเหล่านั้น สามารถกำหนดสิทธิ์ได้ที่เซิร์ฟเวอร์ ฐานข้อมูล สคีมา หรือระดับออบเจ็กต์เดียว
โปรดทราบว่าสิทธิ์ที่ได้รับในระดับที่สูงกว่าของลำดับชั้นจะนำไปใช้กับระดับที่ต่ำกว่าโดยอัตโนมัติ เว้นแต่คุณจะปฏิเสธเป็นการเฉพาะกับวัตถุลูกและหลานของ securable
วิธีจัดการสิทธิ์เซิร์ฟเวอร์ SQL อย่างปลอดภัย
สิทธิ์ที่ได้รับมอบหมายอย่างไม่ถูกต้องอาจก่อให้เกิดความเสี่ยงร้ายแรงต่อความปลอดภัยของข้อมูล และสร้างการหยุดชะงักครั้งใหญ่สำหรับพนักงานที่พยายามทำงานให้เสร็จ แนวทางปฏิบัติที่ดีที่สุดต่อไปนี้จะช่วยคุณหลีกเลี่ยงปัญหาเหล่านั้น
ยึดหลักสิทธิพิเศษน้อยที่สุด
ให้สิทธิ์แก่ผู้ใช้แต่ละคนเฉพาะสิทธิ์ที่จำเป็นในการปฏิบัติงานของตนเท่านั้น ไม่มากไปไม่น้อยไปกว่านี้ นี่คือตัวอย่างบางส่วนของผู้ใช้และระดับการเข้าถึงที่พวกเขาอาจต้องการ:
- ผู้ดูแลระบบ SQL Server — ต้องการความสามารถในการเพิ่มและลบฐานข้อมูลทั้งหมด
- นักพัฒนา — จำเป็นต้องสร้าง ออกแบบ แก้ไข และลบออบเจ็กต์ฐานข้อมูล
- แอปพลิเคชัน — จำเป็นต้องดูและแก้ไขข้อมูล
- ผู้ใช้ปลายทาง — จำเป็นต้องใช้ข้อมูลในรูปแบบอ่านอย่างเดียว หรือทั้งอ่านและแก้ไขข้อมูล
ใช้บทบาท
ใช้ประโยชน์จากตัวเลือกความปลอดภัยตามบทบาทที่มีให้โดย SQL Server เพื่อกำหนดสิทธิ์ การใช้บทบาท แทนที่จะมอบหมายสิทธิ์เฉพาะให้กับผู้ใช้แต่ละราย ไม่เพียงสะดวกกว่าเท่านั้น แต่ยังแม่นยำยิ่งขึ้นอีกด้วย
ทำความเข้าใจลำดับชั้นของการอนุญาตและการสืบทอด
ตามที่อธิบายไว้ก่อนหน้านี้ securables ของ SQL Server จะถูกจัดกลุ่มเป็นลำดับชั้น เซิร์ฟเวอร์เป็นเจ้าของฐานข้อมูลที่อยู่บนเซิร์ฟเวอร์ ฐานข้อมูลเป็นเจ้าของสคีมา และอ็อบเจ็กต์ของสคีมาเอง สามารถกำหนดสิทธิ์ในระดับใดก็ได้เหล่านี้ การให้สิทธิ์การเข้าถึงแก่ผู้ใช้หรือบทบาทในระดับหนึ่งๆ จะเป็นการให้สิทธิ์การเข้าถึงทุกระดับที่อยู่ด้านล่างโดยอัตโนมัติ เว้นแต่ว่าการเข้าถึงจะถูกปฏิเสธหรือเพิกถอนโดยเฉพาะสำหรับวัตถุลูกหรือหลาน
ยิ่งไปกว่านั้น เนื่องจากลำดับชั้นที่ซ้อนกัน หลักการ ความปลอดภัย และการอนุญาตทั้งหมดจึงสามารถสืบทอดซึ่งกันและกันได้ ตัวอย่างเช่น บทบาทหลักอาจเป็นบทบาทได้ และสิทธิ์ทั้งหมดที่มอบหมายให้นั้นจะนำไปใช้กับสมาชิกทุกคนในบทบาทนั้นโดยอัตโนมัติ
Netwrix Auditor ปรับปรุงความปลอดภัยของเซิร์ฟเวอร์ SQL อย่างไร
การมองเห็นสิทธิ์ SQL Server ของคุณเป็นสิ่งสำคัญในการจัดการสิทธิ์เหล่านี้อย่างมีประสิทธิภาพ Netwrix Auditor สำหรับ SQL Server สามารถช่วยให้คุณเข้าใจสิทธิ์และติดตามการเปลี่ยนแปลงสิทธิ์ได้ คุณได้รับ:
- ควบคุมสิทธิ์ของ SQL Server — ช่วยให้คุณเข้าใจว่าใครมีสิทธิ์เข้าถึงอะไรใน SQL Server และพิจารณาว่าจะให้สิทธิ์เหล่านั้นอย่างไร
- Sการตรวจสอบการเปลี่ยนแปลงระดับเซิร์ฟเวอร์ — ติดตามการเปลี่ยนแปลงการกำหนดค่า SQL Server ทั้งหมด เช่น การอัปเดตสิทธิ์หรือการลบอินสแตนซ์ของเซิร์ฟเวอร์ SQL
- การตรวจสอบการเปลี่ยนแปลงระดับฐานข้อมูล — ตรวจสอบเนื้อหาฐานข้อมูลและการเปลี่ยนแปลงออบเจ็กต์
นอกจากนี้ Netwrix Auditor ยังให้บริการ:
- การตรวจสอบการเข้าสู่ระบบโดยละเอียด — รายงานความพยายามเข้าสู่ระบบ SQL Server ที่สำเร็จและล้มเหลว เพื่อช่วยคุณตรวจจับและจัดการกับการเข้าถึงที่ไม่ได้รับอนุญาตและการโจมตีทางไซเบอร์
- การแจ้งเตือนเกี่ยวกับรูปแบบภัยคุกคาม — แจ้งเตือนคุณเกี่ยวกับเหตุการณ์สำคัญที่ต้องได้รับการดูแลทันที เช่น การเปลี่ยนแปลงสิทธิ์และความพยายามในการเข้าถึงฐานข้อมูลที่สำคัญ
- รายงานและแดชบอร์ดการตรวจสอบอัตโนมัติ — เพิ่มบันทึกการตรวจสอบ SQL โดยจัดทำรายงานและแดชบอร์ดที่กำหนดไว้ล่วงหน้าที่ครอบคลุมพร้อมความสามารถในการกรอง การเรียงลำดับ และการส่งออก