Ruoli a livello di server

Si applica a:SQL ServerIstanza gestita di SQL di AzurePiattaforma di strumenti analitici (PDW)

SQL Server fornisce ruoli a livello di server per semplificare la gestione delle autorizzazioni in un server. Questi ruoli sono entità di sicurezza che raggruppano altre entità. L'ambito delle autorizzazioni dei ruoli a livello di server è l'intero server. Iruoli equivalgono ai gruppi nel sistema operativo Windows.

SQL Server 2019 e le versioni precedenti hanno fornito nove ruoli predefiniti del server. Le autorizzazioni concesse ai ruoli predefiniti del server (ad eccezione di pubblico) non possono essere modificate. A partire da SQL Server 2012 (11.x), è possibile creare ruoli del server definiti dall'utente e aggiungere autorizzazioni a livello di server a tali ruoli. SQL Server 2022 (16.x) include 10 ruoli del server aggiuntivi progettati specificamente con il Principio dei privilegi minimi, con il prefisso ##MS_ e il suffisso ## per distinguerli dagli altre entità di sicurezza normali create dall'utente e ruoli del server personalizzati. Questi nuovi ruoli contengono privilegi che si applicano all'ambito del server, ma possono anche ereditare in database singoli (ad eccezione del ruolo del server ##MS_LoginManager##).

Analogamente a SQL Server locale, le autorizzazioni del server sono organizzate gerarchicamente. Le autorizzazioni utilizzate da questi ruoli a livello di server possono essere propagate alle autorizzazioni del database. Affinché le autorizzazioni siano effettivamente utili a livello di database, un account di accesso deve essere un membro del ruolo ##MS_DatabaseConnector## a livello di server (a partire da SQL Server 2022 (16.x)), che concede l'autorizzazione CONNECT a tutti i database o ha un account utente in singoli database. Questo vale anche per il database master. Consideriamo l'esempio seguente: il ruolo ##MS_ServerStateReader## a livello di server contiene l'autorizzazione VIEW SERVER STATE. Un account di accesso membro di questo ruolo ha un account utente nei database master e WideWorldImporters. L'utente avrà quindi anche l'autorizzazione VIEW DATABASE STATE in questi due database in base all'ereditarietà.

È possibile aggiungere entità di livello server (account di accesso di SQL Server, account di Windows e gruppi di Windows) nei ruoli a livello di server. Tutti i membri di un ruolo predefinito del server possono aggiungere altri account di accesso allo stesso ruolo. I membri dei ruoli del server definiti dall'utente non possono aggiungere altre entità di sicurezza del server al ruolo.

Ruoli predefiniti a livello di server

Nota

Questi ruoli a livello di server introdotti prima di SQL Server 2022 (16.x) non sono disponibili in Database SQL di Azure o Azure Synapse Analytics. Esistono ruoli speciali del server di database SQL di Azure per la gestione delle autorizzazioni equivalenti ai ruoli a livello di server introdotti in SQL Server 2022 (16.x). Per ulteriori informazioni su Database SQL, vedere Controllo e concessione dell'accesso al database.

Nella tabella seguente vengono illustrati i ruoli predefiniti a livello di server e le relative funzionalità.

Ruolo predefinito a livello di server Descrizione
sysadmin I membri del ruolo predefinito del server sysadmin possono eseguire qualsiasi attività nel server.
serveradmin I membri del ruolo predefinito del server serveradmin sono autorizzati a modificare le opzioni di configurazione a livello di server e ad arrestare il server.
securityadmin I membri del ruolo predefinito del server securityadmin gestiscono gli account di accesso e le relative proprietà. Possono GRANT, DENY, e REVOKE le autorizzazioni a livello di server. Inoltre, possono GRANT, DENY, e REVOKE le autorizzazioni a livello di database se hanno accesso a un database. Questi membri sono inoltre autorizzati a ripristinare le password per l'accesso di SQL server.

IMPORTANTE: La possibilità di concedere l'accesso al motore di database e di configurare autorizzazioni utente consente all'amministratore responsabile della sicurezza di assegnare la maggior parte delle autorizzazioni server. Il ruolo securityadmin deve essere considerato equivalente al ruolo sysadmin . In alternativa, a partire da SQL Server 2022 (16.x), è consigliabile usare il nuovo ruolo predefinito del server ##MS_LoginManager##.
processadmin I membri del ruolo predefinito del server processadmin sono autorizzati a terminare processi in esecuzione in un'istanza di SQL Server.
setupadmin I membri del ruolo predefinito del server setupadmin sono autorizzati ad aggiungere e rimuovere server collegati usando istruzioni Transact-SQL. (L'adesione a sysadmin è necessaria per l'uso di Management Studio.)
bulkadmin I membri del ruolo predefinito del server bulkadmin sono autorizzati a eseguire l'istruzione BULK INSERT.

