Compte de service SQL Server privilèges et droits Windows


12

Ma question est la suivante: si vous créez un nouveau compte d'utilisateur de domaine pour chacun des processus SQL Server, quelles autorisations doivent être définies pour chaque compte? Ou le gestionnaire de configuration SQL s'occupe-t-il réellement de cela, et je viens d'avoir un problème imprévu?

Je dois souvent configurer Microsoft SQL Server et je me suis demandé si quelqu'un pouvait fournir des conseils sur la configuration des comptes sous lesquels les services devraient fonctionner. OMI, cela a été vaguement documenté par Microsoft, alors qu'ils vous indiquent la bonne direction, je n'ai jamais pu trouver d'exemples concrets.

Pour résumer ce que j'ai vu jusqu'à présent:

Pour les déploiements simples \ environnements de développement, il est OK d'utiliser les valeurs par défaut du compte virtuel que le programme d'installation utilise: par exemple NT SERVICE\MSSQLSERVER

Évitez d'utiliser le SYSTEMcompte, ce n'est pas sécurisé.

Pour la production et dans les environnements de domaine, il est recommandé d'utiliser soit un compte de service géré, soit de créer un compte d'utilisateur de domaine (et non un administrateur) pour chaque service. Apparemment, si vous utilisez un compte de domaine au moment de l'installation, le programme d'installation définira les autorisations requises pour vous.

Si vous modifiez le compte de service sur une installation existante d'un compte virtuel à un compte de domaine, la recommandation consiste à utiliser le gestionnaire de configuration SQL Server pour définir les nouveaux comptes de service. Il semblerait que cela définisse les autorisations requises pour vous.

J'ai juste essayé de changer le compte de service dans une installation existante en un compte de domaine et cela me donnerait un échec de connexion jusqu'à ce que j'accorde l' log on as serviceautorisation de compte , ce qui contredit la partie où le gestionnaire de configuration SQL Server définira les autorisations requises. (Bien que je ne sais pas si un objet de stratégie de groupe peut avoir interféré avec la définition de cette stratégie de sécurité locale)

Microsoft fournit une liste des autorisations accordées par le programme d' installation de SQL Server sur cette page .

Mais je ne sais pas si c'est quelque chose que je dois faire manuellement pour l'utilisateur que je crée pour exécuter le service, ou si l'utilisation du gestionnaire de configuration SQL doit automatiquement définir ces autorisations.

SQL Server 2014, le contrôleur de domaine est sur Windows Server 2008 R2.


Quelle version de SQL? Est-ce un environnement AD? Si oui, quel est le niveau du domaine?
Katherine Villyard

Merci, j'ai ajouté les versions à la question. SQL Server 2014, le contrôleur de domaine est au niveau fonctionnel de Windows Server 2008 R2

1
Cela ne ressemble pas à une documentation vague pour moi. Cela semble assez complet. - msdn.microsoft.com/en-us/library/ms143504.aspx

Oui, je suis d'accord, dans l'ensemble, la documentation est bonne, mais la partie dont je ne suis pas sûre était vague, c'est ce que je voulais dire. Vous avez raison, en gros la documentation est très détaillée.
plumdog

Réponses:


10

Je dois souvent configurer MS SQL Server et je me suis demandé si quelqu'un pouvait fournir des conseils sur la configuration des comptes sous lesquels les services devraient fonctionner. OMI, cela a été vaguement documenté par Microsoft, alors qu'ils vous indiquent la bonne direction, je n'ai jamais pu trouver d'exemples concrets.

Il est en fait documenté de manière assez approfondie: http://msdn.microsoft.com/en-us/library/ms143504.aspx

Y en a-t-il une partie dont vous n'êtes pas sûr?

Pour les déploiements simples \ environnements de développement, il est OK d'utiliser les valeurs par défaut du compte virtuel que le programme d'installation utilise: par exemple NT SERVICE \ MSSQLSERVER

Cela dépendra de l'environnement. Personnellement, je déteste trouver un serveur configuré par quelqu'un à l'aide d'un compte local et demander à avoir accès aux ressources du réseau dans le futur, entre autres problèmes.

Pour la production et dans les environnements de domaine, il est recommandé d'utiliser soit un compte de service géré, soit de créer un compte d'utilisateur de domaine (et non un administrateur) pour chaque service.

