API Оценки SQL

Применимо к: SQL Server 2012 (11.x) и более поздних Управляемый экземпляр SQL Azure SQL Server в Azure Виртуальные машины SQL Server на Linux

API-интерфейс Оценки SQL предоставляет механизм для оценки конфигурации SQL Server на соответствие рекомендациям. API предоставляется с набором правил, содержащим правила, предлагаемые командой SQL Server. Этот набор правил дополнен выпуском новых версий, но в то же время API создан для предоставления высоконастраиваемого и расширяемого решения. Пользователи могут настраивать правила по умолчанию и создавать собственные.

API Оценки SQL приходит на помощь, когда вам нужно удостоверить соответствие конфигурации SQL Server рекомендуемым лучшим методикам. После первоначальной оценки стабильность конфигурации отслеживается при помощи регулярных запланированных оценок.

API можно использовать для оценки:

API также используется расширением Оценки SQL Server для Azure Data Studio (ADS).

Примечание

API-интерфейс Оценки SQL обеспечивает анализ разнообразных аспектов, но не дает глубокой оценки безопасности. Чтобы с упреждением совершенствовать защиту ваших баз данных, рекомендуем воспользоваться Оценкой уязвимостей SQL.

Правила

Правила, иногда называемые проверками, определяются в файлах в формате JSON. Для набора правил требуется указать имя и версию набора правил. При использовании пользовательских наборов правил можно легко узнать, какие рекомендации исходят из какого набора правил.

Предоставляемый Майкрософт набор правил доступен на GitHub. Просмотреть весь набор правил можно в репозитории примеров.

Командлеты Оценки SQL и связанные расширения

Непосредственное использование API

Api оценки SQL доступен и может использоваться с помощью управляемого кода в составе любого из следующих компонентов:

Прежде чем приступить к работе с API Оценки SQL, проверьте, установлены ли следующие компоненты:

Платформа SMO дополняется расширением для API Оценки SQL, которое предоставляет следующие методы:

  • GetAssessmentItems: возвращает доступные проверки для определенного объекта SQL (IEnumerable<...>).

  • GetAssessmentResults: синхронно оценивает оценку и возвращает результаты и ошибки, если таковые имеются (IEnumerable<...>).

  • GetAssessmentResultsList: асинхронно оценивает оценку и возвращает результаты и ошибки, если таковые имеются (Task<...>).

Использование API с помощью PowerShell

Если вы хотите вызвать API оценки SQL с помощью PowerShell, необходимо установить SQL Server модуль PowerShell. Модуль SqlServer предоставляет два командлета, которые работают с API оценки SQL:

  • Get-SqlAssessmentItem: предоставляет список доступных проверок оценки для объекта SQL Server.

  • Invoke-SqlAssessment: предоставляет результаты оценки.

Начало работы с командлетами оценки SQL

Оценка выполняется для выбранного объекта SQL Server. В наборе правил по умолчанию есть проверки только для двух типов объектов: Server и Database (в дополнение к ним API поддерживает еще два вида: Filegroup и AvailabilityGroup). Если вы хотите оценить экземпляр SQL Server и все его базы данных, следует выполнить командлеты оценки SQL для каждого объекта отдельно. Или можно передать объекты для оценки в командлеты оценки SQL в переменной или конвейере.

SqlServer Объекты и RegisteredServer являются взаимозаменяемыми, поэтому вы можете передать любые объекты в командлеты оценки SQL.

Чтобы приступить к работе, ознакомьтесь со следующими примерами.

  1. Получите список доступных проверок для локального экземпляра по умолчанию, чтобы познакомиться с проверками. В этом примере мы передаваем выходные данные командлета Get-SqlInstance командлету Get-SqlAssessmentItem , чтобы передать ему объект экземпляра.

    Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  2. Получите список доступных проверок для всех баз данных экземпляра. Здесь мы используем Get-Item командлет и путь, реализованный с поставщиком Windows PowerShell SQL Server, чтобы получить список баз данных, а затем отправить его в Get-SqlDatabase командлет.

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

    Кроме того, для этого можно использовать Get-SqlDatabase командлет .

    Get-SqlDatabase -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  3. Вызовите оценку для экземпляра и сохраните результаты в SQL Server таблице. В этом примере выходные данные командлета Get-SqlInstance передаются в Invoke-SqlAssessment командлет , результаты которого передаются в Write-SqlTableData командлет . Командлет Invoke-Assessment выполняется с параметром -FlattenOutput в этом примере. Этот параметр делает выходные данные подходящими для командлета Write-SqlTableData . Если опустить этот параметр, то в последнем случае будет выдано сообщение об ошибке.

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

    Теперь давайте вызовем оценку всех баз данных экземпляра и добавим результаты в ту же таблицу.

    Get-SqlDatabase -ServerInstance 'localhost' |
    Invoke-SqlAssessment -FlattenOutput |
    Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
    
  4. Для дальнейшего анализа рекомендаций следуйте описанию и ссылкам в таблице.

  5. Настройте правила в соответствии со средой и требованиями организации (см. ниже).

  6. Запланируйте задачу или задание для регулярного выполнения оценки или оценки по запросу для измерения хода выполнения.

Настройка правил

Правила предназначены для повышения возможностей настройки и расширения. Набор правил Майкрософт подходит для работы в большинстве сред. Однако невозможно иметь один набор правил, который будет работать для каждой отдельной среды. Пользователи могут создавать собственные файлы JSON и настраивать существующие правила или добавлять новые. Примеры настройки и полный набор правил Майкрософт доступны в репозитории примеров. Дополнительные сведения о выполнении командлетов оценки SQL с пользовательскими JSON-файлами см. в командлете Get-Help .

Доступные параметры для настройки правил

Включение или отключение определенных правил или групп правил (с помощью тегов)

Вы можете заглушить определенные правила, если они не применяются к вашей среде или пока не будут выполнены запланированные действия по исправлению проблемы.

Изменение пороговых параметров

Отдельные правила имеют пороговые значения, которые сравниваются с текущим значением метрики для выявления проблем. Если пороговые значения по умолчанию не подходят, их можно изменить.

Добавление дополнительных правил, написанных вами или третьими лицами

Вы можете объединить наборы правил, добавив один или несколько JSON-файлов в качестве параметров в вызов API оценки SQL. Ваша организация может написать эти файлы самостоятельно или получить их от третьей стороны. Например, можно использовать файл JSON, который отключает определенные правила из набора Майкрософт, затем файл JSON, написанный экспертом отрасли, который будет включать правила, полезные для вашей среды, и, наконец, третий файл JSON, который будет изменять некоторые пороговые значения второго файла.

Важно!

Мы настоятельно призываем вас не использовать наборы правил, поступающие из ненадежных источников, пока вы не изучите их, чтобы убедиться в их безопасности.

Дальнейшие действия