/ / Ngôn ngữ kiểm soát dữ liệu (DCL) cho quyền cơ sở dữ liệu

Ngôn ngữ kiểm soát dữ liệu (DCL) cho quyền cơ sở dữ liệu

Các Ngôn ngữ kiểm soát dữ liệu là một tập hợp con của Ngôn ngữ truy vấn có cấu trúc. Người quản trị cơ sở dữ liệu sử dụng DCL để cấu hình quyền truy cập bảo mật vào cơ sở dữ liệu quan hệ. Nó bổ sung cho Ngôn ngữ Định nghĩa Dữ liệu, thêm và xóa các đối tượng cơ sở dữ liệu và Ngôn ngữ thao tác dữ liệu, lấy, chèn và sửa đổi nội dung của cơ sở dữ liệu.


DCL là tập hợp con SQL đơn giản nhất, vì nó chỉ bao gồm ba lệnh: GRANT, REVOKE và DENY. Kết hợp lại, ba lệnh này cung cấp cho quản trị viên sự linh hoạt để thiết lập và loại bỏ các quyền cơ sở dữ liệu theo kiểu chi tiết.



Thêm quyền bằng lệnh GRANT

Lệnh GRANT thêm quyền mới cho người dùng cơ sở dữ liệu. Nó có một cú pháp rất đơn giản, được định nghĩa như sau:


GRANT [privilege]
ON [object]
TO [user]
[WITH GRANT OPTION]


Dưới đây là tóm tắt về từng tham số bạn có thể cung cấp bằng lệnh này:


  • Đặc quyền – có thể là từ khóa TẤT CẢ (để cấp nhiều quyền khác nhau) hoặc quyền cơ sở dữ liệu cụ thể hoặc tập hợp các quyền. Các ví dụ bao gồm TẠO CƠ SỞ DỮ LIỆU, CHỌN, CHÈN, CẬP NHẬT, XÓA, THỰC HIỆN và TẠO CHẾ ĐỘ XEM.
  • Vật – có thể là bất kỳ đối tượng cơ sở dữ liệu nào. Các tùy chọn đặc quyền hợp lệ khác nhau dựa trên loại đối tượng cơ sở dữ liệu mà bạn đưa vào điều khoản này. Thông thường, đối tượng sẽ là cơ sở dữ liệu, hàm, thủ tục được lưu trữ, bảng hoặc dạng xem.
  • Người dùng – có thể là bất kỳ người dùng cơ sở dữ liệu nào. Bạn cũng có thể thay thế một vai trò cho người dùng trong điều khoản này nếu bạn muốn sử dụng bảo mật cơ sở dữ liệu dựa trên vai trò.
  • Nếu bạn bao gồm tùy chọn VỚI LỰA CHỌN CẤP ở cuối lệnh GRANT, bạn không chỉ cấp cho người dùng được chỉ định các quyền được xác định trong câu lệnh SQL mà còn cấp cho người dùng quyền tiếp tục cấp các quyền đó cho khác người dùng cơ sở dữ liệu. Vì lý do này, hãy sử dụng điều khoản này một cách cẩn thận.


Ví dụ: giả sử bạn muốn cấp cho người dùng Joe khả năng lấy thông tin từ Nhân viên bảng trong cơ sở dữ liệu được gọi là Nhân sự. Sử dụng lệnh SQL sau:


GRANT SELECT
ON HR.employees
TO Joe


Joe có thể lấy thông tin từ bảng của nhân viên. Tuy nhiên, anh ta sẽ không thể cấp cho người dùng khác quyền truy xuất thông tin từ bảng đó bởi vì tập lệnh DCL không bao gồm điều khoản VỚI LỰA CHỌN CẤP.



Thu hồi quyền truy cập cơ sở dữ liệu

Lệnh REVOKE loại bỏ quyền truy cập cơ sở dữ liệu từ người dùng đã được cấp quyền truy cập đó trước đó. Cú pháp cho lệnh này được định nghĩa như sau:


REVOKE [GRANT OPTION FOR] [permission]
ON [object]
FROM [user]
[CASCADE]


Đây là tóm tắt về các tham số cho lệnh REVOKE:


  • Sự cho phép – chỉ định các quyền cơ sở dữ liệu để xóa khỏi người dùng đã xác định. Lệnh thu hồi cả xác nhận GRANT và DENY được thực hiện trước đó cho quyền đã xác định.
  • Vật – có thể là bất kỳ đối tượng cơ sở dữ liệu nào. Các tùy chọn đặc quyền hợp lệ khác nhau dựa trên loại đối tượng cơ sở dữ liệu mà bạn đưa vào điều khoản này. Thông thường, đối tượng sẽ là cơ sở dữ liệu, hàm, thủ tục được lưu trữ, bảng hoặc dạng xem.
  • Người dùng – có thể là bất kỳ người dùng cơ sở dữ liệu nào. Bạn cũng có thể thay thế một vai trò cho người dùng trong điều khoản này nếu bạn muốn sử dụng bảo mật cơ sở dữ liệu dựa trên vai trò.
  • Các CẤP LỰA CHỌN CHO mệnh đề loại bỏ khả năng của người dùng được chỉ định để cấp quyền đã chỉ định cho người dùng khác. Nếu bạn bao gồm CẤP LỰA CHỌN CHO trong câu lệnh REVOKE, quyền chính không bị thu hồi. Điều khoản này chỉ hủy bỏ khả năng cấp.
  • Các CASCADE tùy chọn cũng thu hồi quyền được chỉ định từ bất kỳ người dùng nào mà người dùng được chỉ định đã cấp quyền.


Lệnh sau thu hồi quyền đã cấp cho Joe trong ví dụ trước:


REVOKE SELECT
ON HR.employees
FROM Joe



Từ chối rõ ràng quyền truy cập cơ sở dữ liệu

Lệnh DENY ngăn người dùng nhận một quyền cụ thể. Tính năng này hữu ích khi người dùng là thành viên của vai trò hoặc nhóm được cấp quyền và bạn muốn ngăn người dùng cá nhân đó kế thừa quyền bằng cách tạo một ngoại lệ. Cú pháp của lệnh này như sau:


DENY [permission]
ON [object]
TO [user]


Các tham số cho lệnh DENY giống với các tham số được sử dụng cho lệnh GRANT. Ví dụ: nếu bạn muốn đảm bảo rằng Matthew sẽ không bao giờ nhận được khả năng xóa thông tin khỏi bảng của nhân viên, hãy ra lệnh sau:


DENY DELETE
ON HR.employees
TO Matthew


Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *