Condividi tramite


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 (15.x) 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 aggiuntivi del server progettati specificamente con il principio dei privilegi minimi , che hanno il prefisso ##MS_ e il suffisso ## per distinguerli dagli altri ruoli server personalizzati e creati dall'utente normali. Questi nuovi ruoli contengono privilegi che si applicano all'ambito del server, ma possono anche ereditare in database singoli (ad eccezione del ruolo del ##MS_LoginManager## server).

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.

Si consideri 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 master database e WideWorldImporters . Questo utente dispone inoltre dell'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 sono stati introdotti prima di SQL Server 2022 (16.x) e non sono disponibili nel database SQL di Azure o in 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. Importante: le autorizzazioni non possono essere negate ai membri di questo ruolo.
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. securityadmin può anche GRANT, DENY e REVOKE le autorizzazioni a livello di database se ha accesso a un database. Inoltre, securityadmin può 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. I membri di questo ruolo possono potenzialmente elevare i propri privilegi in determinate condizioni. Applicare il principio dei privilegi minimi quando si assegna questo ruolo e monitorare tutte le attività eseguite dai relativi membri.

Il ruolo o ADMINISTER BULK OPERATIONS le autorizzazioni bulkadmin non sono supportati per SQL Server in Linux.

Le operazioni bulk (BULK INSERT istruzioni ) non sono supportate per gli account di accesso basati sull'autenticazione di Microsoft Entra, in Linux o Windows. In questo scenario, solo i membri del ruolo sysadmin possono eseguire inserimenti in blocco per SQL Server.
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 un'entità server non viene concessa o negata autorizzazioni specifiche per un oggetto a protezione diretta, l'utente eredita le autorizzazioni concesse al pubblico su tale oggetto. Assegnare autorizzazioni pubbliche per qualsiasi oggetto quando si desidera che l'oggetto sia disponibile per tutti gli utenti. Non è possibile modificare l'appartenenza al pubblico.

Nota:public viene implementato in modo diverso da 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 ruoli del server seguenti 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 i ruoli predefiniti a livello di server introdotti in SQL Server 2022 (16.x) e le relative funzionalità.

Nota

Queste 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## viene introdotto in SQL Server 2022 (16.x) e non sono disponibili nel 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 accesso nel database e quindi DENY l'autorizzazione CONNECT per l'utente del database. Questa autorizzazione DENY annulla l'autorizzazione GRANT CONNECT proveniente da questo ruolo.
##MS_LoginManager## I membri del ruolo predefinito del ##MS_LoginManager## server 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 nel database SQL di Azure e pertanto consente di usare gli stessi script in ambienti diversi.

I membri di questo ruolo possono potenzialmente elevare i propri privilegi in determinate condizioni. Applicare il principio dei privilegi minimi quando si assegna questo ruolo e monitorare tutte le attività eseguite dai relativi membri.
##MS_ServerStateManager## I membri del ruolo predefinito del server ##MS_ServerStateManager## hanno le stesse autorizzazioni del ruolo ##MS_ServerStateReader##. Contiene anche l'autorizzazione , che consente l'accesso ALTER SERVER STATE a diverse operazioni di gestione, ad esempio : DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE ('ALL'), DBCC SQLPERF()
##MS_ServerStateReader## I membri del ruolo predefinito del ##MS_ServerStateReader## server possono leggere tutte le viste a gestione dinamica (DMV) e le funzioni coperte rispettivamente da VIEW SERVER STATEe hanno VIEW DATABASE STATE l'autorizzazione per qualsiasi database in cui il membro di questo ruolo dispone di un account utente.
##MS_ServerPerformanceStateReader## I membri del ruolo predefinito del ##MS_ServerPerformanceStateReader## server possono leggere tutte le viste a gestione dinamica (DMV) e le funzioni coperte rispettivamente da VIEW SERVER PERFORMANCE STATEe hanno VIEW DATABASE PERFORMANCE STATE l'autorizzazione per qualsiasi database in cui il membro di questo ruolo dispone di un account utente. Subset di ciò che il ruolo del ##MS_ServerStateReader## server ha accesso, che consente di rispettare il principio dei privilegi minimi.
##MS_ServerSecurityStateReader## I membri del ruolo predefinito del ##MS_ServerSecurityStateReader## server possono leggere tutte le viste a gestione dinamica (DMV) e le funzioni coperte rispettivamente da VIEW SERVER SECURITY STATEe hanno VIEW DATABASE SECURITY STATE l'autorizzazione per qualsiasi database in cui il membro di questo ruolo dispone di un account utente. Piccolo subset di ciò a cui il ruolo del ##MS_ServerStateReader## server ha accesso, che consente di 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, rispettivamente avere 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, rispettivamente avere l’autorizzazione VIEW PERFORMANCE DEFINITION per qualsiasi database in cui il membro di questo ruolo dispone di un account utente. Subset dell'accesso al ruolo del ##MS_DefinitionReader## server.
##MS_SecurityDefinitionReader## I membri del ruolo predefinito del server ##MS_SecurityDefinitionReader## possono leggere tutte le viste del catalogo coperte da VIEW ANY SECURITY DEFINITION, rispettivamente avere l’autorizzazione VIEW SECURITY DEFINITION per qualsiasi database in cui il membro di questo ruolo dispone di un account utente. Piccolo subset di ciò a cui il ruolo del ##MS_DefinitionReader## server ha accesso, che consente di 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

