Rôles de niveau serveur

S’applique à : SQL Server Azure SQL Managed Instance Analytics Platform System (PDW)

SQL Server fournit des rôles au niveau du serveur pour vous aider à gérer les autorisations sur les serveurs. Ces rôles sont des principaux de sécurité qui regroupent d'autres principaux. Les autorisations des rôles serveur ont une portée à l'échelle du serveur. (Lesrôles sont semblables aux groupes du système d’exploitation Microsoft Windows.)

SQL Server 2019 et les versions précédentes fournissaient neuf rôles serveur fixes. Les autorisations accordées aux rôles serveur fixes (à l’exception de public) ne peuvent pas être changées. Depuis SQL Server 2012 (11.x), il est possible de créer des rôles serveur définis par l'utilisateur et de leur ajouter des autorisations au niveau du serveur. SQL Server 2022 (16.x) est livré avec 10 rôles de serveur supplémentaires qui ont été conçus spécifiquement en tenant compte du principe du moindre privilège. Ces rôles ont un préfixe ##MS_ et un suffixe ## qui les distinguent des autres principes créés par l’utilisateur et des rôles de serveur personnalisés. Ces nouveaux rôles contiennent des privilèges qui s’appliquent à l’étendue du serveur, mais peuvent également hériter de bases de données individuelles (à l’exception du rôle serveur ##MS_LoginManager## #).

Comme SQL Server local, les autorisations de serveur sont organisées de façon hiérarchique. Les autorisations détenues par ces rôles au niveau du serveur peuvent se propager aux autorisations de base de données. Pour que les autorisations soient effectives au niveau de la base de données, un compte de connexion doit être membre du rôle au niveau du serveur ##MS_DatabaseConnector##, (à partir de SQL Server 2022 (16.x)) qui accorde l’autorisation CONNECT à toutes les bases de données, ou avoir un compte d’utilisateur dans les bases de données individuelles. Ceci s'applique également à la base de données master. Prenons l'exemple suivant : Le rôle de niveau serveur ##MS_ServerStateReader### détient l'autorisation VIEW SERVER STATE. Un login membre de ce rôle a un compte d’utilisateur dans les bases de données master et WideWorldImporters. Cet utilisateur aura ensuite l’autorisation, VIEW DATABASE STATE dans ces deux bases de données par héritage.

Vous pouvez ajouter des principaux au niveau du serveur (connexions SQL Server, comptes et groupes Windows) à des rôles au niveau du serveur. Chaque membre d'un rôle serveur fixe peut ajouter des connexions à ce rôle. Les membres de rôles serveur définis par l'utilisateur ne peuvent pas ajouter d'autres principaux de serveur à ces rôles.

Rôles serveur fixes

Remarque

Ces rôles au niveau du serveur introduits avant SQL Server 2022 (16.x) ne sont pas disponibles dans Azure SQL Database ou Azure Synapse Analytics. Il existe des rôles de serveur Azure SQL Database pour la gestion des autorisations spéciaux qui sont équivalents aux rôles au niveau du serveur introduits dans SQL Server 2022 (16.x). Pour plus d’informations sur SQL Database, consultez Contrôle et octroi de l’accès à la base de données.

Le tableau ci-dessous répertorie les rôles serveur fixes et leurs fonctionnalités.

Rôles serveur fixes Description
sysadmin Les membres du rôle serveur fixe sysadmin peuvent effectuer n’importe quelle activité sur le serveur.
serveradmin Les membres du rôle serveur fixe serveradmin peuvent modifier les options de configuration à l’échelle du serveur et arrêter le serveur.
securityadmin Les membres du rôle serveur fixe securityadmin gèrent les connexions et leurs propriétés. Ils peuvent attribuer des autorisations GRANT, DENY et REVOKE au niveau du serveur. securityadmin peut également attribuer des autorisations GRANT, DENY et REVOKE au niveau de la base de données, s’il a accès à une base de données. En outre, securityadmin peuvt réinitialiser les mots de passe pour les comptes de connexion SQL Server.

