API d’évaluation SQL

S’applique à : SQL Server 2012 (11.x) et versions ultérieures Azure SQL Managed Instance SQL Server sur Azure Virtual Machines SQL Server sur Linux

L’API SQL Assessment fournit un mécanisme permettant de déterminer si votre configuration de SQL Server est conforme aux bonnes pratiques. L’API est fournie avec un ensemble de règles contenant les règles de bonnes pratiques suggérées par l’équipe SQL Server. Cet ensemble de règles est amélioré à chaque publication d’une nouvelle version. Néanmoins, l’API est conçue comme une solution hautement personnalisable et extensible. Les utilisateurs peuvent paramétrer les règles par défaut et créer leurs propres règles.

L’API SQL Assessment est utile pour vérifier si votre configuration de SQL Server est conforme aux bonnes pratiques recommandées. Après une évaluation initiale, vous pouvez suivre la stabilité de la configuration au moyen d’évaluations planifiées à intervalles réguliers.

L’API peut être utilisée pour évaluer :

  • SQL Server sur les machines virtuelles Azure

  • Azure SQL Managed Instance

  • SQL Server 2012 et ultérieur

  • SQL Server sur les systèmes et conteneurs Linux

L’API est également utilisée par l’Extension d’évaluation SQL Server pour Azure Data Studio (ADS).

Notes

L’API SQL Assessment fournit une évaluation sur plusieurs domaines, mais elle n’examine pas en profondeur la sécurité. Nous vous recommandons d’utiliser l’évaluation des vulnérabilités SQL pour améliorer de façon proactive la sécurité de votre base de données.

Règles

Les règles (parfois appelées « vérifications ») sont définies dans des fichiers au format JSON. Le format nécessite la spécification du nom et de la version d’un ensemble de règles. Quand vous utilisez des ensembles de règles personnalisés, vous pouvez facilement savoir quelles recommandations proviennent de quel ensemble de règles.

L’ensemble de règles fourni par Microsoft est disponible sur GitHub. Vous pouvez voir l’ensemble de règles complet dans le dépôt d‘exemples.

Applets de commande SQL Assessment et extensions associées

Utiliser l’API directement

L’API SQL Assessment est disponible et peut être utilisée via du code managé dans le cadre de l’un de ces composants :

Avant de commencer à utiliser l’API SQL Assessment, veillez à installer l’un des éléments suivants :

L’infrastructure SMO est complétée par l’extension d’API SQL Assessment qui fournit les méthodes suivantes :

  • GetAssessmentItems : retourne les vérifications disponibles pour un objet SQL en particulier (IEnumerable<...>)

  • GetAssessmentResults : évalue de manière synchrone l’évaluation et retourne les résultats et les erreurs éventuelles (IEnumerable<...>)

  • GetAssessmentResultsList : évalue de manière asynchrone l’évaluation et retourne les résultats et les erreurs éventuelles (Task<...>)

Utiliser l’API via PowerShell

Si vous souhaitez appeler l’API SQL Assessment via PowerShell, vous devez installer le module SQL Server PowerShell. Le module SqlServer fournit deux applets de commande qui fonctionnent avec l’API SQL Assessment :

  • Get-SqlAssessmentItem : fournit la liste des contrôles d’évaluation disponibles pour un objet SQL Server

  • Invoke-SqlAssessment : fournit les résultats d’une évaluation

Commencer à utiliser les applets de commande SQL Assessment

Une évaluation est effectuée sur un objet SQL Server choisi. Dans l’ensemble de règles par défaut, seuls deux genres d’objets sont vérifiés : Server et Database (en plus de ceux-ci, l’API prend en charge les genres Filegroup et AvailabilityGroup). Si vous souhaitez évaluer une instance SQL Server et toutes ses bases de données, vous devez exécuter les applets de commande SQL Assessment pour chaque objet séparément. Vous pouvez également passer des objets à évaluer aux applets de commande SQL Assessment dans une variable ou dans le pipeline.

Les objets SqlServer et RegisteredServer sont interchangeables, ce qui vous permet de passer l’un ou l’autre aux applets de commande SQL Assessment.

