Condividi tramite


Ruoli a livello di database

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di analisi (PDW)Database SQL in Anteprima di Microsoft Fabric

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 Windows. L'ambito delle autorizzazioni dei ruoli a livello di database è l'intero database.

Per aggiungere e rimuovere utenti a un ruolo del database, usare le opzioni ADD MEMBER e DROP MEMBER dell'istruzione ALTER ROLE . Analytics Platform System (PDW) e Azure Synapse Analytics non supportano l'uso di ALTER ROLE. Usare invece le stored procedure sp_addrolemember e sp_droprolemember .

Esistono due tipi di ruoli a livello di database: i ruoli predefiniti del database, che sono predefiniti nel database, e i ruoli del database definiti dall'utente, che possono essere creati.

I ruoli predefiniti del database vengono definiti a livello di 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 anche alcuni ruoli predefiniti del database per scopi specifici.

È possibile aggiungere qualsiasi account del database e altri ruoli di SQL Server ai ruoli a livello di database.

Tip

Evitare di aggiungere ruoli del database definiti dall'utente come membri dei ruoli predefiniti, poiché in tal modo si potrebbe provocare un'imprevista intensificazione dei privilegi.

Le autorizzazioni dei ruoli del database definiti dall'utente possono essere personalizzate usando le istruzioni GRANT, DENY e REVOKE. Per altre informazioni, vedere Autorizzazioni (motore di database).

Per un elenco di tutte le autorizzazioni, vedere il poster Autorizzazioni del motore di database . Non è possibile concedere autorizzazioni a livello di server ai ruoli del database. Gli account di accesso e altre entità di livello server (come i ruoli del server) non possono essere aggiunti ai ruoli del database. Per sicurezza a livello di server in SQL Server, usare invece i ruoli del server. Non è possibile concedere autorizzazioni a livello di server tramite ruoli in Database SQL di Azure e Azure Synapse Analytics.

Ruoli predefiniti del database

La tabella seguente contiene i ruoli predefiniti del database e le rispettive caratteristiche. Questi ruoli esistono in tutti i database. Fatta eccezione per il ruolo del database pubblico, non è possibile modificare le autorizzazioni concesse ai ruoli predefiniti del database.

Nome del ruolo predefinito del database Description
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 DROP il database in SQL Server. In database SQL e Azure Synapse, alcune attività di manutenzione richiedono autorizzazioni a livello di server e non possono essere eseguite da db_owners.
db_securityadmin I membri del ruolo predefinito del database db_securityadmin possono modificare le appartenenze al ruolo solo per i ruoli personalizzati e gestire le autorizzazioni. I membri di questo ruolo possono potenzialmente elevare i propri privilegi ed è consigliabile monitorarne le azioni.
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. I membri di questo ruolo possono potenzialmente elevare i propri privilegi modificando il codice che può essere eseguito con privilegi elevati e le loro azioni devono essere monitorate.
db_datawriter I membri del ruolo predefinito del database db_datawriter possono aggiungere, eliminare o modificare i dati di tutte le tabelle utente. Nella maggior parte dei casi d'uso, questo ruolo verrà combinato con l'adesione db_datareader per consentire la lettura dei dati da modificare.
db_datareader I membri del ruolo predefinito del database db_datareader possono leggere tutti i dati di tutte le tabelle utente e le viste. Gli oggetti utente possono esistere in qualsiasi schema ad eccezione di sys e INFORMATION_SCHEMA.
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. I membri di questo ruolo non possono anche leggere i metadati relativi al database e ai relativi oggetti, ad esempio la visualizzazione delle viste di sistema.

Non è possibile modificare le autorizzazioni concesse ai ruoli predefiniti del database. Tutti i ruoli (incluso il public ruolo) dispongono delle autorizzazioni CONNECT. La figura seguente mostra le autorizzazioni assegnate ai ruoli predefiniti del database:

Nome ruolo Permissions
db_owner CONTROL DATABASE: dispone di tutte le autorizzazioni nel database.
db_securityadmin MODIFICA QUALSIASI RUOLO DELL'APPLICAZIONE
CREATE SCHEMA
MODIFICA QUALSIASI RUOLO
VISUALIZZA DEFINIZIONE
db_accessadmin ALTERARE QUALSIASI UTENTE
CREATE SCHEMA
CREA UTENTE
db_backupoperator Backup del database
Registro di Backup
CHECKPOINT
db_ddladmin ALTER ANY ASSEMBLY
ALTERA QUALSIASI CHIAVE ASIMMETRICA
MODIFICA QUALSIASI CERTIFICATO
MODIFICA QUALSIASI CONTRATTO
ALTERA QUALSIASI TRIGGER DDL DEL DATABASE
ALTER QUALSIASI NOTIFICA DI EVENTO DEL DATABASE
MODIFICARE QUALSIASI SPAZIO DATI
ALTERA QUALSIASI BIBLIOTECA ESTERNA
ALTER QUALSIASI CATALOGO FULLTEXT
MODIFICARE QUALSIASI TIPO DI MESSAGGIO
MODIFICA QUALSIASI ASSOCIAZIONE DI SERVIZIO REMOTO
ALTERA QUALSIASI ROTTA
ALTERARE QUALSIASI SCHEMA
MODIFICARE QUALSIASI SERVIZIO
ALTERARE QUALSIASI CHIAVE SIMMETRICA
CHECKPOINT
CREA AGGREGATO
CREA ASSEMBLY
CREA CHIAVE ASIMMETRICA
CREA CERTIFICATO
CREA CONTRATTO
NOTIFICA EVENTO DDL DEL DATABASE
CREARE PREDEFINITO
CREA LIBRERIA ESTERNA
CREA CATALOGO FULLTEXT
CREA FUNZIONE
CREA TIPO DI MESSAGGIO
CREA PROCEDURA
CREATE QUEUE
CREA ASSOCIAZIONE DI SERVIZIO REMOTO
Crea percorso
CREA REGOLA
CREATE SCHEMA
CREA SERVIZIO
CREARE CHIAVE SIMMETRICA
CREA SINONIMO
CREATE TABLE
CREA TIPO (CREATE TYPE)
CREARE VISTA
CREA XML SCHEMA COLLECTION
REFERENZE

Si applica a: SQL Server 2019 e versioni successive
ALTERARE QUALSIASI LINGUA ESTERNA
CREA LINGUAGGIO ESTERNO

Si applica a: SQL Server 2022 e versioni successive
ALTERA QUALSIASI FONTE DATI ESTERNA
MODIFICARE QUALSIASI FORMATO DI FILE ESTERNO
MODIFICARE QUALSIASI LAVORO ESTERNO
ALTERARE QUALSIASI FLUSSO ESTERNO
ALTER LEDGER
ENABLE LEDGER
db_datareader GRANT SELECT ON DATABASE::<database-name>
db_denydatareader DENY SELECT ON DATABASE::<database-name>
db_datawriter GRANT INSERT ON DATABASE::<database-name>
CONCEDI AGGIORNAMENTO SUL DATABASE::<database-name>
GRANT DELETE ON DATABASE::<database-name>
db_denydatawriter DENY INSERT ON DATABASE::<database-name>
NEGARE AGGIORNAMENTO SUL DATABASE::<database-name>
Negare l'eliminazione sul database::<database-name>
public Non sono presenti autorizzazioni a livello di database intrinseche nel ruolo del database pubblico. Tuttavia, alcune autorizzazioni del database sono presenti per impostazione predefinita. In particolare, visualizzare qualsiasi definizione della chiave di crittografia della colonna, visualizzare qualsiasi definizione della chiave master della colonna e autorizzazione SELECT per molte singole tabelle di sistema di database. Queste autorizzazioni possono essere revocate.

Ruoli speciali per database SQL di Azure e Azure Synapse

Questi ruoli del database si trovano solo nel database master virtuale. Le autorizzazioni di questi ruoli sono limitate alle azioni eseguite in master. Solo gli utenti del database in master possono essere aggiunti a questi ruoli. Gli account di accesso non possono essere aggiunti a questi ruoli, ma è possibile creare utenti in base agli account di accesso e quindi aggiungere questi utenti ai ruoli. Anche gli utenti di database indipendenti in master possono essere aggiunti a questi ruoli. Gli utenti di database indipendenti aggiunti al ruolo dbmanager in master non possono essere tuttavia usati per creare nuovi database.

Nome ruolo Description
dbmanager Può creare ed eliminare database. Un membro del ruolo dbmanager che crea un database diventa il proprietario del database e questo permette all'utente di connettersi al database come utente dbo. L'utente dbo ha tutte le autorizzazioni database nel database. I membri del ruolo dbmanager non hanno necessariamente l'autorizzazione per accedere ai database di cui non sono proprietari.
db_exporter I membri del ruolo predefinito del database db_exporter possono eseguire tutte le attività di esportazione dati. Le autorizzazioni concesse tramite questo ruolo sono CREATE TABLE, ALTER ANY SCHEMA, ALTER ANY EXTERNAL DATA SOURCE e ALTER ANY EXTERNAL FILE FORMAT.

