İzin istiflemeyi reddetme izni verme


9

Rol için db_denycustomer, yalnızca müşteri tablosunun sütun kodunun SEÇİLEBİLİR olmasını ve diğerlerinin yok olmasını istiyorum. Ben de bunu yaptım:

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

... ve iyi çalışıyor. Güzel! Ama neden ?

İlgili makalelerde okuduğum şey, izinlerin toplanmasıdır, ancak DENYöncelik taşır. Buna karşılık, benim durumumda, son izin "sorgu" öncelikli görünüyor. Elbette, bunları ters sırada çalıştırırsam, ikincisi DENYkod sütununu da gizler.

Bu konuyu biraz açıklayabilir misiniz?

Ayrıca test ettiğim kullanıcıya varsayılan db_datawriterve db_datareaderrolleri de dahil ettim.

Yanıtlar:


10

Bu, geriye dönük uyumluluk için sağlanan belgelenmiş davranıştır . Doküman alıntısı:

Dikkat Tablo düzeyindeki DENY, sütun düzeyindeki GRANT'a göre öncelikli değildir. İzinler hiyerarşisindeki bu tutarsızlık, geriye dönük uyumluluk için korunmuştur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.