Udziel odmowy stosu uprawnień


9

W przypadku tej roli db_denycustomerchcę, aby można było WYBIERAĆ tylko kod kolumny tabeli klienta, i żaden z pozostałych. Więc zrobiłem to:

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

... i działa dobrze. Fajne! Ale dlaczego ?

W pokrewnych artykułach przeczytałem o stosie uprawnień, ale DENYma on pierwszeństwo. Natomiast w moim przypadku wydaje się, że ostatnie zapytanie „zapytanie” miało pierwszeństwo. Oczywiście, jeśli wykonam je w odwrotnej kolejności, ta druga również DENYukrywa kolumnę kodu.

Czy mógłbyś rozwinąć tę kwestię?

Podałem również domyślne db_datawriteri db_datareaderrole użytkownika, z którym testowałem.

Odpowiedzi:


10

Jest to udokumentowane zachowanie zapewniające zgodność wsteczną. Fragment dokumentacji:

Przestroga Odmowa na poziomie tabeli nie ma pierwszeństwa przed DOTACJĄ na poziomie kolumny. Ta niespójność w hierarchii uprawnień została zachowana dla kompatybilności wstecznej.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.