Czy zawsze wpis DENY ma priorytet przed GRANT przy ustawianiu uprawnień w SQL Serverze?
Czy zawsze wpis DENY ma priorytet przed GRANT przy ustawianiu uprawnień w SQL Serverze?
Nie zawsze. Jest kilka szczególnych przypadków:
-jeśli mamy Deny na uprawnieniu np. select do całej tabeli, a grant na uprawnieniu select do konkretnych kolumn tej tabeli, to grant dla kolumn będzie przykrywał deny dla całej tabeli (ale uwaga: jeśli wykonamy najpierw komendę grant dla kolumn, a potem deny dla całej tabeli, to deny usunie grant dla kolumn z ACL - żeby działało to tak jak napisałem powyżej, należy wykonać najpierw deny, a potem grant). Z drugiej strony, należy pamiętać, że opcja serwera "common compliance criteria" ustawiona na 1 powoduje, że deny ma zawsze priorytet (jest to jednak uboczny efekt działania tej opcji, a opcja ta domyślnie jest ustawiona na zero).
-jeśli login należy do roli sysadmin na poziomie serwera albo w danej bazie użytkownik należy do roli db_owner, to ma dostęp do wszystkiego (odpowiednio w ramach serwera lub konkretnej bazy danych) i żadne wpisy ACL nie są sprawdzane - stąd blokady dostępu przez DENY w takim przypadku nie działają.