SQL Server : Quels comptes de service choisir ?
SQL Server est un moteur de base de données fonctionnant en tant que services, c’est-à-dire que vous avez juste à démarrer le serveur pour que lapplication démarre. Nul besoin de se connecter au serveur, ni de démarrer un quelconque programme.Par contre, ce service, comme tout autre service nécessite un utilisateur pour sexécuter. Le choix de cet utilisateur est loin dêtre anodin, un mauvais choix peut potentiellement être une brèche de sécurité dans lentreprise, ou vous faire arracher les cheveux de la tête lors de la mise en place de réplications, ou autre système nécessitant de communiquer entre les serveurs.
En tout vous avez 5 choix pour chacun des services de SQL Server :
- LocalSystem
- LocalService (Windows 2003 et +)
- NetworkService (Windows 2003 et +)
- Compte Utilisateur Local
- Compte Utilisateur du Domaine
- Invité local ou du domaine
- Tout simplement déconseillé car ce compte a son profil local recréé à chacune se ses connexion et dispose de droits très limités (à la limite il est fortement bridé et particulièrement depuis Windows 2003) et peu poser des problèmes avec un service. Dune manière générale ou ne donnera jamais moins de privilèges que celui dutilisateur à un service.
- Administrateur du domaine
- Dans ce cas, cest au contraire que les droits accordés sont beaucoup trop élevés. Dune part SQL Server ne nécessite en aucuns cas des privilèges administrateurs sur une machine, mais encore moins sur un domaine. Utiliser ce type de compte de service est une faille de sécurité majeure, toute personne étant sysadmin (login sa entre autres) bénéficie indirectement de ce type de droits et de laccès total au domaine de lentreprise.
- Compte LocalSystem
C’est en général l’option par défaut dans beaucoup dinstallation de SQL Server. SQL Server dispose de permission « administrateur » local de la machine avec ce compte et même un peu plus étant donné que ce compte dispose de quelques privilèges systèmes supplémentaires que nont pas les administrateurs.
Ses droits sont locaux uniquement, ce compte n’a pas de réel contexte utilisateur en cas de connexion à une machine distante, c’est une demande douverture de session (null) qui faites sur celle-ci (qui est en général refusée).
Cest un assez mauvais choix car il procure des droits très importants à SQL Server et potentiellement à des personnes malveillantes connectées sur ce même serveur de base de données (possibilités entre autres de redémarrer Windows, etc.). SQL Server na pas besoin de privilèges aussi élevé, on préfèrera lune des autres options plus « sécurisé ».
- Compte LocalService (nouveauté Windows 2003)
Ses droits sont ceux d’un utilisateur simple local. Les privilèges dont il dispose sont locaux uniquement, en cas de tentative de connexion à une machine distante, c’est une demande douverture de session (null) qui faites sur celle-ci (qui est en général refusée).
A savoir que ses droits sont restreints volontairement en vue de lutilisation comme compte de service, ce qui en fait un choix meilleur que LocalSystem. Cependant il cumule les droits de tous les services qui lutilisent : Si SQL server et IIS sen servent comme compte de service il aura accès à la fois aux répertoires de SQL Server et à ceux de IIS.
Cest un assez bon compromis en termes de sécurité, même si les droits dont il dispose sont très fonctions de lutilisation de celui-ci avec dautres services. Suivant le rôle de votre serveur vous aurez un compte LocalService avec des privilèges plus ou moins élevés, ce qui nen fait pas un choix parfait.
- Compte NetworkService (nouveauté Windows 2003)
Identique au précédent, sauf que les accès réseau sont possibles. Si une tentative de connexion à un autre serveur est faite, ce serveur verra une tentative de connexion du compte de la machine. Exemple : SRVSQL fait une connexion vers SRVWEB, SRVWEB verra une tentative de connexion de \\SRVSQL, quil doit autoriser pour quelle réussisse.
Ce type de compte de service permet au serveur de se reconnaître entre eux sans pour autant nécessiter un domaine. Une DMZ est lendroit idéal où utiliser ce type de compte.
Les limitations restent les même que pour LocalService, les droits de ce type de compte étant fonction de son utilisation pour dautres services. Il faut considérer quil na pas déquivalent, dans le cas de serveurs non connectés à un domaine sont choix peut savérer judicieux.
- Compte Utilisateur Local Windows
Ce compte ne dispose que des privilèges « utilisateur » local. En cas de tentative de connexion à une machine distante, c’est une demande douverture de session (null) qui faites sur celle-ci (qui est en général refusée).
Les privilèges accordés à ce compte sont uniquement ceux que vous lui accordez (et que linstallation de SQL Server lui accorde). Il faudra lui donner un mot de passe complexe et interdire son expiration si vous souhaitez éviter tout problème.
Ce choix est généralement le meilleur en termes de sécurité pour SQL Server il est équivalent à LocalService, mais ne souffre pas du principal problème de ce dernier : les droits de ce comptes ne sont partagés que par les services où vous lutilisé, et rien ne vous interdit dun créer un par service. Cependant si vous avez besoin de réaliser des accès distant à dautres serveurs ce choix nest pas intéressant.
Cest le choix parfait pour le service SQL Server (moteur relationel), celui-ci nayant pas besoin de se connecter à dautres machines.
- Compte Utilisateur du Domaine Windows
Ce compte ne dispose que des privilèges « utilisateur » sur le domaine. En cas de tentative de connexion à une machine distante, cest le compte de service qui réalise cette connexion, à vous de donner les privilèges nécessaire à cette connexion sur la machine distante (exemple : accordez les droits en écriture sur le partage \\SRVFILES\SAV à DOMAINE\compte_sql_server pour permettre la sauvegarde à distance sur ce partage).
Les privilèges accordés à ce compte sont uniquement ceux que vous lui accordez (et que linstallation de SQL Server lui accorde). Il faudra lui donner un mot de passe complexe et interdire son expiration si vous souhaitez éviter tout problème.
Option la plus courante lorsque vous êtes relié à un domaine, permet plus de facilité au niveau de la gestion des droits entre les serveurs. Nécessite pas contre que SQL Server soit joint à un domaine pour en profiter totalement.
Cest un très bon choix pour lAgent SQL, ce service ayant très souvent besoin de se connecter à dautres postes au dautres serveurs de base de données.
Quels choix faire ?
Une petite synthèse des options intéressantes par situation.
Machine autonome sur le réseau :
- Compte Utilisateur local Windows
- Compte LocalService
- Compte NetworkService
- Compte Utilisateur du Domaine