L'immagine seguente mostra le autorizzazioni assegnate ai ruoli del server legacy (SQL Server 2019 (15.x) e versioni precedenti.

Diagramma che mostra le autorizzazioni dei ruoli predefiniti del server.

L'autorizzazione CONTROL SERVER è simile ma non identica al ruolo predefinito del server sysadmin . Le entità con l'autorizzazione CONTROL SERVER possono essere negate autorizzazioni specifiche. Dal punto di vista della sicurezza, considerare le entità con CONTROL SERVER come identiche ai membri sysadmin, a causa di diversi modi possibili per elevare le autorizzazioni da CONTROL SERVER a sysadmin completo. Diversi DBCC comandi e molte 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 altre informazioni sulle autorizzazioni, vedere Autorizzazioni (motore di database) e sys.fn_builtin_permissions.

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 Metadati UFX Restituisce un elenco di ruoli a livello di server.
sp_helpsrvrolemember Metadati UFX Restituisce informazioni sui membri di un ruolo a livello di server.
sp_srvrolepermission Metadati UFX Visualizza le autorizzazioni di un ruolo a livello di server.
IS_SRVROLEMEMBER Metadati UFX Indica se un account di accesso di SQL Server è un membro del ruolo a livello di server specificato.
sys.server_role_members Metadati UFX Restituisce una riga per ogni membro di ogni ruolo a livello di server.
CREATE SERVER ROLE Comando Crea un ruolo del server definito dall'utente.
ALTER SERVER ROLE Comando Modifica l'appartenenza di un ruolo del server o il nome di un ruolo del server definito dall'utente.
DROP SERVER ROLE Comando Rimuove un ruolo del server definito dall'utente.
sp_addsrvrolemember Comando Aggiunge un account di accesso come membro di un ruolo a livello di server. Deprecato. Usare ALTER SERVER ROLE .
sp_dropsrvrolemember 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

    *In alternativa, si può configurare SQL Server abilitato da Azure Arc per l'esecuzione in modalità con privilegi minimi (disponibile in anteprima). Per i dettagli, vedere Gestire SQL Server abilitato da Azure Arc con privilegi minimi (anteprima).

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

SqlServerExtensionPermissionProvider è un'attività di Windows. Concede o revoca i privilegi in SQL Server quando rileva:

  • Nell'host è installata una nuova istanza di SQL Server
  • L'istanza di SQL Server viene disinstallata dall'host
  • Una funzionalità a livello di istanza è abilitata o disabilitata o le impostazioni vengono aggiornate
  • Il servizio di estensione viene riavviato

Nota

Prima della versione di luglio 2024, SqlServerExtensionPermissionProvider è un'attività pianificata. Viene eseguito ogni ora.

Per informazioni dettagliate, vedere Configurare gli account del servizio Windows e le autorizzazioni per l'estensione di Azure per SQL Server.

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.