-
เมื่อตั้งค่าการอนุญาต โดยไม่คำนึงถึงผู้ใช้หรือบทบาท พวกเขาจะเป็นออบเจ็กต์สำหรับการตั้งค่าการอนุญาต ยกเว้นว่าบทบาทของแอปพลิเคชันเป็นแบบพิเศษและมีความสัมพันธ์แบบพิเศษร่วมกันกับบทบาทและผู้ใช้อื่นๆ บทบาทของฐานข้อมูลและสมาชิกจะมีความสัมพันธ์ที่ใกล้ชิดมากในแง่ของสิทธิ์ ผู้ใช้อาจอยู่ในหลายบทบาทฐานข้อมูลในเวลาเดียวกัน และแต่ละบทบาทอาจมีสิทธิ์ที่แตกต่างกัน ในขณะนี้ หลักการสำหรับผู้ใช้ในการรับสิทธิ์ที่แท้จริงคือ "สหภาพ" เว้นแต่จะมีการตั้งค่าการปฏิเสธ (ต้องห้าม) ตัวอย่างเช่น บทบาท A ถูกห้ามไม่ให้อ่านตารางข้อมูล B แต่บทบาท C สามารถอ่านตารางข้อมูลได้
B ในขณะนี้ ผู้ใช้ที่อยู่ในบทบาท A และ C ยังคงไม่สามารถอ่านตารางข้อมูล B ได้เพราะเขาถูกแบน
ออบเจ็กต์ของการอนุญาตสามารถแบ่งออกเป็นเซิร์ฟเวอร์และฐานข้อมูลได้ กล่าวคือ สามารถตั้งค่าการอนุญาตแยกกันสำหรับทั้งสองนี้ได้ โปรดดูคำอธิบายต่อไปนี้
ระบุสิทธิ์ของเซิร์ฟเวอร์ (1) คลิกขวาที่เซิร์ฟเวอร์ใน Object Explorer และเลือก "Properties"
(2) สลับไปที่ "สิทธิ์" ในกล่องโต้ตอบ
(3) เลือกออบเจ็กต์ที่จะตั้งค่าการอนุญาตใน "ชื่อหรือบทบาทการเข้าสู่ระบบ" และตรวจสอบการอนุญาตตามลำดับใน "การอนุญาตที่ชัดเจน"
เมื่อเสร็จแล้วให้คลิกปุ่ม "ตกลง" ดังแสดงในรูปที่ 15-21
ดังแสดงในรูปที่ 15-21 เป็นการตั้งค่าการอนุญาตสำหรับเซิร์ฟเวอร์ "ผู้อนุญาต" คือตัวที่ล็อกอินเข้าสู่ SQL Server ในปัจจุบัน
ชื่อล็อกอินของเซิร์ฟเวอร์ "สิทธิ์" คือการอนุญาตที่สามารถตั้งค่าได้โดยชื่อล็อกอินปัจจุบันทั้งหมด "Grant" หมายถึงการให้สิทธิ์ หากเลือก "Have Grant" หมายความว่า sa ให้สิทธิ์แก่ออบเจ็กต์ที่เลือกและสามารถทำได้ จากนั้นให้สิทธิ์แก่การเข้าสู่ระบบอื่น "ปฏิเสธ" เป็นเพียงสิ่งต้องห้ามเท่านั้น
การเลือกทั้งสามตัวเลือกนี้เกี่ยวข้องกัน หากเลือก "ปฏิเสธ" "ให้สิทธิ์" และ "ให้สิทธิ์" จะถูกล้างโดยอัตโนมัติ หากเลือก "ให้สิทธิ์" ระบบจะล้าง "ปฏิเสธ" และเลือก "ให้สิทธิ์" .
"ชื่อหรือบทบาทการเข้าสู่ระบบ" คือออบเจ็กต์ที่มีการตั้งค่าการอนุญาต ผู้อ่านสามารถคลิกปุ่ม "เพิ่ม" เพื่อระบุชื่อการเข้าสู่ระบบหรือบทบาทอื่น ๆ ได้ อย่างไรก็ตาม บทบาทของเซิร์ฟเวอร์ในตัวทั้งหมดไม่สามารถเปลี่ยนแปลงการอนุญาตได้ แต่สามารถระบุการอนุญาตสำหรับ บทบาทสาธารณะ
หากต้องการดูการอนุญาตของการเข้าสู่ระบบหรือบทบาทที่เลือกในปัจจุบัน ให้คลิกปุ่มการอนุญาตที่มีผล เนื่องจากการอนุญาตที่มีผลอาจไม่เพียงแต่ตั้งค่าไว้ในรูปที่ 15-21 เท่านั้น แต่ยังขึ้นอยู่กับบทบาทของการเข้าสู่ระบบด้วย ดังนั้น รูปที่ 15-21 จะแสดงเฉพาะการอนุญาตที่กำหนดไว้ในการตั้งค่านี้ และจะไม่แสดงการอนุญาตเริ่มต้นที่มีอยู่
รูปที่ 15-21 ตั้งค่าการอนุญาตเซิร์ฟเวอร์และระบุการอนุญาตฐานข้อมูล (1) เลือกฐานข้อมูล eBook ใน Object Explorer คลิกขวาและเลือก "Properties"
(2) สลับไปที่ "สิทธิ์" ในกล่องโต้ตอบ
(3) เลือกออบเจ็กต์ที่จะตั้งค่าการอนุญาตใน "ผู้ใช้หรือบทบาท" ตรวจสอบการอนุญาตใน "การอนุญาตที่ชัดเจน" และคลิกปุ่ม "ตกลง" เมื่อเสร็จสิ้น ดังแสดงในรูปที่ 15-22
การอนุญาตวัตถุ (1) เลือกฐานข้อมูล eBook ใน object explorer เปิด "ตารางข้อมูล" เลือกตารางข้อมูล "คำสั่งซื้อ" คลิกขวาและเลือก "คุณสมบัติ"
(2) สลับไปที่ "สิทธิ์" ในกล่องโต้ตอบ
(3) คลิกปุ่ม "เพิ่ม" จากนั้นระบุผู้ใช้ บทบาทของฐานข้อมูล หรือบทบาทของแอปพลิเคชันที่คุณต้องการเปลี่ยนสิทธิ์ในกล่องโต้ตอบ
(4) เลือกออบเจ็กต์ที่จะตั้งค่าการอนุญาตใน "ผู้ใช้หรือบทบาท" ตรวจสอบการอนุญาตใน "การอนุญาตที่ชัดเจน" และคลิกปุ่ม "ตกลง" เมื่อเสร็จสิ้น ดังแสดงในรูปที่ 15-23
วิธีการทำงานของรูปที่ 15-21 และรูปที่ 15-23 เหมือนกันทุกประการ ข้อแตกต่างคือสิทธิ์ของเซิร์ฟเวอร์ ฐานข้อมูล และออบเจ็กต์ได้รับการตั้งค่าแยกกัน และออบเจ็กต์ที่สามารถตั้งค่าได้ก็แตกต่างกันเช่นกัน ในรูปที่ 15-21 สามารถระบุสิทธิ์สำหรับชื่อล็อกอินและบทบาทของเซิร์ฟเวอร์ได้
ในรูปที่ 15-23 สามารถระบุสิทธิ์สำหรับผู้ใช้ บทบาทของฐานข้อมูล และบทบาทของแอปพลิเคชัน ความแตกต่างอีกอย่างหนึ่งก็คือ สิทธิ์ที่สามารถระบุได้นั้นแตกต่างกัน
รูปที่ 15-22 การตั้งค่าการอนุญาตฐานข้อมูล
รูปที่ 15-23 การตั้งค่าการอนุญาตและการอนุญาตของวัตถุ
สิทธิ์ที่สามารถตั้งค่าใน SQL Server นั้นซับซ้อนมาก มีสิทธิ์ 94 รายการจากเซิร์ฟเวอร์ไปยังออบเจ็กต์ สิ่งที่ยากกว่าที่จะเข้าใจคือคุณสมบัติของเซิร์ฟเวอร์และฐานข้อมูล
ตารางที่ 15-4 คำอธิบายสิทธิ์ที่สำคัญ
คำอธิบายเนื้อหาการอนุญาต
การควบคุมมอบความสามารถที่เหมือนกับความเป็นเจ้าของแก่ผู้รับสิทธิ์ ผู้รับสิทธิ์มีสิทธิอันแน่นอนที่จะ
สิทธิ์ทั้งหมดที่กำหนดไว้บนไอคอน
ALTER ให้ความสามารถในการเปลี่ยนแปลงคุณสมบัติ (ยกเว้นความเป็นเจ้าของ) ของวัตถุที่กำหนดความปลอดภัยเฉพาะ ในช่วงที่กำหนด
เมื่อให้สิทธิ์ ALTER แก่ขอบเขต ก็จะได้รับอนุญาตให้เปลี่ยนแปลง สร้าง หรือลบขอบเขตด้วย
ความสามารถของออบเจ็กต์ความปลอดภัยใดๆ ที่มีอยู่
แก้ไขใด ๆ <วัตถุที่กำหนดความปลอดภัยของเซิร์ฟเวอร์> ให้ความสามารถในการสร้าง เปลี่ยนแปลง หรือลบแต่ละอินสแตนซ์ของวัตถุที่กำหนดความปลอดภัยของเซิร์ฟเวอร์
แก้ไข <วัตถุที่ปลอดภัยฐานข้อมูล> ใด ๆ ให้สร้าง แก้ไข หรือปล่อยไปยังแต่ละอินสแตนซ์ของวัตถุที่ปลอดภัยฐานข้อมูล
ความสามารถ
TAKE OWNERSHIP อนุญาตให้ผู้รับสิทธิ์เป็นเจ้าของวัตถุความปลอดภัยที่ได้รับ
CREATE <วัตถุความปลอดภัยของเซิร์ฟเวอร์> มอบความสามารถในการสร้างวัตถุความปลอดภัยของเซิร์ฟเวอร์ให้กับผู้รับสิทธิ์
CREATE <database security object> ให้ความสามารถในการสร้างออบเจ็กต์ความปลอดภัยของฐานข้อมูลแก่ผู้รับสิทธิ์
ดูคำจำกัดความอนุญาตให้ผู้รับสิทธิ์เข้าถึงข้อมูลเมตา
"วัตถุความปลอดภัย" ในตารางที่ 15-4 หมายถึงวัตถุของการดำเนินการตั้งค่าสิทธิ์ เช่น "บทบาท" ใน "สร้างบทบาท"
นี่คือวัตถุที่ปลอดภัยที่นี่
ใช้ T-SQL เพื่อตั้งค่าการอนุญาต ในการตั้งค่าการอนุญาตใน T-SQL คุณสามารถใช้คำสั่งสามคำสั่ง GRANT (grant), DENY (ปฏิเสธ) และ REVOKE (เพิกถอน)
ประโยคทั้งสามนี้มีประโยชน์หลายอย่าง โดยมีรูปแบบพื้นฐานดังนี้
ให้สิทธิ์ทั้งหมดหรือชื่อการอนุญาตบนวัตถุให้กับผู้ใช้หรือชื่อบทบาทด้วยตัวเลือก
เพิกถอนทั้งหมดหรือชื่อสิทธิ์บนวัตถุไปยังผู้ใช้หรือชื่อบทบาท CASCADE
ปฏิเสธทั้งหมดหรือชื่อสิทธิ์บนวัตถุถึงผู้ใช้หรือชื่อบทบาท CASCADE
แต่ละคำสั่งมีสามองค์ประกอบ ได้แก่ ชื่อสิทธิ์ วัตถุ และผู้ใช้ (บทบาท) ดังนี้ (Ch151524Grant.sql):
ใช้อีบุ๊ค
ให้สิทธิ์เลือกบน OBJECT::dbo.members ให้กับ David
การอ้างอิงการให้ทุน (MemberID) บน OBJECT::dbo.Orders
ถึงดาวิดพร้อมตัวเลือกการให้ทุน
ข้อความข้างต้นใช้คำสั่ง Grant เพื่อให้สิทธิ์แก่ David ตามลำดับ แต่เนื้อหาของอ็อบเจ็กต์แตกต่างออกไป โปรดใช้ชื่ออ็อบเจ็กต์เป็น
ขึ้นต้นด้วย "OBJECT::" ตามด้วยชื่อเต็ม ถ้าจะตามด้วยเจ้าของ คำสั่ง Grant ที่สองดำเนินการกับออบเจ็กต์พิเศษ "(MemberID) ON OBJECT:: dbo.Orders" ซึ่งแสดงถึง MemberID ที่ดำเนินการกับออบเจ็กต์คำสั่งซื้อ
ให้สิทธิ์ในการดูคอลัมน์นี้แก่เดวิด ในเวลาเดียวกัน การเพิ่ม "WITH GRANT OPTION" หมายความว่าเดวิดสามารถให้สิทธิ์นี้แก่ผู้อื่นได้ ซึ่งเทียบเท่ากับ "with grant" ในรูปที่ 15-23
ในคำสั่งเพิกถอนและปฏิเสธ คุณสามารถเพิ่ม Cascade ที่ส่วนท้ายได้ หน้าที่ของคีย์เวิร์ดนี้คือเพิกถอนสิทธิ์ที่ผู้ใช้สามารถให้สิทธิ์แก่ผู้อื่นได้หลังจากถึง ซึ่งก็คือ ยกเลิก "ได้ให้"
ดูสิทธิ์ที่มีอยู่ เนื่องจากมีสิทธิ์ที่มีอยู่มากมาย จึงไม่มีตัวเลือกให้เลือกใน T-SQL ดังนั้นให้ใช้ GRANT, DENY และ
เมื่อ REVOKE คุณต้องทราบชื่อการอนุญาตก่อนจึงจะสามารถตั้งค่าได้ ผู้อ่านสามารถดู sys.fn_builtin_permissions
ตารางข้อมูลระบบทั้งสามตาราง sys.database_permissions และ sys.server_permissions แสดงในรูปที่ 15-24
รูปที่ 15-24 ดูสิทธิ์ที่มีอยู่ “Permission_name” ในรูปที่ 15-24 เป็นชื่อสิทธิ์ที่มีอยู่ ซึ่งสามารถนำไปใช้กับ Grant, DENY หรือ
เพิกถอนคำสั่ง.
ดูเนื้อหาการอนุญาต หากต้องการดูชื่อล็อกอินปัจจุบันและเนื้อหาการอนุญาตของผู้ใช้ คุณสามารถดำเนินการตามขั้นตอนที่เก็บไว้ sp_helprotect ดังแสดงในรูปที่ 15-25
แสดง
Grantee ในรูปที่ 15-25 คือชื่อของผู้ใช้ที่ให้สิทธิ์ และ Grantor คือชื่อของผู้ใช้ที่ให้สิทธิ์แก่ผู้อื่น
สามารถใช้พารามิเตอร์ได้สูงสุดสี่ตัวหลังจาก sp_helprotect กระบวนงานที่เก็บไว้ ซึ่งแสดงถึงชื่อวัตถุ ชื่อผู้ใช้ และชื่อผู้อนุญาต พารามิเตอร์ที่สี่สามารถเป็น o หรือ s ซึ่งแสดงถึงสิทธิ์ของวัตถุแบบสอบถามหรือสิทธิ์ของคำสั่งตามลำดับ