Per SQL Server in Linux, non sono supportate né le autorizzazioni ADMINISTER BULK OPERATIONS né il ruolo bulkadmin. Per SQL Server in Linux, gli inserimenti bulk possono essere eseguiti solo dal ruolo sysadmin.
diskadmin Il ruolo predefinito del server diskadmin consente di gestire i file su disco.
dbcreator I membri del ruolo predefinito del server dbcreator sono autorizzati a creare, modificare, eliminare e ripristinare qualsiasi database.
public Ogni accesso di SQL Server appartiene al ruolo del server public. Quando a un'entità del server 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. Assegnare le autorizzazioni public per un oggetto solo quando si desidera che l'oggetto sia disponibile a tutti gli utenti. Non è possibile modificare l'adesione a public.

Nota: il ruolo pubblico viene implementato in modo diverso rispetto agli altri ruoli, e le autorizzazioni possono essere concesse, negate o revocate dai ruoli predefiniti del server pubblico.

Importante

La maggior parte delle autorizzazioni fornite dai seguenti ruoli del server non è applicabile ad Azure Synapse Analytics: processadmin, serveradmin, setupadmin e diskadmin.

Ruoli predefiniti a livello del server introdotti in SQL Server 2022

La tabella seguente illustra ulteriori ruoli predefiniti a livello di server introdotti con SQL Server 2022 (16.x) e le relative funzionalità.

Nota

Le autorizzazioni a livello di server non sono disponibili per Istanza gestita di SQL di Azure o Azure Synapse Analytics. ##MS_PerformanceDefinitionReader##, ##MS_ServerPerformanceStateReader## e ##MS_ServerSecurityStateReader## sono stati introdotti in SQL Server 2022 (16.x) e non sono disponibili in Database SQL di Azure.

Ruolo predefinito a livello di server Descrizione
##MS_DatabaseConnector## I membri del ruolo predefinito del server ##MS_DatabaseConnector## possono connettersi a qualsiasi database senza la connessione a un account utente nel database.