Encore une fois, cela dépend, mais en général, je serais d'accord (un contre-exemple serait les groupes de disponibilité où il est logique d'utiliser un seul compte de domaine dans toutes les instances).

Apparemment, si vous utilisez un compte de domaine au moment de l'installation, le programme d'installation définira les autorisations requises pour vous.

Sauf en cas d'échec, etc., il le fera. Je ne sais pas pourquoi la partie "prétendument".

Si vous modifiez le compte de service sur une installation existante d'un compte virtuel à un compte de domaine, la recommandation consiste à utiliser le gestionnaire de configuration SQL Server pour définir les nouveaux comptes de service. Il semblerait que cela définisse les autorisations requises pour vous.

Lorsque vous modifiez l'un des services pour SQL Server, utilisez toujours SSCM. Toujours. Période. Il définira les autorisations pour le nouveau compte sur les bases. Si, avant que le compte système local ne soit utilisé et qu'une autorisation illimitée soit accordée à tout ce qui se trouvait sur le système, je m'attendrais à ce que quelque chose échoue aux autorisations après le changement en raison d'une sécurité contrôlée plus stricte. Ce n'est pas une faute de SQL Server SSCM, c'est une faute d'administrateur de ne pas accorder les autorisations EXTRA appropriées (telles que l'accès à un partage réseau, des dossiers restreints, des éléments en dehors du domaine d'installation de SQL Server, etc.)

J'ai juste essayé de changer le compte de service dans une installation existante en un compte de domaine et cela me donnerait un échec de connexion jusqu'à ce que j'accorde l'autorisation de connexion au compte en tant que service, ce qui contredit la partie où le gestionnaire de configuration SQL Server définira tout requis autorisations. (Bien que je ne sais pas si un objet de stratégie de groupe peut avoir interféré avec la définition de cette stratégie de sécurité locale)

Sonne comme un GPO est à l'origine d'un problème (à mon humble avis). Ce ne serait pas la première fois :)

Ma question est donc la suivante: si vous créez un nouveau compte d'utilisateur de domaine pour chacun des processus SQL Server, quelles autorisations doivent être définies pour chaque compte?

Je définirais explicitement toutes les autorisations en dehors de celles indiquées dans le lien msdn que j'ai ci-dessus (également donné par @joeqwerty et dans votre OP). Par exemple, sur un dossier "sauvegarde" sur un partage réseau, sur un nouveau lecteur ajouté pour contenir de nouvelles bases de données (où l'installation était déjà exécutée mais le lecteur n'existait pas), etc.

Mais je ne sais pas si c'est quelque chose que je dois faire manuellement pour l'utilisateur que je crée pour exécuter le service, ou si l'utilisation du gestionnaire de configuration SQL doit automatiquement définir ces autorisations.

Sauf si quelque chose est extrêmement cassé avec le serveur, ceux-ci ne devraient pas avoir à être donnés manuellement.


Merci pour votre réponse, je suis d'accord avec vos commentaires. J'ai configuré SQL Server sur une autre machine virtuelle propre pour vérifier cela, et j'ai pu permuter du compte virtuel NT SERVICE / MSSQLSERVER à un compte d'utilisateur de domaine et cela a fonctionné sans problème. Je pense donc que la réponse est comme vous l'avez dit, utilisez SQL Server Configuration Manager pour modifier les ouvertures de session du compte d'utilisateur de service et aucune autorisation supplémentaire ne devrait être requise.
plumdog

Un commentaire supplémentaire, désolé d'avoir pu clarifier ma question en plaçant mon point principal en haut du message que je ferai à l'avenir. La question principale dont je n'étais pas sûr était; [si vous créez un nouveau compte d'utilisateur de domaine pour chacun des processus SQL Server, quelles autorisations doivent être définies pour chaque compte? ...]. La raison pour laquelle j'ai estimé que la documentation était vague dans cette partie est qu'il existe une liste d'autorisations définies, mais il n'est pas explicite si SSCM les définira pour vous.
plumdog

@plumdog Selon votre deuxième commentaire, la plupart des autorisations sont accordées par le programme d'installation. Un compte de service virtuel et un sid y sont liés, c'est pourquoi SSCM doit toujours être utilisé pour que le transfert d'entrée et de sortie des autorisations liées se fasse correctement, entre autres, comme la sécurité liée au chiffrement de la clé principale du service, etc. .
Sean Gallardy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.