Pour commencer, passez en revue les exemples suivants.

  1. Obtenez la liste des vérifications disponibles pour une instance par défaut locale afin de vous familiariser avec les vérifications. Dans cet exemple, nous utilisons le pipeline pour transmettre la sortie de l’applet de commande Get-SqlInstance à l’applet de commande Get-SqlAssessmentItem afin de lui passer l’objet d’instance.

    Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  2. Obtenez la liste des vérifications disponibles pour toutes les bases de données de l’instance. Ici, nous utilisons l’applet de commande Get-Item et un chemin implémenté avec le fournisseur Windows PowerShell SQL Server pour obtenir la liste des bases de données, que nous transmettons ensuite à l’applet de commande Get-SqlDatabase.

    Get-Item SQLSERVER:\SQL\localhost\default | Get-SqlAssessmentItem
    

    Vous pouvez également utiliser l’applet de commande Get-SqlDatabase pour obtenir le même résultat.

    Get-SqlDatabase -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  3. Appelez l’évaluation pour l’instance et enregistrez les résultats dans une table SQL Server. Dans cet exemple, nous utilisons le pipeline pour transmettre la sortie de l’applet de commande Get-SqlInstance à l’applet de commande Invoke-SqlAssessment, dont les résultats sont transmis à l’applet de commande Write-SqlTableData. L’applet de commande Invoke-Assessment est exécutée avec le paramètre -FlattenOutput dans cet exemple. Ce paramètre adapte la sortie à l’applet de commande Write-SqlTableData. Cette dernière génère une erreur si vous omettez le paramètre.

    Get-SqlInstance -ServerInstance 'localhost' |
    Invoke-SqlAssessment -FlattenOutput |
    Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
    

    Appelons à présent une évaluation pour toutes les bases de données de l’instance et ajoutons les résultats à la même table.

    Get-SqlDatabase -ServerInstance 'localhost' |
    Invoke-SqlAssessment -FlattenOutput |
    Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
    
  4. Suivez les descriptions et les liens dans la table pour mieux comprendre les recommandations.

  5. Personnalisez les règles en fonction de votre environnement et des exigences de votre organisation (voir ci-dessous).

  6. Planifiez une tâche ou un travail pour exécuter l’évaluation à intervalles réguliers ou à la demande afin de mesurer la progression.

Personnaliser les règles

Les règles sont conçues pour être personnalisables et extensibles. L’ensemble de règles de Microsoft est conçu pour fonctionner dans la plupart des environnements. Toutefois, il est impossible d’avoir un ensemble de règles qui fonctionne pour tous les environnements. Les utilisateurs peuvent écrire leurs propres fichiers JSON et personnaliser des règles existantes ou en ajouter d’autres. Vous trouverez des exemples de personnalisation et l’ensemble de règles complet publié par Microsoft dans le dépôt d’exemples. Pour plus d’informations sur l’exécution des applets de commande SQL Assessment avec des fichiers JSON personnalisés, utilisez l’applet de commande Get-Help.

Options disponibles avec la fonctionnalité de personnalisation de règle

Activer/Désactiver certaines règles ou certains groupes de règles (à l’aide d’étiquettes)

Vous pouvez désactiver des règles spécifiques quand elles ne sont pas appliquées à votre environnement ou jusqu’à ce qu’un travail planifié soit effectué pour corriger le problème.

Modifier les paramètres de seuil

Des règles spécifiques ont des seuils qui sont comparés à la valeur actuelle d’une métrique pour identifier un problème. Si les seuils par défaut ne sont pas adaptés, vous pouvez les modifier.

Ajouter des règles écrites par vous ou par des tiers

Vous pouvez combiner des ensembles de règles en ajoutant un ou plusieurs fichiers JSON comme paramètres à votre appel d’API SQL Assessment. Votre organisation peut écrire ces fichiers ou les obtenir auprès d’un tiers. Par exemple, vous pouvez avoir votre fichier JSON qui désactive des règles spécifiques de l’ensemble de règles Microsoft, un autre fichier JSON écrit par un expert du secteur qui inclut des règles que vous trouvez utiles pour votre environnement, puis un autre fichier JSON qui modifie certaines valeurs de seuil dans ce fichier JSON.

Important

Nous vous recommandons vivement de passer attentivement en revue les ensembles de règles provenant de sources non approuvées avant de les utiliser afin de vérifier qu’ils ne présentent aucun risque.

Étapes suivantes