reede, 3. juuli 2009

Andmebaasi stuktuuri kaitsmine VIEW DEFINITION õiguse keelamisega PUBLIC rollil

Iga kasutaja, mis MS SQL SERVER-il tehakse ja kellele antakse ligipääs mingile andmebaasile pannaks vaikimisi ka selle andmebaasi PUBLIC rolli. Mille tulemusena saab kasutaja näha, mis protseduurid ja tabelid selles andmebaasis olemas on, ehk näha andmebaasi struktuuri kirjeldust.

Rakenduse toimimiseks ei pruugi aga andmebaasi struktuuri kirjelduse teada olemine üldse vajalik olla. Seda saab piirata, kui keelata andmebaasi PUBLIC rollil VIEW DEFINITION õigus.

DENY VIEW DEFINITION TO public

Lõpeb nüüd asi sellega, et kui kasutaja baasi sisu vaatab ei näe ta sealt midagi. Avab näiteks Management Studioga baasi aga seal ei näita baasi struktuurist mitte kui midagi

Isegi, kui temale on andmebaasisi DB_OWNER õigused antud, siis saab ta näha vaid tabelite sturkuuri aga ei saa tabelite struktuuri muuta.
Saab veateate Tabel TABELINIMI is set to read only, user doesn't have enough rights on this table

Kõrvalnäht, mis kaasneb Visual Studio2008 kasutamisega on see, et kui projektis on datasetid (xsd failid) siis seal sees tabeladapterite muutmisel ei näidata näiteks enam salvestatud protseduuride nimekirja.

Õiguse saab tagasi panna
GRANT VIEW DEFINITION TO public