siquellando

...scoperte e considerazioni Sql di uno sviluppista
(un po' sviluppatore e un po' sistemista)

Limitare i permessi solo ad uno schema

Una volta fatto si dimostra ovvio e banale, ma siccome ci ho messo un po' di tempo per trovare come fare... Lo posto caso mai possa servire a qualcun altro.

La funzionalita' da implementare e' la seguente: su un database Sql2005 poter consentire ad alcuni utenti il pieno controllo su uno schema, inclusa la creazione, e la modifica delle tabelle, mentre sugli oggetti degli altri schema non devono poter operare in alcun modo (neanche leggere).

La soluzione consiste nel non assegnare all'utente alcun ruolo e dargli esplicitamente (tramite grant) il controllo dello schema su cui possono operare.

Supponendo che lo user alfa debba poter agire indisturbato solo sullo schema A1, le istruzioni saranno:

-- tolgo l'user da tutti i ruoli

exec sp_droprolemember 'db_owner', 'alfa'

exec sp_droprolemember 'db_accessadmin', 'alfa'

exec sp_droprolemember 'db_backupoperator', 'alfa'

exec sp_droprolemember 'db_datareader', 'alfa'

exec sp_droprolemember 'db_datawriter', 'alfa'

exec sp_droprolemember 'db_ddladmin', 'alfa'

exec sp_droprolemember 'db_securityadmin', 'alfa'

-- gli do' pieni diritti sullo schema A1

GRANT CONTROL ON SCHEMA::A1 TO Alfa ;