SQL เพื่อควบคุมความปลอดภัย (Week 2)
การควบคุมการเข้าถึงข้อมูล ระบบการจัดการข้อมูลโดยส่วนใหญ่จะมีกลไกที่ ทำให้แน่ใจได้ว่าเฉพาะผู้มีสิทธิเท่านั้นที่ สามารถเข้าถึงข้อมูลในฐานข้อมูล ภาษา SQL มีอยู่ 2 คำสั่ง คือ GRANT REVOKE
กลไกความปลอดภัยนี้ขึ้นอยู่กับ แนวความคิด การระบุตัวตนของผู้มีอำนาจการใช้ (Authorizaton) ความเป็นเจ้าของ (Ownership) สิทธิในการใช้ (Privilege)
การระบุตัวตนของผู้มีอำนาจในการใช้ (Authorization) และความเป็นเจ้าของ (Ownership) จะเป็นการระบุโดยผู้บริหารฐานข้อมูล หรือ DBA (Database Administrator) การระบุจะกำหนดว่า Object ไหนจะมีการ กระทำโดยผู้ใช้ใดและอย่างไร เจ้าของ Object จะถูกระบุโดยตัวระบุที่กำหนด ในประโยค Authorization ของ Object Schema
สิทธิในการใช้ (Privilege) SELECT สิทธิในการดึงข้อมูลจากตาราง INSERT สิทธิในการเพิ่มเร็คคอร์ดใหม่ลงในตาราง UPDATE สิทธิในการแก้ไขข้อมูลในเร็คคอร์ด DELETE สิทธิในการลบเร็คคอร์ดข้อมูลในตาราง REFERENCES สิทธิในการอ้างถึงคอลัมน์ต่างๆ ของ ตาราง ที่มีอยู่ในเงื่อนไขการบังคับความ ถูกต้องและ สมบูรณ์ ( Integrity Constraint) USAGE สิทธิในการใช้ Domain, Collations,Character Set และ Translation
การให้สิทธิแก่ผู้ใช้คนอื่น GRANT ON TO [WITH GRANT OPTION]
คำอธิบาย Privilege จะประกอบด้วยมีสิทธิการใช้ได้มากกว่าหนึ่ง มีสิทธิใน การใช้ comma ดังนี้ SELECT สิทธิในการดึงข้อมูลจากตาราง INSERT สิทธิในการเพิ่มเร็คคอร์ดใหม่ลงในตาราง UPDATE สิทธิในการแก้ไขข้อมูลในเร็คคอร์ด DELETE สิทธิในการลบเร็คคอร์ดข้อมูลในตาราง REFERENCES สิทธิในที่ผู้ใช้กำหนดคีย์นอกกับตารางที่ถูก อ้างอิง ALTER สิทธิในการแก้ไขโครงสร้างตาราง INDEX สิทธิที่ผู้ใช้สามารถสร้าง INDEX ให้กับ ตาราง โดยการใช้ คำสั่ง CREATE INDEX ALL การให้สิทธิทั้งหมดแก้ผู้ใช้
Object_name ชื่อ Table,View,Sequence Directory,Procedure… Grantee ผู้ใช้งานระบบ PUBLIC เป็นการอนุญาตให้สิทธิแก่ ผู้ใช้ทุกคน WITH GRANT OPTION เป็นการอนุญาตให้ผู้ใช้ สามารถผ่านสิทธิไปยังผู้ใช้ คนอื่นๆ ได้ คำอธิบาย ( ต่อ )
คำสั่งสร้างบัญชีผู้ใช้ใหม่ CREATE USER INDENTIFIED BY GRANT CONNECT TO GRANT RESOURCE TO
ตัวอย่าง GRANTALL ONsalereps TOscott WITH GRANT OPTION
ทดสอบ CONNECT SCOTT/TIGER; SELECT colum_name FROM ken.salereps;
การขอสิทธิคืน เมื่อมีการให้สิทธิแก่ผู้อื่นแล้ว เราสามารถเรียก สิทธิกลับคืนมาด้วยการใช้ คำสั่ง REVOKE โดยรูปแบบคำสั่งดังต่อไปนี้ REVOKE ON FROM [WITH GRANT OPTION]
Case Study ถ้ามีผู้ใช้คือนาย A ให้สิทธิกับนาย B ด้วย WITH GRANT OPTION จากนั้นนาย B ได้ผ่านสิทธิแก่นาย C ต่อมานาย C ได้สิทธิจากนาย E และได้ส่งผ่านสิทธิแก่นาย D ดังภาพ A B C E D