Utiliser SQL Server activé par Azure Arc avec des privilèges minimum

S'applique à :SQL Server

Dans le cadre de la sécurité de l’information, le principe des privilèges minimum affirme que les comptes et applications n’ont accès qu’aux données et opérations dont ils ont besoin. Avec SQL Server activé par Azure Arc, vous pouvez exécuter le service d’extension de l’agent avec des privilèges minimum. Cet article explique comment exécuter le service d’extension de l’agent avec le moins de privilèges possible.

Pour configurer éventuellement le service pour qu’il s’exécute avec des privilèges minimum, suivez les étapes décrites dans cet article. Actuellement, le service ne s’exécute pas automatiquement avec des privilèges minimum.

L’article Configurer des comptes de service Windows et des autorisations pour l’extension Azure pour SQL Server décrit les autorisations de privilèges minimum pour le service d’extension de l’agent.

Remarque

Actuellement, la configuration avec privilèges minimum n’est pas appliquée par défaut.

Les serveurs existants avec une version d’extension 1.1.2859.223 ou supérieure recevront à terme la configuration la moins privilégiée. Cette extension a été publiée en novembre 2024. Pour empêcher l’application automatique des privilèges minimum, bloquez les mises à niveau d’extension après 1.1.2859.223.

Après avoir configuré le service d’extension de l’agent pour qu’il s’exécute avec des privilèges minimum, celui-ci utilise le compte de service NT SERVICE\SqlServerExtension.

Le compte NT SERVICE\SqlServerExtension est un compte de service Windows local :

  • Créé et géré par l’extension Azure pour SQL Server lorsque l’option des privilèges minimum est activée.
  • Autorisations et privilèges minimum requis accordés pour exécuter l’extension Azure pour le service SQL Server sur le système d’exploitation Windows. Il peut uniquement accéder aux dossiers et aux répertoires utilisés pour la lecture et le stockage de la configuration ou l’écriture des journaux.
  • Autorisation accordée pour se connecter et envoyer des requêtes dans SQL Server avec une nouvelle connexion spécifique à ce compte de service disposant des autorisations minimales requises. Les autorisations minimales dépendent des fonctionnalités activées.
  • Mise à jour lorsque les autorisations ne sont plus nécessaires. Par exemple, les autorisations sont révoquées lorsque vous désactivez une fonctionnalité. La révocation garantit qu’il n’y a plus aucune autorisation une fois qu’elles ne sont plus requises.
  • NT SERVICE\SqlServerExtension est supprimé lorsque Azure extension pour SQL Server est désinstallée ou lorsque la configuration de privilèges minimum est désactivée.

Prérequis

Cette section identifie la configuration requise et les outils dont vous avez besoin pour suivre l’exemple de cet article.

Configuration requise

La configuration avec privilèges minimum nécessite :

  • Windows Server 2012 ou versions ultérieures.
  • SQL Server 2012 ou versions ultérieures.
  • Le compte de service SQL Server doit être membre du rôle serveur fixe sysadmin.
  • Toutes les bases de données doivent être en ligne et mises à jour.

La configuration avec privilège minimum n’est actuellement pas prise en charge sur Linux.

D’autres exigences, comme indiqué dans Conditions préalables, s’appliquent toujours.

Compte de service SQL Server

Par défaut, le compte de service SQL Server est membre du rôle serveur fixe sysadmin.

Comme indiqué dans les conditions préalables, le compte de service SQL Server doit être membre du rôle serveur fixe sysadmin sur chaque instance de SQL Server. L’extension Azure pour SQL Server a un processus appelé Deployer.exe qui s’exécute en tant que NT AUTHORITY\SYSTEM quand :

  • Les fonctionnalités sont activées ou désactivées
  • Les instances SQL Server sont ajoutées ou supprimées

Remarque

Deployer.exe se fait passer pour le compte de service SQL Server lorsqu’il se connecte à SQL Server. Une fois connecté, il ajoute ou supprime des autorisations dans les rôles de serveur et de base de données en fonction des fonctionnalités activées ou désactivées. Ce processus garantit que l’extension Azure pour SQL Server utilise les privilèges minimum requis. Par conséquent, le compte de service SQL Server doit être membre du rôle serveur fixe sysadmin.

