ความปลอดภัยของ
ข้อมูล
(security)
เป็นเรื่องที่เกี่ยวข้องกับการป้องกันผู้ใช้ที่ไม่มีอำนาจในการเรียกใช้
ข้อมูลนำข้อมูลจากฐานข้อมูลมาใช้
อันอาจจะเกิดผลเสียกับระบบฐานข้อมูลได้
ในระบบที่มีผู้ใช้เป็นจำนวนมากจำเป็นต้องมีการควบคุมการเรียกใช้ข้อมูล
การกำหนดสิทธิในการเข้าถึงข้อมูล
DBAจะกำหนด การให้สิทธิ
(Authorization)แก่ผู้ใช้งานระบบฐานข้อมูลให้มีสิทธิในการใช้ข้อมูลแตกต่าง
กัน
เช่น
-
สิทธิในการอ่านข้อมูลหรือเรียกดูข้อมูล
(read)
-
สิทธิในการเพิ่มข้อมูล (insert)
-
สิทธิในการเปลี่ยนแปลงข้อมูล
(update)
-
สิทธิในการลบข้อมูล (delete)
-
สิทธิในการสร้างดัชนี (index)
-
สิทธิในการสร้างตารางหรือวิว
(resource)
-
สิทธิในการเปลี่ยนแปลงโครงสร้างข้อมูล
(alteration)
-
สิทธิในการลบตารางหรือวิว (drop)
การกำหนดสิทธิในการ
เข้าถึงข้อมูล
และมอบอำนาจการเข้าถึงข้อมูลตลอดจนเรียกคืนอำนาจได้
DBAจะระบุสิทธิผู้ใช้ในระบบด้วยภาษา
SQL ได้ดังนี้
1.การให้รหัสแก่ผู้ใช้
เป็น
การกำหนดรหัสผ่านให้แก่ผู้ใช้
โดยใช้คำสั่ง CREATE เช่น
ถ้าต้องการสร้างสิทธิให้แก่ผู้ใช้ชื่อ
Wichaiให้เข้าในระบบฐานข้อมูลได้ในเบื้องต้นที่จะเข้าสู่ฐานข้อมูลได้จะต้อง
มีการยืนยันตัวบุคคลว่าเป็น
Wichai
จริงโดยระบบการจัดการฐานข้อมูลจะต้องทำการตรวจเช็คจารรหัสผ่านที่กำหนดให้
กับ
Wichai DBA จะสร้างรหัสผ่านให้แก่
Wichai ด้วยภาษา SQL
โดยในตัวอย่างนี้ Wichai
จะมีรหัสผ่านว่า BENZ2000
CREATE Wichai
IDENTIFIED
BY BENZ2000
นอกจากการให้รหัส
แก่ผู้ใช้ในการใช้ฐานข้อมูลแล้ว
ผู้ใช้จะถูกกำหนดโดย DBA
ให้สามารถใช้ฐานข้อมูลในส่วนที่เกี่ยวข้องได้เท่านั้น
การกำหนดสิทธิแก่ผู้ใช้ให้สามารถใช้ฐานข้มูล
โดยกำหนดขอบเขตอำนาจการใช้ข้อมูล
เราสามารถกำหนดสิทธิใดสิทธิหนึ่ง
หรือบางสิทธิ
หรือทุกสิทธิให้กับผู้ใช้งานได้
สิทธิการใช้งานจะมี
กี่ชนิดขึ้นอยู่กับเป้าหมายที่ต้องการกำหนดสิทธิ
เช่นสิทธิการทำงานกับตารางข้อมูลอาจมีเพียงแค่อ่านและเขียนข้อมูล
DBA
จะจะทำการกำหนดสิทธิด้วยภาษา
SQL
คำสั่งที่ใช้ในการกำหนดสิทธิกับผู้ใช้ได้แก่
การกำหนดสิทธิการ
เข้าถึงข้อมูล
ด้วยคำสั่ง GRANT และ
การยกเลิกสิทธิการเข้าถึงข้อมูล
ด้วยคำสั่ง REVOKE
2.
การกำหนดสิทธิการเข้าถึงข้อมูล
ในการกำหนดสิทธิการ
เข้าถึงข้อมูลผู้ใช้
(USERS)
ในระบบการจัดการฐานข้อมูลโดยภาษา
SQL
จะมีการกำหนดหรืออนุญาติให้มีสิทธิเปิดเข้าใช้
(LOGGING ON) ฐานข้อมูล
การกำหนดสิทธิการเข้าถึงข้อมูลเป็นคำสั่งที่ใช้กำหนดสิทธิให้กับผู้ใช้แต่ละ
คนมีสิทธิกระทำการใดกับข้อมูล
เช่น การเพิ่มข้อมูล
การแก้ไขข้อมูลหรือการลบข้อมูลในตารางใดได้บ้างหรือการกำหนดให้มีสิทธิดู
ข้อมูลได้เพียงอย่างเดียว
การกำหนดสิทธิในการเข้าถึงข้อมูล
ได้แก่
การเรียกค้นข้อมูลด้วยคำสั่ง
(SELECT)
การเพิ่มข้อมูลมูลด้วยคำสั่ง
(INSERT)
การลบข้อมูลมูลด้วยคำสั่ง (DELETE)
หรือการปรับปรุง
มูลด้วยคำสั่ง (UPDATE)
ซึ่งการกำหนดสิทธิเหล่านี้จะอยู่ในรูปแบบของคำสั่ง
GRANT เป็นดังนี้
GRANT
คำสั่งที่ต้องมีทุกครั้งที่ต้องการกำหนดสิทธิการเข้าถึงข้อมูล
SELECT,INSERT,UPDATE,DELETE
สิทธิในการจัดการข้อมูล
table name
ตารางหรือวิวที่ให้สิทธิในการจัดการข้อมูล
user name
ผู้ใช้ที่ถูกให้สิทธิในการจัดการข้อมูล
2.1
การกำหนดสิทธิในการเรียกดูข้อมูล
ถ้าต้องการให้ Wichai
มีสิทธิเรียกดูข้อมูลในตาราง
CUSTOMERSTAB
คำสั่งการกำหนดสิทธิเข้าถึงข้อมูลในภาษา
SQL จะเป็นดังนี้
GRANT
SELECT ON CUSTOMERSTAB TO Wichai;
ผลของคำสั่งนี้
Wichai
จะสามารถเข้าถึงข้อมูลในตาราง
CUSTOMERSTAB
ได้โดยสามารถใช้คำสั่งเรียกค้นข้อมูล(SELECT)
ได้เท่านั้นแต่ไม่สามารถใช้คำสั่งอื่น
ๆ ได้
2.2
การกำหนดสิทธิในการเพิ่มข้อมูล
ถ้าต้องการให้ Thidarat
มีสิทธิเพิ่มเติมข้อมูลในตาราง
SALESTAB
คำสั่งการกำหนดสิทธิเข้าถึงข้อมูลก็จะเป็นดังนี้
GRANT
INSERT ON SALESTAB TO Thidarat;
ผลของคำสั่งนี้
Thidarat
สามารถเข้าถึงข้อมูลในตาราง
SALESTAB
ได้โดยสามารถใช้คำสั่งเพิ่มเติมข้อมูล
(INSERT)
ได้เท่านั้นแต่ไม่สามารถใช้คำสั่งอื่น
ๆ ได้
2.3
การกำหนดสิทธิในการแก้ไขข้อมูล
ถ้าต้องการให้
Thidarat มีสิทธิในการแก้ไขข้อมูล(UPDATE)ในตาราง
SALESTAB
คำสั่งการกำหนดสิทธิเข้าถึงข้อมูลก็จะเป็นดังนี้
GRANT
UPDATE ON SALESTAB TO Thidarat;
ผลของคำสั่งนี้
Thidarat
สามารถเข้าถึงข้อมูลในตาราง
SALESTAB
ได้โดยสามารถใช้คำสั่งปรับปรุงข้อมูล(UPDATE)
ได้เท่านั้นแต่ไม่สามารถใช้คำสั่งอื่น
ๆ ได้
2.4
การกำหนดสิทธิการเข้าถึงข้อมูลหลายคำสั่งของผู้ใช้เป็นกลุ่ม
ในการกำหนดสิทธิการเข้าถึงข้อมูลสามารถกำหนดสิทธิในการเข้าถึงข้อมูลเป็น
กลุ่มได้
ดังนี้
ถ้าต้องการให้
Wichai สามารถเรียกดูข้อมูล
และเพิ่มข้อมูลได้ในตาราง
ORDERSTAB คำสั่งที่ใช้ดังนี้
GRANT
SELECT, INSERT ON ORDERSTAB TO Wichai;
ผลของคำสั่งจะทำให้
Wichai สามารถใช้คำสั่ง SELECT
และคำสั่ง INSERT ในตาราง Order ได้
ถ้าต้องการให้ทั้ง
Wichai และ Thidarat สามารถใช้คำสั่ง SELECT
และ INSERT ได้
จะต้องใช้การกำหนดสิทธิการเข้าถึงข้อมูลดังนี้
GRANT
SELECT, INSERT ON ORDERSTAB TO Wichai, Thidarat;
2.5การกำหนดสิทธิ
การเข้าถึงข้อมูลโดยสามารถเข้าถึงข้อมูลบางส่วน
เราสามารถกำหนดสิทธิการเข้าถึงข้อมูลเป็นคอลัมน์ได้
ถ้าต้องการ
Thidarat
มีสิทธิเปลี่ยนค่าในคอลัมน์
SALECOM ในตาราง SALESTAB
ได้เพียงคอลัมน์เดียว
จะใช้คำสั่ง
GRANT UPDATE
(SALECOM)
ON SALESTAB TO Thidarat;
ผลของคำสั่งจะทำให้
Thidarat สามารถปรับปรุงข้อมูล( UPDATE)
ในคอลัมน์ SALECOMในตาราง
พนักงานขาย(SALESTAB)
ได้เพียงคอลัมน์เดียว
ถ้าต้องการให้
Thidarat
มีสิทธิเข้าถึงข้อมูลได้มากกว่า
1 คอลัมน์
โดยสามารถปรับปรุงข้อมูลในคอลัมน์
ADDRESS และ SALECOM ในตาราง SALESTAB ได้
GRANT
UPDATE (ADDRESS,SALECOM) ON SALESTAB TO Thidarat;
ผลของคำสั่งจะทำให้
Thidarat ปรับปรุงข้อมูล(UPDATE)ในคอลัมน์
ADDRESS และ SALECOM ในตารางพนักงานขาย(
SALESTAB) ได้เพียงคอลัมน์เดียว
2.6
การให้สิทธิในการเข้าถึงข้อมูลทั้งหมด
ในการกำหนดสิทธิในการเข้าถึงข้อมูลทั้งหมดในภาษา
SQL สามารถใช้คำสั่งใน 2 ลักษณะ
ดังนี้
-การใช้ ALL
PRIVILEGES (หรือ ALL เท่านั้น)
ในคำสั่ง GRANT
ถ้าต้องการให้
Nattapol สามารถทำคำสั่งใด ๆ
ในตาราง CUSTOMERSTAB ได้
GRANT
ALL PRIVILEGES ON CUSTOMERSTAB TO Nattapol;
หรือ
GRANT
ALL ON CUSTOMERSTAB TO Nattapol;
-การใช้ PUBLIC
ในคำสั่ง GRANT
เป็นการให้สิทธิในการเรียกดูข้อมูลแก่ผู้ใช้ทุกคน
โดยจะใช้ PUBLIC
ร่วมด้วยกับคำสั่ง SELECT
ควบคู่ไปกับคำสั่ง GRANT เช่น
ถ้าต้องการให้ผู้
ใช้คนไหนก็ได้เข้าไปดูตารางคำสั่งซื้อจะใช้คำสั่งดังนี้
GRANT
SELECT ON ORDERSTAB TO PUBLIC ;
การใช้คำสั่ง
GRANT
ในรูปของการให้สิทธิแก่ผู้ใช้ทั้งหมดในการแก้ไขปรับปรุงตารางข้อมูลได้จะ
เป็นอันตรายต่อข้อมูลมาก
จึงควรระมัดระวังในการใช้คำสั่ง
GRANT กับ PUBLIC ให้มาก
2.7
การอนุญาตให้คนอื่นให้สิทธิการเข้าถึงตารางแทนเจ้าของตาราง
ในบางครั้งผู้สร้างตารางอาจต้องการให้ผู้ใช้คนอื่นสามารถให้สิทธิต่าง
ๆ ในตารางได้โดยใช้ GRANT SELECT
ร่วมกับอนุประโยค WITH GRANT OPTION
ถ้า Thidarat
ซึ่งเป็นเจ้าของตาราง CUSTOMERSTAB
ต้องการให้ Wichai
มีสิทธิอนุญาตให้ผู้ใช้คนอื่น
ๆ
มาใช้ตารางของตนจะใช้คำสั่งดังนี้
GRANT
SELECT ON CUSTOMERSTAB TO Wichai WITH GRANT OPTION;
ผลของคำสั่งนี้จะทำ
ให้
Wichai
มีสิทธิในการเลือกให้สิทธิ
(SELECT) แก่บุคคลที่สามได้ที่
3.การยกเลิกสิทธิการเข้าถึงข้อมูล
คำสั่งการยกเลิก
สิทธิการเข้าถึงข้อมูลเป็นคำสั่งการยกเลิกสิทธิใดๆแก่ผู้ใช้ตามที่ได้ใช้
กำหนดสิทธิการเข้าถึงข้อมูลไว้
คำสั่งการยกเลิกสิทธิการเข้าถึงข้อมูลมีรูปแบบคือ
REVOKE
เป็นคำสั่งที่ต้องมีทุกครั้งที่ต้องการยกเลิกสิทธิการเข้าถึงข้อมูล
SELECT,INSERT,UPDATE,DELETE
สิทธิในการจัดการข้อมูล
table name
ตารางหรือวิวที่ให้สิทธิในการจัดการข้อมูล
user name
ผู้ใช้ที่ถูกให้สิทธิในการจัดการข้อมูล
3.1
การยกเลิกสิทธิในการเรียกดูข้อมูล
3.2
การยกเลิกสิทธิในการแก้ไขและลบข้อมูล
ถ้าต้องการยกเลิก
สิทธิในการแก้ไขข้อมูลในตารางพนักงานขาย(SALESTAB)
ของ Thidarat
คำสั่งการยกเลิกสิทธิเข้าถึงข้อมูลดังนี้
REVOKE UPDATE ON
SALESTAB TO Thidarat;
ผลจากคำสั่งนี้
Thidarat
จะไม่สามารถแก้ไขข้อมูลในตารางพนักงานขาย(SALESTAB)
ได้
ถ้าต้องการยกเลิก
สิทธิในการเพิ่มเติมข้อมูลในตารางคำสั่งซื้อ(ORDERSTAB)ของ
Thidarat จะใช้คำสั่งดังนี้
REVOKE
INSERT ON ORDERSTAB FROM Wichai;
ผลจากคำสั่งนี้
Wichai
จะไม่สามารถเพิ่มเติมข้อมูลในตารางคำสั่งซื่อ(
ORDERSTAB) ได้ถ้าต้องการยกเลิกสิทธิในการเพิ่มเติมข้อมูลและการลบ
ข้อมูลในตารางลูกค้า(
CUSTOMERSTAB) ของ Wichai และ Nattapol
จะใชคำสั่งดังนี้
REVOKE
INSERT,DELETE ON CUSTOMERSTAB FROM Wichai,Nattapol;
ผลจากคำสั่งนี้
Wichai และ Nattapol
จะไม่สามารถเพิ่มเติมข้อมูลหรือลบข้อมูลในตาราง
ลูกค้า(CUSTOMERSTAB) ได้