Si applica a: pool SQL dedicati di Azure Synapse Analytics (in precedenza SQL Data Warehouse)
loginmanager Può creare ed eliminare account di accesso nel database master virtuale.

Note

L'entità di livello server e l'amministratore di Microsoft Entra (se configurato) hanno tutte le autorizzazioni in Database SQL e Azure Synapse Analytics senza dover essere membri di alcun ruolo. Per altre informazioni, vedere Autorizzare l'accesso al database a database SQL, Istanza gestita di SQL e Azure Synapse Analytics.

Alcuni ruoli del database non sono applicabili ad Azure SQL o ad Azure Synapse:

  • db_backupoperator non è applicabile nel database SQL di Azure (non Istanza gestita di SQL di Azure) e nel pool serverless di Azure Synapse Analytics perché i comandi T-SQL di backup e ripristino non sono disponibili.

  • db_datawriter e db_denydatawriter non sono applicabili ad Azure Synapse Analytics serverless perché legge solo i dati esterni.

Ruoli all'interno del database msdb

Il database msdb contiene ruoli specifici per uno scopo illustrati nella tabella seguente.

Nome ruolo msdb Description
db_ssisadmin
db_ssisoperator
db_ssisltduser
I membri di tali ruoli del database possono amministrare e utilizzare SSIS. Le istanze di SQL Server aggiornate da una versione precedente potrebbero contenere una versione precedente del ruolo che era stata 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 Raccolta di dati.
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 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.

I membri dei ruoli db_ssisadmin e dc_admin possono essere in grado di elevare i propri privilegi ad amministratore di sistema. 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 dei servizi di integrazione, configurare i lavori 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.

Utilizzare 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.

Feature Type Description
sp_helpdbfixedrole Metadata Restituisce un elenco dei ruoli predefiniti del database.
sp_dbfixedrolepermission Metadata Visualizza le autorizzazioni di un ruolo predefinito del database.
sp_helprole Metadata Restituisce informazioni sui ruoli del database corrente.
sp_helprolemember Metadata Restituisce informazioni sui membri di un ruolo del database corrente.
sys.database_role_members Metadata Restituisce una riga per ogni membro di ogni ruolo del database.
IS_MEMBER Metadata Indica se l'utente corrente è membro del gruppo di Microsoft Windows, del gruppo Microsoft Entra o del ruolo di database di Microsoft SQL Server specificato.
CREATE ROLE Command Crea un nuovo ruolo di database nel database corrente.
ALTER ROLE Command Modifica il nome o l'appartenenza di un ruolo del database.
DROP ROLE Command Rimuove un ruolo dal database.
sp_addrole Command Crea un nuovo ruolo di database nel database corrente.
sp_droprole Command Rimuove un ruolo del database dal database corrente.
sp_addrolemember Command 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. Tutte le piattaforme ad eccezione di Analytics Platform System (PDW) e Azure Synapse devono invece usare ALTER ROLE.
sp_droprolemember Command Rimuove un account di sicurezza da un ruolo di SQL Server nel database corrente. Tutte le piattaforme ad eccezione di Analytics Platform System (PDW) e Azure Synapse devono invece usare ALTER ROLE.
GRANT Permissions Aggiunge autorizzazioni a un ruolo.
DENY Permissions Nega un'autorizzazione a un ruolo.
REVOKE Permissions Rimuove le autorizzazioni precedentemente concesse o negate.

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. Gli utenti del database non possono essere rimossi dal ruolo public.

Examples

Gli esempi in questa sezione illustrano come gestire i ruoli a livello di database.

A. Aggiungere un utente a un ruolo a livello di database

L'esempio seguente aggiunge l'utente 'Ben' al ruolo predefinito del database db_datareader.

ALTER ROLE db_datareader ADD MEMBER Ben;
GO

B. Elencare tutte le entità di database che sono membri di un ruolo a livello di database

L'istruzione seguente restituisce tutti i membri di qualsiasi ruolo del database.

SELECT roles.principal_id AS RolePrincipalID,
    roles.name AS RolePrincipalName,
    database_role_members.member_principal_id AS MemberPrincipalID,
    members.name AS MemberPrincipalName
FROM sys.database_role_members AS database_role_members
INNER JOIN sys.database_principals AS roles
    ON database_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.database_principals AS members
    ON database_role_members.member_principal_id = members.principal_id;
GO