GRANT, REVOKE และ DENY สิทธิ์ในฐานข้อมูล
ภาษาควบคุมข้อมูล (DCL) เป็นเซตย่อยของ Structured Query Language (SQL) และช่วยให้ผู้ดูแลระบบฐานข้อมูลสามารถกำหนดค่าการรักษาความปลอดภัยในการเข้าถึงฐานข้อมูลเชิงสัมพันธ์ เป็นภาษาคำอธิบายข้อมูล (DDL) ซึ่งใช้ในการเพิ่มและลบอ็อบเจ็กต์ฐานข้อมูลและ Data Manipulation Language (DML) ที่ใช้ดึงข้อมูลแทรกและแก้ไขเนื้อหาของฐานข้อมูล
DCL เป็น ชุดย่อยที่ ง่ายที่สุดของ SQL เนื่องจากประกอบด้วยคำสั่งสามคำสั่งเท่านั้นคือ GRANT, REVOKE และ DENY คำสั่งทั้งสามชุดนี้ช่วยให้ผู้ดูแลระบบมีความยืดหยุ่นในการตั้งค่าและลบสิทธิ์ในฐานข้อมูลในรูปแบบที่ละเอียดมาก
การเพิ่มสิทธิ์ด้วยคำสั่ง GRANT
คำสั่ง GRANT ใช้สำหรับผู้ดูแลระบบเพื่อเพิ่มสิทธิ์ใหม่ให้กับ ผู้ใช้ฐานข้อมูล มีไวยากรณ์ที่เรียบง่ายซึ่งกำหนดไว้ดังนี้:
GRANT [สิทธิพิเศษ] ON [วัตถุ] TO [ผู้ใช้] [WITH GRANT OPTION]นี่คือ rundown ในแต่ละพารามิเตอร์ที่คุณสามารถระบุได้ด้วยคำสั่งนี้:
- สิทธิ์ (Privilege) สามารถเป็นได้ทั้งคำสำคัญ ALL (เพื่อให้สิทธิ์ที่หลากหลาย) หรือสิทธิ์ในฐานข้อมูลที่เฉพาะเจาะจงหรือชุดของสิทธิ์ ตัวอย่างเช่นสร้างฐานข้อมูล SELECT, INSERT, UPDATE, DELETE, EXECUTE และ CREATE VIEW
- วัตถุ สามารถวัตถุฐานข้อมูลใด ๆ ตัวเลือกสิทธิ์ที่ถูกต้องจะแตกต่างกันไปขึ้นอยู่กับชนิดของอ็อบเจ็กต์ฐานข้อมูลที่คุณรวมไว้ในข้อนี้ โดยปกติวัตถุจะเป็นฐานข้อมูลฟังก์ชัน ฟอร์แมต ตารางหรือมุมมอง
- ผู้ใช้ สามารถเป็นผู้ใช้ฐานข้อมูลใดก็ได้ นอกจากนี้คุณยังสามารถแทนที่บทบาทของผู้ใช้ในข้อนี้ได้หากต้องการใช้การรักษาความปลอดภัยฐานข้อมูลตามบทบาท
- ถ้าคุณใส่คำสั่ง GRANT OPTION ที่เป็นตัวเลือก เมื่อสิ้นสุดคำสั่ง GRANT คุณจะไม่อนุญาตเฉพาะสิทธิ์ที่กำหนดไว้ในคำสั่ง SQL เท่านั้น แต่ยังให้สิทธิ์แก่ผู้ใช้ในการให้สิทธิ์แบบเดียวกันแก่ผู้ใช้ฐานข้อมูล อื่น ๆ ด้วยเหตุผลนี้ให้ใช้ข้อนี้อย่างระมัดระวัง
ตัวอย่างเช่นสมมติว่าคุณต้องการให้ผู้ใช้ Joe สามารถดึงข้อมูลจากตารางพนักงานในฐานข้อมูลที่เรียกว่า HR คุณอาจใช้คำสั่ง SQL ต่อไปนี้:
ขอให้เลือกพนักงาน HR.employees ให้ Joeโจจะมีความสามารถในการดึงข้อมูลจากตารางพนักงาน อย่างไรก็ตามเขาจะไม่สามารถให้สิทธิ์ผู้ใช้รายอื่นในการดึงข้อมูลจากตารางดังกล่าวได้เนื่องจากคุณไม่ได้รวมคำสั่ง GRANT OPTION WITH GRANT ในคำสั่ง GRANT
การยกเลิกการเข้าถึงฐานข้อมูล
คำสั่ง REVOKE ใช้เพื่อลบการเข้าถึงฐานข้อมูลจากผู้ใช้ที่ได้รับสิทธิ์ดังกล่าวก่อนหน้านี้ ไวยากรณ์สำหรับคำสั่งนี้ถูกกำหนดดังนี้:
REVOKE [GRANT OPTION FOR] [permission] ON [object] FROM [user] [CASCADE]นี่คือ rundown ของพารามิเตอร์สำหรับคำสั่ง REVOKE:
- สิทธิ์ ระบุ สิทธิ์ ของฐานข้อมูลที่จะลบออกจากผู้ใช้ที่ระบุ คำสั่งนี้จะเพิกถอนคำยืนยัน GRANT และ DENY ที่ทำไว้ก่อนหน้านี้สำหรับสิทธิ์ที่ระบุ
- วัตถุ สามารถวัตถุฐานข้อมูลใด ๆ ตัวเลือกสิทธิ์ที่ถูกต้องจะแตกต่างกันไปขึ้นอยู่กับชนิดของอ็อบเจ็กต์ฐานข้อมูลที่คุณรวมไว้ในข้อนี้ โดยปกติวัตถุจะเป็นฐานข้อมูลฟังก์ชันฟอร์แมตตารางหรือมุมมอง
- ผู้ใช้ สามารถเป็นผู้ใช้ฐานข้อมูลใดก็ได้ นอกจากนี้คุณยังสามารถแทนที่บทบาทของผู้ใช้ในข้อนี้ได้หากต้องการใช้การรักษาความปลอดภัยฐานข้อมูลตามบทบาท
- ข้อ GRANT OPTION FOR จะลบความสามารถของผู้ใช้ที่ระบุในการให้สิทธิ์ที่ระบุแก่ผู้ใช้รายอื่น หมายเหตุ : หากคุณรวม GRANT OPTION FOR ในรายงาน REVOKE จะ ไม่ เพิกถอนสิทธิ์หลัก ข้อนี้ยกเลิก เฉพาะ ความสามารถในการอนุญาตเท่านั้น
- ตัวเลือก CASCADE ยังยกเลิกการอนุญาตที่ระบุจากผู้ใช้ใด ๆ ที่ผู้ใช้ที่ระบุได้รับอนุญาต
ตัวอย่างเช่นคำสั่งต่อไปนี้จะเพิกถอนสิทธิ์ที่ได้รับจาก Joe ในตัวอย่างก่อนหน้านี้:
เรียกคืนการเลือก HR.employees จาก Joeการปฏิเสธการเข้าใช้งานฐานข้อมูลโดยชัดแจ้ง
คำสั่ง DENY ใช้เพื่อป้องกันไม่ให้ผู้ใช้รับสิทธิ์เฉพาะอย่างชัดเจน ซึ่งจะเป็นประโยชน์เมื่อผู้ใช้เป็นสมาชิกของบทบาทหรือกลุ่มที่ได้รับสิทธิ์และคุณต้องการป้องกันไม่ให้ผู้ใช้แต่ละรายรับสิทธิ์โดยการสร้างข้อยกเว้น ไวยากรณ์สำหรับคำสั่งนี้มีดังนี้:
DENY [permission] ON [object] TO [user] พารามิเตอร์สำหรับคำสั่ง DENY เหมือนกับคำสั่ง GRANT
ตัวอย่างเช่นถ้าคุณต้องการให้แน่ใจว่าแมทธิวจะไม่ได้รับความสามารถในการลบข้อมูลจากตารางพนักงานออกคำสั่งต่อไปนี้: