8/14/2555

สิทธิในการเข้าถึงข้อมูล

 
ความปลอดภัยของ ข้อมูล (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
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
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) ได้

0 ความคิดเห็น:

แสดงความคิดเห็น