API d’évaluation SQL
S’applique à : SQL Server 2012 (11.x) et ultérieur Azure SQL Managed Instance SQL Server sur des machines virtuelles Azure 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 :
-
Version publiée à compter de juin 2020 et ultérieur.
SMO (SQL Server Management Objects)
Version publiée à compter de juillet 2019 et ultérieur.
-
Version publiée à compter de juillet 2019 et ultérieur.
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 ServerInvoke-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.
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 commandeGet-SqlAssessmentItem
afin de lui passer l’objet d’instance.Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
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 commandeGet-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
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 commandeInvoke-SqlAssessment
, dont les résultats sont transmis à l’applet de commandeWrite-SqlTableData
. L’applet de commandeInvoke-Assessment
est exécutée avec le paramètre-FlattenOutput
dans cet exemple. Ce paramètre adapte la sortie à l’applet de commandeWrite-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
Suivez les descriptions et les liens dans la table pour mieux comprendre les recommandations.
Personnalisez les règles en fonction de votre environnement et des exigences de votre organisation (voir ci-dessous).
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.