Ruoli a livello di database

Per una facile gestione delle autorizzazioni dei database, SQL Server fornisce diversi ruoli rappresentanti entità di sicurezza all'interno delle quali sono raggruppate altre entità. I ruoli sono analoghi ai gruppi nel sistema operativo Microsoft Windows. L'ambito delle autorizzazioni dei ruoli a livello di database è l'intero database. 

In SQL Server sono disponibili due tipi di ruoli a livello di database, ovvero i ruoli predefiniti di database e i ruoli flessibili di database. Questi ultimi possono essere creati dall'utente.

I ruoli predefiniti di database vengono definiti a livello del database e sono presenti in ogni database. I membri dei ruoli di database db_owner e db_securityadmin possono gestire l'appartenenza al ruolo predefinito di database. Solo i membri del ruolo di database db_owner, tuttavia, possono aggiungere membri al ruolo predefinito di database db_owner. Nel database msdb sono presenti inoltre alcuni ruoli predefiniti del database per scopi specifici.

È possibile aggiungere qualsiasi account del database e altri ruoli SQL Server ai ruoli a livello di database. Tutti i membri di un ruolo predefinito del database possono aggiungere altri account di accesso allo stesso ruolo.

Nota importanteImportante

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 le autorizzazioni di accesso al database per gli account di accesso di Windows, i gruppi di Windows e gli account di accesso di 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.

Per informazioni specifiche sulle autorizzazioni ai ruoli predefiniti a livello di database, vedere Autorizzazioni dei ruoli predefiniti del database (Motore di 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 tali ruoli del database possono amministrare e utilizzare SSIS. In istanze di SQL Server aggiornate da una versione precedente potrebbe essere presente una versione precedente del ruolo denominata utilizzando Data Transformation Services (DTS) anziché SSIS. Per ulteriori informazioni, vedere Utilizzo dei ruoli di Integration Services.

dc_admin

dc_operator

dc_proxy

I membri di tali ruoli del database possono amministrare e utilizzare l'agente di raccolta dati. Per ulteriori informazioni, vedere Protezione agente di raccolta dati.

PolicyAdministratorRole

I membri del ruolo db_ PolicyAdministratorRole del database possono eseguire tutte le attività di configurazione e manutenzione su criteri e condizioni della gestione basata sui criteri. Per ulteriori informazioni, vedere Amministrazione di server tramite la gestione basata su criteri.

ServerGroupAdministratorRole

ServerGroupReaderRole

I membri di questi ruoli del database possono amministrare e utilizzare gruppi di server registrati. Per ulteriori informazioni, vedere Creazione di gruppi di server.

dbm_monitor

Viene creato nel database msdb 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.

Nota importanteImportante

I membri dei ruoli db_ssisadmin e dc_admin sono in grado di elevare i loro privilegi a sysadmin. Questa elevazione dei privilegi può verificarsi perché tali ruoli consentono di modificare i pacchetti Integration Services e i pacchetti Integration Services possono essere eseguiti da SQL Server utilizzando 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 di altri pacchetti Integration Services, configurare i processi di SQL Server Agent che eseguono pacchetti in modo da utilizzare 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 sono spiegati i comandi, le viste e le funzioni necessari per l'utilizzo dei ruoli a livello di database.

Caratteristica

Tipo

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.