Per negare l'autorizzazione CONNECT a un database specifico, gli utenti possono creare un account utente corrispondente per questo account di accesso nel database e quindi DENY l'autorizzazione CONNECT per l'utente del database. L'autorizzazione DENY sovrascrive l'autorizzazione GRANT CONNECT proveniente da questo ruolo.
##MS_LoginManager## I membri del ruolo predefinito del server ##MS_LoginManager## possono creare, eliminare e modificare gli account di accesso. Contrariamente al ruolo predefinito del server securityadmin, questo ruolo non consente ai membri di GRANT privilegi. È un ruolo più limitato che aiuta a rispettare il Principio dei privilegi minimi.
##MS_DatabaseManager## I membri del ruolo predefinito del server ##MS_DatabaseManager## possono creare ed eliminare database. Un membro del ruolo ##MS_DatabaseManager## 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 ##MS_DatabaseManager## non hanno necessariamente l'autorizzazione per accedere ai database di cui non sono proprietari. Questo ruolo del server ha gli stessi privilegi del ruolo dbcreator in SQL Server, ma è consigliabile usare questo nuovo ruolo rispetto al precedente, poiché questo ruolo esiste anche in Database SQL di Azure e pertanto consente di usare gli stessi script in ambienti diversi.
##MS_ServerStateManager## I membri del ruolo predefinito del server ##MS_ServerStateManager## hanno le stesse autorizzazioni del ruolo ##MS_ServerStateReader##. Inoltre, il ruolo dispone dell'autorizzazione ALTER SERVER STATE, che consente l'accesso a diverse operazioni di gestione, ad esempio: DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE ('ALL'), DBCC SQLPERF()
##MS_ServerStateReader## I membri del ruolo predefinito del server ##MS_ServerStateReader## possono leggere tutte le DMV (Dynamic Management View) e le funzioni coperte da VIEW SERVER STATE e hanno rispettivamente l'autorizzazione VIEW DATABASE STATE in qualsiasi database in cui il membro di questo ruolo dispone di un account utente.
##MS_ServerPerformanceStateReader## I membri del ruolo predefinito del server ##MS_ServerPerformanceStateReader## possono leggere tutte le DMV (Dynamic Management View) e le funzioni coperte da VIEW SERVER PERFORMANCE STATE e hanno rispettivamente l'autorizzazione VIEW DATABASE PERFORMANCE STATE in qualsiasi database in cui il membro di questo ruolo dispone di un account utente. Si tratta di un sottoinsieme di ciò a cui il ruolo del server ##MS_ServerStateReader## ha accesso e aiuta a rispettare il Principio dei privilegi minimi.
##MS_ServerSecurityStateReader## I membri del ruolo predefinito del server ##MS_ServerSecurityStateReader## possono leggere tutte le DMV (Dynamic Management View) e le funzioni coperte da VIEW SERVER SECURITY STATE e hanno rispettivamente l'autorizzazione VIEW DATABASE SECURITY STATE in qualsiasi database in cui il membro di questo ruolo dispone di un account utente. Si tratta di un piccolo sottoinsieme di ciò a cui il ruolo del server ##MS_ServerStateReader## ha accesso e aiuta a rispettare il Principio dei privilegi minimi.
##MS_DefinitionReader## I membri del ruolo predefinito del server ##MS_DefinitionReader## possono leggere tutte le viste del catalogo coperte da VIEW ANY DEFINITION e hanno rispettivamente l'autorizzazione VIEW DEFINITION per qualsiasi database in cui il membro di questo ruolo dispone di un account utente.
##MS_PerformanceDefinitionReader## I membri del ruolo predefinito del server ##MS_PerformanceDefinitionReader## possono leggere tutte le viste del catalogo coperte da VIEW ANY PERFORMANCE DEFINITION e hanno rispettivamente l'autorizzazione VIEW PERFORMANCE DEFINITION per qualsiasi database in cui il membro di questo ruolo dispone di un account utente. Si tratta di un sottinsieme di ciò a cui il ruolo del server ##MS_DefinitionReader## ha accesso.
##MS_SecurityDefinitionReader## I membri del ruolo predefinito del server ##MS_SecurityDefinitionReader## possono leggere tutte le viste del catalogo coperte da VIEW ANY SECURITY DEFINITION e hanno rispettivamente VIEW SECURITY DEFINITION per qualsiasi database in cui il membro di questo ruolo dispone di un account utente. Si tratta di un piccolo sottoinsieme di ciò a cui il ruolo del server ##MS_DefinitionReader## ha accesso e aiuta a rispettare il Principio dei privilegi minimi.

Autorizzazioni dei ruoli predefiniti del server

A ogni ruolo predefinito del server vengono assegnate autorizzazioni specifiche.

Autorizzazioni dei nuovi ruoli predefiniti del server in SQL Server 2022

La tabella seguente mostra le autorizzazioni assegnate ai ruoli a livello di server. Mostra inoltre le autorizzazioni a livello di database che vengono ereditate finché l'utente può connettersi a singoli database.

Ruolo predefinito a livello di server Autorizzazioni a livello di server Autorizzazioni a livello di database
##MS_DatabaseConnector## CONNECT ANY DATABASE CONNECT
##MS_LoginManager## CREATE LOGIN
ALTER ANY LOGIN
N/D
##MS_DatabaseManager## CREATE ANY DATABASE
ALTER ANY DATABASE
ALTER
##MS_ServerStateManager## ALTER SERVER STATE
VIEW SERVER STATE
VIEW SERVER PERFORMANCE STATE
VIEW SERVER SECURITY STATE
VIEW DATABASE STATE
VIEW DATABASE PERFORMANCE STATE
VIEW DATABASE SECURITY STATE
##MS_ServerStateReader## VIEW SERVER STATE
VIEW SERVER PERFORMANCE STATE
VIEW SERVER SECURITY STATE
VIEW DATABASE STATE
VIEW DATABASE PERFORMANCE STATE
VIEW DATABASE SECURITY STATE
##MS_ServerPerformanceStateReader## VIEW SERVER PERFORMANCE STATE VIEW DATABASE PERFORMANCE STATE
##MS_ServerSecurityStateReader## VIEW SERVER SECURITY STATE VIEW DATABASE SECURITY STATE
##MS_DefinitionReader## VIEW ANY DATABASE
VIEW ANY DEFINITION
VIEW ANY PERFORMANCE DEFINITION
VIEW ANY SECURITY DEFINITION
VIEW DEFINITION
VIEW PERFORMANCE DEFINITION
VIEW SECURITY DEFINITION
##MS_PerformanceDefinitionReader## VIEW ANY PERFORMANCE DEFINITION VIEW PERFORMANCE DEFINITION
##MS_SecurityDefinitionReader## VIEW ANY SECURITY DEFINITION VIEW SECURITY DEFINITION

Autorizzazioni dei ruoli del server per SQL Server 2019 e versioni precedenti

La figura seguente mostra le autorizzazioni assegnate ai ruoli del server legacy (SQL Server 2019 e versioni successive).
Diagram showing fixed server role permissions.

Importante

L'autorizzazione CONTROL SERVER è simile ma non identica al ruolo predefinito del server sysadmin . Le autorizzazioni non implicano le appartenenze ai ruoli e le appartenenze ai ruoli non concedono autorizzazioni. (Ad esempio, CONTROL SERVER non implica o l'adesione al ruolo predefinito del server sysadmin.) Talvolta, tuttavia, è possibile equiparare ruoli e autorizzazioni equivalenti. La maggior parte dei comandi DBCC e molte stored procedure di sistema richiedono l'appartenenza al ruolo predefinito del server sysadmin.

Autorizzazioni a livello di server

Ai ruoli del server definiti dall'utente è possibile aggiungere solo autorizzazioni a livello di server. Per elencare le autorizzazioni a livello di server, eseguire la seguente istruzione. Di seguito sono elencate le autorizzazioni a livello di server:

SELECT * FROM sys.fn_builtin_permissions('SERVER') ORDER BY permission_name;

Per ulteriori informazioni sulle autorizzazioni, vedere Autorizzazioni (Motore di database) e sys.fn_builtin_permissions (Transact-SQL).

Lavorare con i ruoli a livello di server

Nella tabella seguente vengono illustrati i comandi, le viste e le funzioni che consentono di utilizzare ruoli a livello di server.

Funzionalità Tipo Descrizione
sp_helpsrvrole (Transact-SQL) Metadati UFX Restituisce un elenco di ruoli a livello di server.
sp_helpsrvrolemember (Transact-SQL) Metadati UFX Restituisce informazioni sui membri di un ruolo a livello di server.
sp_srvrolepermission (Transact-SQL) Metadati UFX Visualizza le autorizzazioni di un ruolo a livello di server.
IS_SRVROLEMEMBER (Transact-SQL) Metadati UFX Indica se un account di accesso di SQL Server è un membro del ruolo a livello di server specificato.
sys.server_role_members (Transact-SQL) Metadati UFX Restituisce una riga per ogni membro di ogni ruolo a livello di server.
CREATE SERVER ROLE (Transact-SQL) Comando Crea un ruolo del server definito dall'utente.
ALTER SERVER ROLE (Transact-SQL) Comando Modifica l'appartenenza di un ruolo del server o il nome di un ruolo del server definito dall'utente.
DROP SERVER ROLE (Transact-SQL) Comando Rimuove un ruolo del server definito dall'utente.
sp_addsrvrolemember (Transact-SQL) Comando Aggiunge un account di accesso come membro di un ruolo a livello di server. Deprecato. Usare ALTER SERVER ROLE .
sp_dropsrvrolemember (Transact-SQL) Comando Rimuove un account di accesso di SQL Server o un utente o un gruppo di Windows da un ruolo a livello di server. Deprecato. Usare ALTER SERVER ROLE .

Ruoli specifici di SQL Server abilitati da Azure Arc

Quando si installa l'estensione Azure per SQL Server, l'installazione:

  1. Crea un ruolo a livello di server: SQLArcExtensionServerRole
  2. Crea un ruolo a livello di database: SQLArcExtensionUserRole
  3. Aggiunge l'account NT AUTHORITY\SYSTEM a ogni ruolo
  4. Mappa NT AUTHORITY\SYSTEM a livello di database per ogni database
  5. Concede autorizzazioni minime per le caratteristiche abilitate

Inoltre, l'estensione di Azure per SQL Server revoca le autorizzazioni per questi ruoli quando non sono più necessarie per funzionalità specifiche.

Se si disinstalla l'estensione di Azure per SQL Server, i ruoli a livello di server e di database vengono rimossi.

Per le autorizzazioni, vedere Autorizzazioni.