Ruoli a livello di database
Per gestire facilmente le autorizzazioni nei database, SQL Server fornisce diversi ruoli che sono entità di sicurezza che raggruppano altre entità. Sono come gruppi nel sistema operativo Microsoft Windows. L'ambito delle autorizzazioni dei ruoli a livello di database è l'intero database.
Esistono due tipi di ruoli a livello di database in SQL Server: ruoli predefiniti del database predefiniti nel database e ruoli flessibili del database che è possibile creare.
I ruoli predefiniti di database vengono definiti a livello del database e sono presenti in ogni database. I membri del ruolo del database db_owner possono gestire l'appartenenza al ruolo predefinito del database. Nel database msdb sono presenti inoltre alcuni ruoli predefiniti del database per scopi specifici.
È possibile aggiungere qualsiasi account di database e altri ruoli di SQL Server nei ruoli a livello di database. Tutti i membri di un ruolo predefinito del database possono aggiungere altri account di accesso allo stesso ruolo.
Importante
Evitare di aggiungere ruoli flessibili di database come membri di ruoli predefiniti, poiché in tal modo si potrebbe provocare un'imprevista intensificazione dei privilegi.
Nella tabella seguente sono mostrati i ruoli a livello di database predefinito e le relative funzionalità. Questi ruoli esistono in tutti i database.
Nome del ruolo a livello di database | Descrizione |
---|---|
db_owner | I membri del ruolo predefinito del database db_owner possono eseguire tutte le attività di configurazione e di manutenzione sul database e anche eliminare il database. |
db_securityadmin | I membri del ruolo predefinito del database db_securityadmin possono modificare le appartenenze al ruolo e gestire le autorizzazioni. L'aggiunta di entità a questo ruolo potrebbe provocare un'imprevista intensificazione dei privilegi. |
db_accessadmin | I membri del ruolo predefinito del database db_accessadmin possono aggiungere o rimuovere l'accesso al database per account di accesso di Windows, gruppi di Windows e account di accesso SQL Server. |
db_backupoperator | I membri del ruolo predefinito del database db_backupoperator possono eseguire il backup del database. |
db_ddladmin | I membri del ruolo predefinito del database db_ddladmin possono eseguire qualsiasi comando DDL (Data Definition Language) in un database. |
db_datawriter | I membri del ruolo predefinito del database db_datawriter possono aggiungere, eliminare o modificare i dati di tutte le tabelle utente. |
db_datareader | Membri del ruolo predefinito del database db_datareader possono leggere tutti i dati di tutte le tabelle utente. |
db_denydatawriter | I membri del ruolo predefinito del database db_denydatawriter non possono aggiungere, modificare o eliminare dati delle tabelle utente contenute in un database. |
db_denydatareader | I membri del ruolo predefinito del database db_denydatareader non possono leggere i dati delle tabelle utente contenute in un database. |
Ruoli msdb
Il database msdb contiene ruoli specifici per uno scopo illustrati nella tabella seguente.
Nome del ruolo in msdb | Descrizione |
---|---|
db_ssisadmin db_ssisoperator db_ssisltduser |
I membri di questi ruoli del database possono amministrare e usare SSIS. Le istanze di SQL Server aggiornate da una versione precedente potrebbero contenere una versione precedente del ruolo denominata usando Data Transformation Services (DTS) anziché SSIS. Per altre informazioni, vedere Ruoli di Integration Services (servizio SSIS). |
dc_admin dc_operator dc_proxy |
I membri di tali ruoli del database possono amministrare e utilizzare l'agente di raccolta dati. Per altre informazioni, vedere Data Collection. |
PolicyAdministratorRole | I membri del ruolo del database db_ PolicyAdministratorRole possono eseguire tutte le attività di configurazione e manutenzione su criteri e condizioni della gestione basata su criteri. Per altre informazioni, vedere Amministrare server usando la gestione basata su criteri. |
ServerGroupAdministratorRole ServerGroupReaderRole |
I membri di questi ruoli del database possono amministrare e utilizzare gruppi di server registrati. |
dbm_monitor | Creato nel msdb database quando il primo database viene registrato in Monitoraggio mirroring del database. Il ruolo dbm_monitor non include alcun membro fino a quando un amministratore di sistema non provvede all'assegnazione di utenti al ruolo stesso. |
Importante
I membri dei ruoli db_ssisadmin e dc_admin potrebbero essere in grado di elevare i loro privilegi a sysadmin. Questa elevazione dei privilegi può verificarsi perché tali ruoli possono modificare i pacchetti Integration Services e questi ultimi possono essere eseguiti da SQL Server usando il contesto di sicurezza sysadmin di SQL Server Agent. Per impedire questa elevazione dei privilegi durante l'esecuzione di piani di manutenzione, set di raccolta dati e altri pacchetti di Integration Services, configurare i processi di SQL Server Agent che eseguono pacchetti in modo che usino un account proxy con privilegi limitati o aggiungere solo i membri sysadmin ai ruoli db_ssisadmin e dc_admin.
Utilizzo di ruoli a livello di database
Nella tabella seguente vengono spiegati i comandi, le viste e le funzioni necessari per l'utilizzo dei ruoli a livello di database.
Funzionalità | Type | Descrizione |
---|---|---|
sp_helpdbfixedrole (Transact-SQL) | Metadati | Restituisce un elenco dei ruoli predefiniti del database. |
sp_dbfixedrolepermission (Transact-SQL) | Metadati | Visualizza le autorizzazioni di un ruolo predefinito del database. |
sp_helprole (Transact-SQL) | Metadati | Restituisce informazioni sui ruoli del database corrente. |
sp_helprolemember (Transact-SQL) | Metadati | Restituisce informazioni sui membri di un ruolo del database corrente. |
sys.database_role_members (Transact-SQL) | Metadati | Restituisce una riga per ogni membro di ogni ruolo del database. |
IS_MEMBER (Transact-SQL) | Metadati | Indica se l'utente corrente è membro del gruppo di Microsoft Windows o del ruolo di database di Microsoft SQL Server specificato. |
CREATE ROLE (Transact-SQL) | Comando | Crea un nuovo ruolo di database nel database corrente. |
ALTER ROLE (Transact-SQL) | Comando | Modifica il nome di un ruolo del database. |
DROP ROLE (Transact-SQL) | Comando | Rimuove un ruolo dal database. |
sp_addrole (Transact-SQL) | Comando | Crea un nuovo ruolo di database nel database corrente. |
sp_droprole (Transact-SQL) | Comando | Rimuove un ruolo del database dal database corrente. |
sp_addrolemember (Transact-SQL) | Comando | Aggiunge un utente del database, un ruolo del database, un account di accesso di Windows o un gruppo di Windows a un ruolo del database nel database corrente. |
sp_droprolemember (Transact-SQL) | Comando | Rimuove un account di sicurezza da un ruolo di SQL Server nel database corrente. |
Ruolo di database public
Ogni utente di database appartiene al ruolo di database public . Quando a un utente non sono state concesse o sono state negate autorizzazioni specifiche per un oggetto a protezione diretta, l'utente eredita le autorizzazioni concesse a public su tale oggetto.
Contenuto correlato
Viste del catalogo relative alla sicurezza (Transact-SQL)
Stored procedure di sicurezza (Transact-SQL)