logo xDuLieu.com

Trang trướcKiểm soát cơ sở dữ liệu bằng SQLTrang sau

SQL cho phép một số người dùng nhất định thực hiện một số tác vụ để kiểm soát sự hoạt động của cơ sở dữ liệu. Trong đó việc cấp hay thu hồi một số quyền (priviledge) nào đó là hai tác vụ quan trọng để những người dùng khác có thể tận dụng cơ sở dữ liệu, nhưng đồng thời vẫn đảm bảo an toàn cho hệ cơ sở dữ liệu.

Cấp quyền

 

Để người dùng có thể thực hiện một số thao tác trên cơ sở dữ liệu, họ phải được cấp các quyền tương ứng. Việc cấp quyền gồm 3 nội dung chủ yếu là cấp cho ai? có thể thực hiện các thao tác gì? và trên những đối tượng nào?

Phát biểu để cấp quyền có cú pháp như sau:

 GRANT <các thao tác được thực hiện>
     ON <các đối tượng>
     TO <người dùng> [ WITH GRANT OPTION ] ;

Trong phát biểu trên :

  • Các đối tượng thuộc một trong hai cấp độ là cấp độ hệ thống và cấp độ cơ sở dữ liệu. Ở đây chúng ta tập trung vào cấp độ cơ sở dữ liệu thôi.
  • Các thao tác chủ yếu mà người cấp quyền được thực hiện là truy vấn, đưa thêm dòng, xóa bớt dòng, thay đổi nội dung trong các bảng. Các từ khóa tương ứng là SELECT, INSERT, DELETE, và UPDATE. Từ khóa ALL PRIVILEGES được dùng cho tất cả các thao tác.
  • Người dùng có thể là mọi người (từ khóa PUBLIC), một người nào đó hay một nhóm người nào đó. Trong các trường hợp sau, người dùng thường được đại diện bằng một chuỗi định danh (user identifier).
  • Tùy chọn WITH GRANT OPTION : Theo mặc định, khi một người dùng A được cấp quyền Q thì người đó không thể cấp quyền Q ấy cho một người khác. Nếu ta muốn người dùng A cũng cấp được quyền Q cho một người khác thì ta sử dụng tùy chọn WITH GRANT OPTION. Khi đó quyền Q được cấp theo cơ chế lan truyền (passing).

Thí dụ ta muốn cấp quyền truy vấn các thông tin về họ tên và đơn vị của các nhân viên trong bảng Nhan_Vien cho mọi người thì ta dùng phát biểu sau:

 GRANT SELECT
     ON Nhan_Vien( HoTen, DonVi )
     TO PUBLIC ;

Nếu ta muốn cấp quyền rộng rãi cho người dùng "admin" khi truy cập bảng Sinh_Vien thì ta dùng phát biểu sau:

 GRANT ALL PRIVILEDGES
     ON Sinh_Vien
     TO admin ;

Tuy nhiên GRANT ALL PRIVILEGES có thể tạo ra nhiều nguy cơ do người được cấp có rất nhiều quyền hạn rộng rãi, vì thế chỉ nên sử dụng hạn chế. Ngoài ra một số hệ quản trị cơ sở dữ liệu đã loại bỏ quyền này.


Thu hồi quyền

 

Cũng gần giống như khi cấp quyền, 3 nội dung chủ yếu của phát biểu thu hồi quyền là thu hồi quyền thực hiện những thao tác gì? của ai? trên những đối tượng nào? Những nội dung này thể hiện qua cú pháp sau:

 REVOKE [ GRANT OPTION FOR ] <các thao tác bị thu hồi>
     ON   <các đối tượng>
     FROM <người bị thu hồi> { RESTRICT | CASCADE } ;

Trong phát biểu trên :

  • <các thao tác bị thu hổi>, <các đối tượng>, <người bị thu hồi> có ý nghĩa tương tự như các nội dung tương ứng trong phát biểu cấp quyền GRANT.
  • { RESTRICT | CASCADE } là hai tùy chọn có ý nghĩa tương tự như trong phát biểu DROP, nghĩa là nều quyền Q được cấp theo cơ chế lan truyền, thì khi gặp RESTRICT thì phát biểu REVOKE sẽ không được thực hiện, còn khi gặp CASCADE thì phát biểu REVOKE sẽ áp dụng cho tất cả mọi người dùng trên dây chuyền đó. Trong một số hệ quản trị cơ sở dữ liệu, RESTRICT là lựa chọn mặc định.
  • Khi dùng tùy chọn [ GRANT OPTION FOR ] thì người dùng chỉ bị mất khả năng cấp truyền quyền Q cho người dùng khác, còn bản thân mình vẫn còn quyền Q.

Thí dụ ta muốn thu hồi quyền truy vấn vào bảng Ban_Hang mà trước đây đã cấp cho các người dùng thuộc phòng Hành chính (có tên định danh là phchinh) và cả những người dùng có liên quan thì ta sử dụng phát biểu sau:

 REVOKE SELECT
     ON   Ban_Hang
     FROM phchinh CASCADE ;


Trang trướcVề đầu chươngTrang sau


Trang web này được cập nhật lần cuối ngày 25/11/2018