Individuare tutti i permessi di un utente

Capita molto spesso che mi si chieda come fare ad avere un report su tutti i permessi assegnati ad un utente in un database. Sia in Enterprise Manager con le versioni precedenti di SQL Server che in SQL Server Management Studio con la versione 2005, è possibile visualizzare i permessi di un utente o di un database role; se però l'utente oltre ad avere assegnati dei permessi in maniera diretta (cosa sempre sconsigliabile) dispone anche di altri permessi derivanti dall'appartenenza ad uno o più database role, ottenere la lista dei permessi risultanti diventa più complesso.

La soluzione arriva dalla funzione fn_my_permissions che, benchè come dica il nome serva a restituire l'elenco dei propri permessi, può essere utilizzata in un execution context da parte di un utente con privilegi adeguati per impersonare temporaneamente l'utente di cui vuole ottenere la lista dei permessi, siano essi assegnati direttamente allo user in questione che derivanti dalla sua appartenenza ad uno o più database roles.

Nello script seguente sono riportati gli step per testare la soluzione

CREATE DATABASE Test
GO

CREATE LOGIN MyLogin WITH PASSWORD = 'ComplexP@s$w0rd'
GO

USE Test
GO

CREATE USER MyUser FOR LOGIN MyLogin
GO

CREATE ROLE MyRole
GO

EXEC sp_addrolemember 'MyRole', 'MyUser'
GO

CREATE TABLE dbo.MyTable
(
 ID int not null
)
GO

CREATE TABLE dbo.MyTableBis
(
 ID int not null
)
GO

GRANT SELECT ON dbo.MyTable TO MyRole
GO

GRANT INSERT, UPDATE, DELETE ON dbo.MyTable TO MyUser
GO

EXECUTE AS USER = 'MyUser'

SELECT TABLE_SCHEMA, TABLE_NAME, permission_name
FROM INFORMATION_SCHEMA.TABLES
 CROSS APPLY fn_my_permissions(TABLE_SCHEMA + '.' + TABLE_NAME, 'OBJECT')

REVERT


Nella stessa categoria

Commenti

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

© 1998-2008 - SQL Server a 360° - Il blog di Luca Bianchi

TagCloud
BLOG INFO
  • Post: 100
  • Commenti: 40
  • TrackBacks: 23
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom OPML

MVP
CATEGORIE
I PIÙ LETTI DEL MESE
IN EVIDENZA