Si vous souhaitez gérer ce processus avec plus de contrôle, de sorte que le compte de service SQL Server n'est pas membre du rôle serveur fixe sysadmin rôle serveur fixe tout le temps, procédez comme suit :

  1. Ajoutez temporairement le compte de service SQL Server au rôle serveur fixe sysadmin.
  2. Autorisez Deployer.exe à s’exécuter au moins une fois afin que les autorisations soient définies.
  3. Supprimez le compte de service SQL Server du rôle serveur fixe sysadmin.

Répétez cette procédure chaque fois que les fonctionnalités sont activées ou désactivées ou SQL Server instances sont ajoutées pour autoriser Deployer.exe à accorder les privilèges minimum requis.

Important

L’extension Azure pour SQL Server Deployer.exe nécessite que NT AUTHORITY\SYSTEM puisse se connecter à SQL Server, avec l’autorisation CONNECT SQL, dans les modes standard et least privilege. Cette exigence existe, car Deployer.exe s'exécute toujours sous LocalSystem compte, quel que soit le compte de service que l’extension utilise après l’approvisionnement.

Si NT AUTHORITY\SYSTEM ne peut pas se connecter à SQL Server, Deployer.exe ne peut pas créer la connexion NT SERVICE\SqlServerExtension ou accorder les autorisations requises. Avant d’activer le mode privilège minimum, vérifiez que NT AUTHORITY\SYSTEM dispose d’une connexion active SQL Server avec CONNECT SQL autorisation. Consultez les conditions préalables pour connaître les étapes de vérification.

Outils

Pour effectuer les étapes de cet article, vous avez besoin des outils suivants :

Activer les privilèges minimum

  1. Se connecter avec Azure CLI.

    az login
    
  2. Vérifiez la version de l’extension arcdata.

    az extension list -o table
    

    Si les résultats incluent une version prise en charge de arcdata, passez à l’étape suivante.

    Si nécessaire, installez ou mettez à jour l’extension Azure CLI arcdata.

    Pour installer l’extension :

    az extension add --name arcdata
    

    Pour mettre à jour l’extension :

    az extension update --name arcdata
    
  3. Activez les privilèges minimum avec Azure CLI.

    Pour activer les privilèges minimum, définissez l’indicateur de fonctionnalité LeastPrivilege sur true. Pour effectuer cette tâche, exécutez la commande suivante avec des valeurs mises à jour pour le <resource-group> et le <machine-name>.

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group <resource-group> --machine-name <machine-name>
    

    Par exemple, la commande suivante active les privilèges minimum pour un serveur nommé myserver dans un groupe de ressources nommé myrg :

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group myrg --machine-name myserver
    

Vérifier la configuration des privilèges minimum

Pour vérifier que votre SQL Server activé par Azure Arc est configuré pour s’exécuter avec des privilèges minimum :

  1. Dans les services Windows, recherchez le service Service d’extension Microsoft SQL Server. Vérifiez que le service s’exécute en tant que compte de service NT SERVICE\SqlServerExtension.

  2. Ouvrez le planificateur de tâches sur le serveur et vérifiez qu’une tâche pilotée par les événements portant le nom SqlServerExtensionPermissionProvider est créée sous Microsoft\SqlServerExtension.

    Remarque

    Avant la publication de juillet 2024, SqlServerExtensionPermissionProvider était une tâche planifiée qui s'exécutait toutes les heures.

  3. Ouvrez SQL Server Management Studio et vérifiez la connexion nommée NT SERVICE\SqlServerExtension. Vérifiez que ces autorisations sont affectées au compte :

    • Se connecter à SQL
    • Afficher l’état de la base de données
    • Afficher l’état du serveur
  4. Validez les autorisations avec les requêtes suivantes :

    Pour vérifier les autorisations au niveau du serveur, exécutez la requête suivante :

    EXECUTE AS LOGIN = 'NT SERVICE\SqlServerExtension';
    
    SELECT *
    FROM fn_my_permissions(NULL, 'SERVER');
    
    REVERT;
    

    Pour vérifier les autorisations au niveau de la base de données, remplacez <database name> par le nom de l’une de vos bases de données et exécutez la requête suivante :

    EXECUTE AS LOGIN = 'NT SERVICE\SqlServerExtension';
    
    USE <database name>;
    SELECT * FROM fn_my_permissions(NULL, 'database');
    
    REVERT;