Computer >> Máy Tính >  >> Phần mềm >> Office

Ngôn ngữ kiểm soát dữ liệu (DCL)

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 các 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.
  • Đối tượng - 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ế 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 TÙY 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 tương tự đó cho người khác người dùng cơ sở dữ liệu. Vì lý do này, hãy cẩn thận khi sử dụng mệnh đề này.

Ví dụ:giả sử bạn muốn cấp cho người dùng Joe khả năng truy xuất thông tin từ nhân viên bảng trong cơ sở dữ liệu có tên là HR . 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 xóa 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 của 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:

  • Quyền - chỉ định các quyền cơ sở dữ liệu để xóa khỏi người dùng đã xác định. Lệnh hủy bỏ cả xác nhận GRANT và DENY được thực hiện trước đó cho quyền đã xác định.
  • Đối tượng - 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 chế độ 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ế 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ò.
  • LỰA CHỌN CẤP 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 LỰA CHỌN CẤP CHO mệnh đề 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.
  • CASCADE tùy chọn cũng thu hồi quyền đã 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