บทบาทในฐานข้อมูลและการควบคุมการเข้าถึง

การออกแบบฐานข้อมูล

Lis Sulmont

Curriculum Manager

การให้และเพิกถอนสิทธิ์การเข้าถึงวิว

GRANT privilege(s) หรือ REVOKE privilege(s)

ON object

TO role หรือ FROM role

  • สิทธิ์: SELECT, INSERT, UPDATE, DELETE, ฯลฯ
  • อ็อบเจกต์: ตาราง, วิว, สคีมา, ฯลฯ
  • โรล: ผู้ใช้ฐานข้อมูลหรือกลุ่มผู้ใช้ฐานข้อมูล
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
การออกแบบฐานข้อมูล

โรลในฐานข้อมูล

  • จัดการสิทธิ์การเข้าถึงฐานข้อมูล
  • โรลในฐานข้อมูลคือเอนทิตีที่เก็บข้อมูล:
    • กำหนดสิทธิ์ของโรล
      • สามารถล็อกอินได้หรือไม่?
      • สามารถสร้างฐานข้อมูลได้หรือไม่?
      • สามารถเขียนข้อมูลลงตารางได้หรือไม่?
    • โต้ตอบกับระบบยืนยันตัวตนของ client
      • รหัสผ่าน
  • โรลสามารถกำหนดให้ผู้ใช้หนึ่งคนหรือมากกว่าได้
  • โรลมีผลทั่วทั้ง database cluster
การออกแบบฐานข้อมูล

การสร้างโรล

  • โรลว่างเปล่า
CREATE ROLE data_analyst;
  • โรลที่กำหนด attribute บางอย่าง
CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
CREATE ROLE admin CREATEDB;
ALTER ROLE admin CREATEROLE;
1 http://bit.ly/postgresql_attributes
การออกแบบฐานข้อมูล

การ GRANT และ REVOKE สิทธิ์จากโรล

GRANT UPDATE ON ratings TO data_analyst;
REVOKE UPDATE ON ratings FROM data_analyst;

สิทธิ์ที่ใช้ได้ใน PostgreSQL มีดังนี้:

  • SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE, และ USAGE
1 http://bit.ly/postgresql_privileges
การออกแบบฐานข้อมูล

ผู้ใช้และกลุ่ม (ล้วนเป็นโรล)

  • โรลคือเอนทิตีที่ทำหน้าที่เป็นผู้ใช้และ/หรือกลุ่มได้
    • โรลผู้ใช้
    • โรลกลุ่ม

กราฟิกโรลที่วงกลมด้านนอกแทนโรลกลุ่ม และวงกลมด้านในสามวงแทนโรลผู้ใช้

การออกแบบฐานข้อมูล

ผู้ใช้และกลุ่ม (ล้วนเป็นโรล)

โรลกลุ่ม

CREATE ROLE data_analyst;

โรลผู้ใช้

CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
การออกแบบฐานข้อมูล

ผู้ใช้และกลุ่ม (ล้วนเป็นโรล)

โรลกลุ่ม

CREATE ROLE data_analyst;

โรลผู้ใช้

CREATE ROLE alex WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
การออกแบบฐานข้อมูล

โรล PostgreSQL ที่ใช้บ่อย

โรล การเข้าถึงที่อนุญาต
pg_read_all_settings อ่านตัวแปรการกำหนดค่าทั้งหมด รวมถึงที่ปกติมองเห็นได้เฉพาะ superuser
pg_read_all_stats อ่าน view pg_stat_* ทั้งหมดและใช้ extension ด้านสถิติต่าง ๆ รวมถึงที่ปกติมองเห็นได้เฉพาะ superuser
pg_signal_backend ส่งสัญญาณไปยัง backend อื่น (เช่น ยกเลิกคิวรี, สิ้นสุดการทำงาน)
เพิ่มเติม... เพิ่มเติม...
1 http://bit.ly/default_roles_postgresql
การออกแบบฐานข้อมูล

ข้อดีและข้อควรระวังของโรล

ข้อดี

  • โรลยังคงอยู่แม้ผู้ใช้ถูกลบไปแล้ว
  • สร้างโรลได้ก่อนสร้างบัญชีผู้ใช้
  • ช่วยประหยัดเวลา DBA

ข้อควรระวัง

  • บางครั้งโรลอาจให้สิทธิ์แก่ผู้ใช้มากเกินไป
    • ต้องตรวจสอบอย่างรอบคอบ
การออกแบบฐานข้อมูล

มาฝึกกันเถอะ!

การออกแบบฐานข้อมูล

Preparing Video For Download...