ภาษาควบคุมข้อมูล (DCL) สำหรับการอนุญาตฐานข้อมูล

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

DCL เป็นชุดย่อยของ SQL ที่ง่ายที่สุด เนื่องจากประกอบด้วยสามคำสั่งเท่านั้น: GRANT, REVOKE และ DENY เมื่อรวมกันแล้ว คำสั่งทั้งสามนี้จะช่วยให้ผู้ดูแลระบบมีความยืดหยุ่นในการตั้งค่าและลบการอนุญาตฐานข้อมูลแบบละเอียด

การเพิ่มสิทธิ์ด้วยคำสั่ง GRANT

คำสั่ง GRANT เพิ่มสิทธิ์ใหม่ให้กับผู้ใช้ฐานข้อมูล มีไวยากรณ์ที่ง่ายมาก กำหนดไว้ดังนี้:

แกรนท์ [สิทธิพิเศษ]
เปิด [วัตถุ]
ถึง [ผู้ใช้]
[พร้อมตัวเลือกทุน]

นี่คือบทสรุปของพารามิเตอร์แต่ละตัวที่คุณสามารถระบุได้ด้วยคำสั่งนี้:

  • สิทธิพิเศษ — สามารถเป็นได้ทั้งคีย์เวิร์ด ALL (เพื่อให้สิทธิ์ที่หลากหลาย) หรือสิทธิ์ฐานข้อมูลเฉพาะหรือชุดของสิทธิ์ ตัวอย่าง ได้แก่ CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE และ CREATE VIEW
  • วัตถุ — สามารถเป็นวัตถุฐานข้อมูลใด ๆ ตัวเลือกสิทธิ์ใช้งานที่ถูกต้องจะแตกต่างกันไปตามประเภทของวัตถุฐานข้อมูลที่คุณรวมไว้ในส่วนคำสั่งนี้ โดยปกติวัตถุจะเป็นฐานข้อมูล ฟังก์ชัน
    ขั้นตอนการเก็บ, ตารางหรือมุมมอง
  • ผู้ใช้ — สามารถเป็นผู้ใช้ฐานข้อมูลใด ๆ คุณยังสามารถแทนที่บทบาทสำหรับผู้ใช้ในข้อนี้ หากคุณต้องการใช้การรักษาความปลอดภัยฐานข้อมูลตามบทบาท
  • หากคุณรวมตัวเลือก ด้วยตัวเลือกทุน ที่ส่วนท้ายของคำสั่ง GRANT คุณไม่เพียงแต่ให้สิทธิ์แก่ผู้ใช้ที่ระบุเท่านั้น กำหนดไว้ในคำสั่ง SQL แต่ยังให้สิทธิ์ผู้ใช้ในการอนุญาตสิ่งเหล่านั้นเพิ่มเติมอีกด้วย สิทธิ์ในการ อื่น ๆ ผู้ใช้ฐานข้อมูล ด้วยเหตุผลนี้ โปรดใช้ประโยคนี้อย่างระมัดระวัง

ตัวอย่างเช่น สมมติว่าคุณต้องการให้ผู้ใช้ โจ ความสามารถในการดึงข้อมูลจาก พนักงาน ตารางใน a ฐานข้อมูล เรียกว่า HR. ใช้คำสั่ง SQL ต่อไปนี้:

GRANT SELECT
ON HR.พนักงาน
ถึงโจ

โจสามารถดึงข้อมูลจากตารางพนักงาน อย่างไรก็ตาม เขาจะไม่สามารถให้สิทธิ์ผู้ใช้รายอื่นในการดึงข้อมูลจากตารางนั้นได้ เนื่องจากสคริปต์ DCL ไม่ได้รวมส่วนคำสั่ง WITH GRANT OPTION

เพิกถอนการเข้าถึงฐานข้อมูล

คำสั่ง REVOKE จะลบการเข้าถึงฐานข้อมูลจากผู้ใช้ที่ได้รับสิทธิ์การเข้าถึงดังกล่าวก่อนหน้านี้ ไวยากรณ์สำหรับคำสั่งนี้ถูกกำหนดดังนี้:

เพิกถอน [ตัวเลือกการอนุญาตสำหรับ] [การอนุญาต]
เปิด [วัตถุ]
จาก [ผู้ใช้]
[น้ำตก]

นี่คือบทสรุปเกี่ยวกับพารามิเตอร์สำหรับคำสั่ง REVOKE:

  • การอนุญาต — ระบุการอนุญาตฐานข้อมูลเพื่อลบออกจากผู้ใช้ที่ระบุ คำสั่งเพิกถอนทั้งการยืนยัน GRANT และ DENY ที่ทำไว้ก่อนหน้านี้สำหรับการอนุญาตที่ระบุ
  • วัตถุ — สามารถเป็นวัตถุฐานข้อมูลใด ๆ ตัวเลือกสิทธิ์ใช้งานที่ถูกต้องจะแตกต่างกันไปตามประเภทของวัตถุฐานข้อมูลที่คุณรวมไว้ในส่วนคำสั่งนี้ โดยทั่วไป วัตถุจะเป็นฐานข้อมูล ฟังก์ชัน ขั้นตอนการจัดเก็บ ตาราง หรือมุมมอง
  • ผู้ใช้ — สามารถเป็นผู้ใช้ฐานข้อมูลใด ๆ คุณยังสามารถแทนที่บทบาทสำหรับผู้ใช้ในข้อนี้ หากคุณต้องการใช้การรักษาความปลอดภัยฐานข้อมูลตามบทบาท
  • NS ให้ตัวเลือกสำหรับ ส่วนคำสั่งลบความสามารถของผู้ใช้ที่ระบุในการให้สิทธิ์ที่ระบุแก่ผู้ใช้รายอื่น หากคุณรวม ให้ตัวเลือกสำหรับ ข้อในคำสั่ง REVOKE การอนุญาตหลักจะไม่ถูกเพิกถอน ข้อนี้เพิกถอนเฉพาะความสามารถในการอนุญาต
  • NS น้ำตก ตัวเลือกยังเพิกถอนการอนุญาตที่ระบุจากผู้ใช้ใด ๆ ที่ผู้ใช้ที่ระบุให้สิทธิ์

คำสั่งต่อไปนี้เพิกถอนการอนุญาตที่มอบให้กับ Joe ในตัวอย่างก่อนหน้านี้:

เพิกถอนการเลือก
ON HR.พนักงาน
จากโจ.

การปฏิเสธการเข้าถึงฐานข้อมูลโดยชัดแจ้ง

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

ปฏิเสธ [การอนุญาต]
เปิด [วัตถุ]
ถึง [ผู้ใช้]

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

ปฏิเสธ ลบ
ON HR.พนักงาน
ถึงแมทธิว