Gewähren Sie das Stapeln von Berechtigungen


9

Für die Rolle db_denycustomermöchte ich, dass nur der Spaltencode der Kundentabelle AUSWÄHLBAR ist und keiner der anderen. Also habe ich das gemacht:

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

... und es funktioniert gut. Cool! Aber warum ?

Was ich in verwandten Artikeln gelesen habe, ist, dass Berechtigungen gestapelt werden, aber DENYVorrang haben. Im Gegensatz dazu scheint in meinem Fall die letzte Berechtigungs- "Abfrage" Vorrang zu haben. Sicher genug, wenn ich sie in umgekehrter Reihenfolge ausführe, DENYverbirgt letzterer auch die Codespalte.

Könnten Sie das bitte näher erläutern?

Ich habe dem Benutzer, mit dem ich getestet habe, auch die Standardeinstellungen db_datawriterund db_datareaderRollen hinzugefügt.

Antworten:


10

Dies ist ein dokumentiertes Verhalten, das aus Gründen der Abwärtskompatibilität bereitgestellt wird. Dokumentationsauszug:

Achtung Ein DENY auf Tabellenebene hat keinen Vorrang vor einem GRANT auf Spaltenebene. Diese Inkonsistenz in der Berechtigungshierarchie wurde aus Gründen der Abwärtskompatibilität beibehalten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.