KM KPN | แหล่งเรียนรู้ โรงพยาบาลกรงปินัง

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

สิทธิในการเข้าถึงฐานข้อมูล
« เมื่อ: สิงหาคม 16, 2021, 01:27:10 pm »
สิทธิในการเข้าถึงข้อมูล

ความปลอดภัยของข้อมูล (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>ON <table name> TO <user name>;

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>ON <table name> FROM <user name>;

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) ได้