IMPORTANT: La possibilité d’octroyer l’accès au moteur de base de données et de configurer des autorisations utilisateur permet à l’administrateur de sécurité d’affecter la plupart des autorisations du serveur. Le rôle securityadmin doit être traité comme équivalent au rôle sysadmin . En guise d’alternative, à partir de SQL Server 2022 (16.x), envisagez d’utiliser le nouveau rôle serveur fixe ##MS_LoginManager###.
processadmin Les membres du rôle serveur fixe processadmin peuvent mettre fin aux processus en cours d’exécution dans une instance de SQL Server.
setupadmin Les membres du rôle serveur fixe setupadmin peuvent ajouter et supprimer des serveurs liés à l’aide d’instructions Transact-SQL. ( une adhésion sysadmin est nécessaire lors de l'utilisation de Management Studio).
bulkadmin Les membres du rôle serveur fixe bulkadmin peuvent exécuter l’instruction BULK INSERT.

Les autorisations ADMINISTER BULK OPERATIONS et le rôle bulkadmin ne sont pas pris en charge pour SQL Server sur Linux. Seul le sysadmin peut effectuer des insertions en bloc pour SQL Server sur Linux.
diskadmin Le rôle serveur fixe diskadmin permet de gérer les fichiers disque.
dbcreator Les membres du rôle serveur fixe dbcreator peuvent créer, modifier, supprimer et restaurer n’importe quelle base de données.
public Chaque connexion SQL Server appartient au rôle serveur public. Lorsqu’un principal de serveur ne s’est pas vu accorder ou refuser des autorisations spécifiques sur un objet sécurisable, l’utilisateur hérite des autorisations accordées au rôle public sur cet objet. Vous ne devez affecter des autorisations publiques à un objet que lorsque vous souhaitez que ce dernier soit disponible pour tous les utilisateurs. Vous ne pouvez pas modifier l’appartenance au rôle public.

Remarque : public est implémenté différemment des autres rôles. Les autorisations peuvent être accordées, refusées ou révoquées à partir des rôles serveur fixes public.

Important

La plupart des autorisations fournies par les rôles serveur suivants ne s’appliquent pas à Azure Synapse Analytics - processadmin, serveradmin, setupadmin et diskadmin.

Pour plus d’informations, consultez Rôles de niveau serveur fixe introduits dans SQL Server 2022.

Le tableau suivant présente des rôles de niveau serveur fixes supplémentaires introduits avec SQL Server 2022 (16.x) et leurs fonctionnalités.

Remarque

Les autorisations au niveau du serveur ne sont disponibles ni pour SQL Database ni pour Azure Synapse Analytics. ##MS_PerformanceDefinitionReader##, ##MS_ServerPerformanceStateReader### et ##MS_ServerSecurityStateReader## sont introduits dans SQL Server 2022 (16.x) et ne sont pas disponibles dans Azure SQL Database.

Rôles serveur fixes Description
##MS_DatabaseConnector## Les membres du rôle serveur fixe ##MS_DatabaseConnector## peuvent se connecter à n’importe quelle base de données sans nécessiter de compte d’utilisateur dans la base de données à laquelle se connecter.

Pour refuser l’autorisation CONNECT pour une base de données spécifique, les utilisateurs peuvent créer un compte d’utilisateur correspondant pour cette connexion dans la base de données, puis REFUSER l’autorisation CONNECT à l’utilisateur de la base de données. Cette autorisation DENY remplace l’autorisation GRANT CONNECT provenant de ce rôle.
##MS_LoginManager## Les membres du rôle serveur fixe ##MS_LoginManager## peuvent créer, modifier et supprimer des connexions. Contrairement à l'ancien rôle de serveur fixe securityadmin, ce rôle ne permet pas aux membres d'obtenir des privilèges GRANT. Il s’agit d’un rôle plus limité qui permet de se conformer au principe du moindre privilège.
##MS_DatabaseManager## Les membres du rôle serveur fixe ##MS_DatabaseManager## peuvent créer et supprimer des bases de données. Un membre du rôle ##MS_DatabaseManager## qui crée une base de données en devient le propriétaire, ce qui lui permet de se connecter à cette base de données en tant qu’utilisateur dbo. L’utilisateur dbo a toutes les autorisations de base de données dans la base de données. Les membres du rôle ##MS_DatabaseManager## n’ont pas nécessairement l’autorisation d’accéder aux bases de données dont ils ne sont pas propriétaires. Ce rôle serveur a les mêmes privilèges que le rôle dbcreator dans SQL Server, mais nous vous recommandons d’utiliser ce nouveau rôle plutôt que l’ancien, car ce rôle existe également dans Azure SQL Database et facilite ainsi l’utilisation des mêmes scripts dans différents environnements.
##MS_ServerStateManager## Les membres du rôle serveur fixe ##MS_ServerStateManager## ont les mêmes autorisations que celles accordées au rôle ##MS_ServerStateReader## . En outre, ce rôle contient l’autorisation ALTER SERVER STATE, qui permet d’accéder à plusieurs opérations de gestion, telles que DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE ('ALL') et DBCC SQLPERF().
##MS_ServerStateReader## Les membres du rôle serveur fixe ##MS_ServerStateReader## peuvent lire toutes les vues catalogue qui sont couvertes par VIEW SERVER STATE, et qui ont des autorisations respectives VIEW DATABASE STATE sur toute base de données sur laquelle le membre de ce rôle détient un compte d’utilisateur.
##MS_ServerPerformanceStateReader## Les membres du rôle serveur fixe ##MS_ServerPerformanceStateReader## peuvent lire toutes les vues catalogue qui sont couvertes par VIEW SERVER PERFORMANCE STATE, et qui ont des autorisations respectives VIEW DATABASE PERFORMANCE STATE sur toute base de données sur laquelle le membre de ce rôle détient un compte d’utilisateur. Il s’agit d’un sous-ensemble de ce à quoi le rôle serveur ##MS_ServerStateReader## a accès, ce qui permet de se conformer au principe du privilège moindre.
##MS_ServerSecurityStateReader## Les membres du rôle serveur fixe ##MS_ServerSecurityStateReader## peuvent lire toutes les vues catalogue qui sont couvertes par VIEW SERVER SECURITY STATE, et qui ont des autorisations respectives VIEW DATABASE SECURITY STATE sur toute base de données sur laquelle le membre de ce rôle détient un compte d’utilisateur. Il s’agit d’un petit sous-ensemble de ce à quoi le rôle serveur ##MS_ServerStateReader## a accès, ce qui permet de se conformer au principe du privilège moindre.
##MS_DefinitionReader## Les membres du rôle serveur fixe ##MS_DefinitionReader## peuvent lire toutes les vues catalogue qui sont couvertes par VIEW ANY DEFINITION, et qui ont des autorisations respectives VIEW DEFINITION sur toute base de données sur laquelle le membre de ce rôle détient un compte d’utilisateur.
##MS_PerformanceDefinitionReader## Les membres du rôle serveur fixe ##MS_PerformanceDefinitionReader## peuvent lire toutes les vues catalogue qui sont couvertes par VIEW ANY PERFORMANCE DEFINITION, et qui ont des autorisations respectives VIEW PERFORMANCE DEFINITION sur toute base de données sur laquelle le membre de ce rôle détient un compte d’utilisateur. C’est un petit sous-ensemble de ce à quoi le rôle serveur ##MS_DefinitionReader## a accès.
##MS_SecurityDefinitionReader## Les membres du rôle serveur fixe ##MS_SecurityDefinitionReader## peuvent lire toutes les vues catalogue qui sont couvertes par VIEW ANY SECURITY DEFINITION, et ont respectivement l’autorisation VIEW SECURITY DEFINITION sur les bases de données où le membre de ce rôle a un compte d’utilisateur. Il s’agit d’un petit sous-ensemble de ce à quoi le rôle serveur ##MS_DefinitionReader## a accès ce qui permet de se conformer au principe du privilège moindre.

Autorisations des rôles serveur fixes

Certaines autorisations sont assignées à chaque rôle serveur fixe.

Autorisations des nouveaux rôles serveur fixes dans SQL Server 2022

Le tableau suivant présente les autorisations attribuées aux rôles de niveau serveur. Il montre aussi les autorisations de niveau base de données qui sont héritées dès lors que l’utilisateur peut se connecter à des bases de données individuelles.

Rôles serveur fixes Autorisations au niveau du serveur Autorisations de niveau base de données
##MS_DatabaseConnector## CONNECT ANY DATABASE CONNECT
##MS_LoginManager## CREATE LOGIN
ALTER ANY LOGIN
S/O
##MS_DatabaseManager## CREATE ANY DATABASE
ALTER ANY DATABASE
ALTER
##MS_ServerStateManager## ALTER SERVER STATE
VIEW SERVER STATE
AFFICHER L’ÉTAT DES PERFORMANCES DU SERVEUR
AFFICHER L’ÉTAT DE SÉCURITÉ DU SERVEUR
VIEW DATABASE STATE
AFFICHER L’ÉTAT DES PERFORMANCES DE LA BASE DE DONNÉES
AFFICHER L’ÉTAT DE SÉCURITÉ DE LA BASE DE DONNÉES
##MS_ServerStateReader## VIEW SERVER STATE
AFFICHER L’ÉTAT DES PERFORMANCES DU SERVEUR
AFFICHER L’ÉTAT DE SÉCURITÉ DU SERVEUR
VIEW DATABASE STATE
AFFICHER L’ÉTAT DES PERFORMANCES DE LA BASE DE DONNÉES
AFFICHER L’ÉTAT DE SÉCURITÉ DE LA BASE DE DONNÉES
##MS_ServerPerformanceStateReader## AFFICHER L’ÉTAT DES PERFORMANCES DU SERVEUR AFFICHER L’ÉTAT DES PERFORMANCES DE LA BASE DE DONNÉES
##MS_ServerSecurityStateReader## AFFICHER L’ÉTAT DE SÉCURITÉ DU SERVEUR AFFICHER L’ÉTAT DE SÉCURITÉ DE LA BASE DE DONNÉES
##MS_DefinitionReader## VIEW ANY DATABASE
VIEW ANY DEFINITION
AFFICHER TOUTE DÉFINITION DES PERFORMANCES
VIEW ANY SECURITY DEFINITION
VIEW DEFINITION
AFFICHER LA DÉFINITION DES PERFORMANCES
VIEW SECURITY DEFINITION
##MS_PerformanceDefinitionReader## AFFICHER TOUTE DÉFINITION DES PERFORMANCES AFFICHER LA DÉFINITION DES PERFORMANCES
##MS_SecurityDefinitionReader## VIEW ANY SECURITY DEFINITION VIEW SECURITY DEFINITION

Autorisations des rôles serveur pour SQL Server 2019 et versions antérieures

Le graphique suivant montre les autorisations attribuées aux rôles de serveur hérités (SQL Server 2019 et versions antérieures).
Diagramme montrant les autorisations de rôle serveur fixes.

Important

L'autorisation CONTROL SERVER ressemble, mais n'est pas identique au rôle serveur fixe sysadmin . Les autorisations n'impliquent pas les appartenances au rôle et les appartenances au role n'accordent pas d'autorisation. (l’ex CONTROL SERVER n’implique pas l’appartenance au rôle serveur fixe sysadmin .) Cependant, il est parfois possible d'emprunter l'identité entre les rôles et les autorisations équivalentes. La plupart des commandes DBCC et de nombreuses procédures système exigent l'appartenance au rôle serveur fixe sysadmin .

Autorisations au niveau du serveur

Seules des autorisations au niveau du serveur peuvent être ajoutées aux rôles serveur définis par l'utilisateur. Pour répertorier les autorisations au niveau du serveur, exécutez l'instruction suivante. Les autorisations au niveau du serveur sont :

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

Pour plus d’informations sur les autorisations, consultez Autorisations (moteur de base de données) et sys.fn_builtin_permissions (Transact-SQL).

Utilisation des rôles de niveau serveur

Le tableau ci-dessous explique les commandes, vues et fonctions permettant d'utiliser les rôles serveur.

Fonctionnalité Type Description
sp_helpsrvrole (Transact-SQL) Métadonnées Retourne la liste des rôles au niveau du serveur.
sp_helpsrvrolemember (Transact-SQL) Métadonnées Retourne des informations sur les membres d'un rôle au niveau du serveur.
sp_srvrolepermission (Transact-SQL) Métadonnées Affiche les autorisations d'un rôle au niveau du serveur.
IS_SRVROLEMEMBER (Transact-SQL) Métadonnées Indique si une connexion SQL Server est membre du rôle au niveau du serveur spécifié.
sys.server_role_members (Transact-SQL) Métadonnées Retourne une ligne pour chaque membre de chaque rôle serveur.
CREATE SERVER ROLE (Transact-SQL) Commande Crée un rôle serveur défini par l'utilisateur.
ALTER SERVER ROLE (Transact-SQL) Commande Modifie l'appartenance d'un rôle serveur ou modifie le nom d'un rôle serveur défini par l'utilisateur.
DROP SERVER ROLE (Transact-SQL) Commande Supprime un rôle de serveur défini par l'utilisateur.
sp_addsrvrolemember (Transact-SQL) Commande Ajoute une connexion en tant que membre d'un rôle serveur. Déconseillé. Utilisez plutôt ALTER SERVER ROLE .
sp_dropsrvrolemember (Transact-SQL) Commande Supprime un login SQL Server ou un utilisateur ou groupe Windows d'un rôle au niveau du serveur. Déconseillé. Utilisez plutôt ALTER SERVER ROLE .

Rôles spécifiques à SQL Server activés par Azure Arc

Lorsque vous installez l'extension Azure pour SQL Server, l'installation :

  1. Crée un rôle au niveau du serveur : SQLArcExtensionServerRole

  2. Crée un rôle au niveau de la base de données : SQLArcExtensionUserRole

  3. Ajoute le compte NT AUTHORITY\SYSTEM* à chaque rôle

  4. Mappe NT AUTHORITY\SYSTEM* au niveau de la base de données pour chaque base de données

  5. Accorde des autorisations minimales pour les fonctions activées

    *Vous pouvez également configurer SQL Server avec Azure Arc pour qu’il s’exécute en mode privilège minimum (disponible en préversion). Pour plus de détails, consultez Utiliser SQL Server avec Azure Arc avec des privilèges minimum (préversion).

En outre, l’extension Azure pour SQL Server révoque les autorisations pour ces rôles lorsqu’elles ne sont plus nécessaires pour des fonctionnalités spécifiques.

SqlServerExtensionPermissionProvider est une tâche Windows. Elle accorde ou révoque des privilèges dans SQL Server lorsqu’elle détecte :

  • Une nouvelle instance SQL Server installée sur l’hôte
  • L’instance SQL Server est désinstallée de l’hôte
  • Une fonctionnalité au niveau de l’instance est activée ou désactivée, ou les paramètres sont mis à jour
  • Le service d’extension est redémarré

Remarque

Avant la version de juillet 2024, SqlServerExtensionPermissionProvider est une tâche planifiée. Elle s’exécute toutes les heures.

Pour plus d’informations, consultez Configurer les comptes de service Windows et les autorisations de l’extension Azure pour SQL Server.

Si vous désinstallez l’extension Azure pour SQL Server, les rôles au niveau du serveur et de la base de données seront supprimés.

Pour les autorisations, vérifiez les autorisations.