Vai trò cơ sở dữ liệu và kiểm soát truy cập

Thiết kế cơ sở dữ liệu

Lis Sulmont

Curriculum Manager

Cấp và thu hồi quyền cho view

GRANT privilege(s) hoặc REVOKE privilege(s)

ON object

TO role hoặc FROM role

  • Quyền: SELECT, INSERT, UPDATE, DELETE, v.v.
  • Đối tượng: table, view, schema, v.v.
  • Vai trò: người dùng DB hoặc nhóm người dùng DB
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
Thiết kế cơ sở dữ liệu

Vai trò cơ sở dữ liệu

  • Quản lý quyền truy cập cơ sở dữ liệu
  • Vai trò là thực thể chứa thông tin để:
    • Xác định quyền của vai trò
      • Có thể đăng nhập?
      • Có thể tạo database?
      • Có thể ghi vào bảng?
    • Tương tác với hệ thống xác thực client
      • Mật khẩu
  • Vai trò có thể gán cho một hay nhiều người dùng
  • Vai trò là toàn cục trên cài đặt cụm cơ sở dữ liệu
Thiết kế cơ sở dữ liệu

Tạo vai trò

  • Vai trò trống
CREATE ROLE data_analyst;
  • Vai trò có thuộc tính
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
Thiết kế cơ sở dữ liệu

Cấp và thu hồi quyền cho vai trò

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

Các quyền có sẵn trong PostgreSQL gồm:

  • SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE, và USAGE
1 http://bit.ly/postgresql_privileges
Thiết kế cơ sở dữ liệu

Người dùng và nhóm (đều là vai trò)

  • Vai trò là thực thể có thể hoạt động như người dùng và/hoặc nhóm
    • Vai trò người dùng
    • Vai trò nhóm

Đồ họa về Vai trò: vòng tròn ngoài là vai trò nhóm, ba vòng tròn trong là vai trò người dùng

Thiết kế cơ sở dữ liệu

Người dùng và nhóm (đều là vai trò)

Vai trò nhóm

CREATE ROLE data_analyst;

Vai trò người dùng

CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
Thiết kế cơ sở dữ liệu

Người dùng và nhóm (đều là vai trò)

Vai trò nhóm

CREATE ROLE data_analyst;

Vai trò người dùng

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

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
Thiết kế cơ sở dữ liệu

Các vai trò PostgreSQL phổ biến

Vai trò Quyền truy cập
pg_read_all_settings Đọc mọi biến cấu hình, kể cả biến chỉ siêu quản trị thấy.
pg_read_all_stats Đọc mọi view pg_stat_* và dùng các extension thống kê, kể cả phần chỉ siêu quản trị thấy.
pg_signal_backend Gửi tín hiệu tới backend khác (vd: hủy truy vấn, kết thúc).
More... More...
1 http://bit.ly/default_roles_postgresql
Thiết kế cơ sở dữ liệu

Lợi ích và rủi ro của vai trò

Lợi ích

  • Vai trò tồn tại sau khi xóa người dùng
  • Có thể tạo vai trò trước tài khoản người dùng
  • Tiết kiệm thời gian cho DBA

Rủi ro

  • Đôi khi vai trò cấp quá nhiều quyền cho một người dùng
    • Cần chú ý
Thiết kế cơ sở dữ liệu

Ayo berlatih!

Thiết kế cơ sở dữ liệu

Preparing Video For Download...