Cấp quyền từ chối xếp chồng


9

Đối với vai trò db_denycustomer, tôi chỉ muốn mã cột của bảng khách hàng là CHỌN và không ai khác. Vì vậy, tôi đã làm điều này:

DENY SELECT ON dbo.customer TO db_denycustomer
GRANT SELECT ON dbo.customer (code) TO db_denycustomer

... Và nó hoạt động tốt. Mát mẻ! Nhưng tại sao ?

Những gì tôi đã đọc trong các bài viết liên quan là ngăn xếp quyền, nhưng DENYđược ưu tiên. Ngược lại, trong trường hợp của tôi, có vẻ như "truy vấn" quyền cuối cùng được ưu tiên. Chắc chắn, nếu tôi thực hiện chúng theo thứ tự ngược lại, thì cái sau cũng DENYẩn cột mã.

Bạn có thể vui lòng giải thích về điều này?

Tôi cũng đã bao gồm mặc định db_datawriterdb_datareadervai trò cho người dùng mà tôi đã thử nghiệm.

Câu trả lời:


10

Đây là hành vi được ghi nhận cung cấp cho khả năng tương thích ngược. Đoạn trích tài liệu:

Thận trọng DENY cấp độ bảng không được ưu tiên so với GRANT cấp cột. Sự không nhất quán này trong hệ thống phân cấp quyền đã được bảo tồn để tương thích ngược.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.