SQL 평가 API

적용 대상: Azure Virtual Machines SQL Server on Linux SQL Server 2012(11.x) 이상 Azure SQL Managed Instance SQL Server

SQL 평가 API는 모범 사례에 대해 SQL Server 구성을 평가하는 메커니즘을 제공합니다. API는 SQL Server 팀에서 제안한 모범 사례 규칙을 포함하는 규칙 집합과 함께 제공됩니다. 이 규칙 집합은 새 버전의 릴리스와 함께 향상되었지만 동시에 API는 사용자 지정이 가능하고 확장 가능한 솔루션을 제공하도록 빌드됩니다. 사용자는 기본 규칙을 조정하고 직접 만들 수 있습니다.

SQL 평가 API는 SQL Server 구성이 권장되는 모범 사례를 따르는지 확인하려는 경우에 유용합니다. 초기 평가 후에는 정기적으로 예약된 평가를 통해 구성 안정성을 추적할 수 있습니다.

API를 사용하여 다음을 평가할 수 있습니다.

API는 ADS(Azure Data Studio)의 SQL Server 평가 확장에서도 사용됩니다.

참고

SQL 평가 API는 다양한 영역에 대 한 평가를 제공하지만 보안과는 긴밀히 연관되지는 않습니다. SQL 취약성 평가를 사용하여 데이터베이스 보안을 사전에 개선하는 것이 좋습니다.

규칙

규칙(검사라고도 함)은 JSON 형식 파일에 정의되어 있습니다. 규칙 집합 형식에는 규칙 집합 이름 및 버전을 지정해야 합니다. 사용자 지정 규칙 집합을 사용하는 경우 어떤 규칙 집합의 권장 사항이 제공되는지 쉽게 알 수 있습니다.

Microsoft에서 제공하는 규칙 집합은 GitHub에서 이용할 수 있습니다. 샘플 리포지토리에서전체 규칙 집합을 확인할 수 있습니다.

SQL 평가 cmdlet 및 연결된 확장

API 직접 사용

SQL 평가 API를 사용할 수 있으며 다음 구성 요소의 일부로 관리 코드를 통해 사용할 수 있습니다.

SQL 평가 API를 직접 사용하기 전에 다음 중 하나를 설치해야 합니다.

SMO 프레임워크는 다음 메서드를 제공하는 SQL 평가 API 확장을 통해 보완됩니다.

  • GetAssessmentItems: 특정 SQL 개체에 대해 사용 가능한 검사를 반환합니다(IEnumerable<...>).

  • GetAssessmentResults: 평가를 동기적으로 평가하고 결과 및 오류가 있는IEnumerable<...> 경우()

  • GetAssessmentResultsList: 평가를 비동기적으로 평가하고 결과 및 오류가 있는Task<...> 경우()

PowerShell을 통해 API 사용

PowerShell을 통해 SQL 평가 API를 호출하려면 SQL Server PowerShell 모듈을 설치해야 합니다. 이 모듈은 SqlServer SQL 평가 API에서 작동하는 두 개의 cmdlet을 제공합니다.

  • Get-SqlAssessmentItem: SQL Server 개체에 대해 사용 가능한 평가 검사 목록을 제공합니다.

  • Invoke-SqlAssessment: 평가 결과 제공

SQL 평가 cmdlet 사용

평가는 선택한 SQL Server 개체에 대해 수행됩니다. 기본 규칙 집합에는 두 가지 종류의 개체에 대해서만 Server 검사가 있습니다. 및 Database (또한 API는 두 가지 종류인 및 AvailabilityGroup)를 지원합니다Filegroup. SQL Server instance 및 모든 해당 데이터베이스를 평가하려면 각 개체에 대해 SQL Assessment cmdlet을 개별적으로 실행해야 합니다. 또는 평가를 위한 개체를 변수 또는 파이프라인의 SQL Assessment cmdlet에 전달할 수 있습니다.

SqlServerRegisteredServer 개체는 서로 교환할 수 있으므로 SQL Assessment cmdlet에 전달할 수 있습니다.

시작하려면 다음 예제를 참조하세요.

  1. 로컬 기본 인스턴스에 대해 사용 가능한 검사 목록을 확인하여 검사를 숙지합니다. 이 예제에서는 cmdlet의 Get-SqlInstance 출력을 cmdlet에 파이핑하여 Get-SqlAssessmentItem instance 개체를 전달합니다.

    Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  2. 인스턴스의 모든 데이터베이스에 대해 사용 가능한 검사 목록을 가져옵니다. 여기서는 cmdlet 및 Windows PowerShell SQL Server 공급자와 함께 구현된 경로를 사용하여 Get-Item 데이터베이스 목록을 가져온 다음 cmdlet으로 Get-SqlDatabase 파이핑합니다.

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

    또한 cmdlet을 Get-SqlDatabase 사용하여 동일한 작업을 수행할 수 있습니다.

    Get-SqlDatabase -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  3. instance 대한 평가를 호출하고 결과를 SQL Server 테이블에 저장합니다. 이 예제에서는 cmdlet의 Get-SqlInstance 출력을 cmdlet으로 Invoke-SqlAssessment 파이핑합니다. 이 출력은 cmdlet에 Write-SqlTableData 파이프됩니다. cmdlet Invoke-Assessment 은 이 예제에서 매개 변수를 사용하여 -FlattenOutput 실행됩니다. 이 매개 변수는 출력을 cmdlet에 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. 태스크 또는 작업을 예약하여 정기적으로 또는 요청 시 평가를 실행하여 진행률을 측정합니다.

규칙 사용자 지정

규칙은 사용자 지정이 가능하고 확장 가능하도록 설계되었습니다. Microsoft의 규칙 집합은 대부분의 환경에서 작동하도록 설계되었습니다. 그러나 모든 개별 환경에 유효한 단일 규칙 집합이란 불가능합니다. 사용자는 자신의 JSON 파일을 작성하고 기존 규칙을 사용자 지정하거나 새 규칙을 추가할 수 있습니다. 사용자 지정 예제 및 Microsoft에서 릴리스한 전체 규칙 집합은 샘플 리포지토리에서 이용할 수 있습니다. 사용자 지정 JSON 파일을 사용하여 SQL Assessment cmdlet을 실행하는 방법에 대한 자세한 내용은 cmdlet을 Get-Help 사용합니다.

규칙 사용자 지정 기능에 사용할 수 있는 옵션

특정 규칙 또는 규칙 그룹 사용/사용 안 함(태그 사용)

특정 규칙이 환경에 적용되지 않거나 문제를 해결하기 위해 예약된 작업이 완료될 때까지 특정 규칙을 무음으로 처리할 수 있습니다.

임계값 매개 변수 변경

특정 규칙에는 문제를 찾기 위해 메트릭의 현재 값과 비교되는 임계값이 있습니다. 기본 임계값이 적합하지 않는 경우 변경할 수 있습니다.

사용자 또는 제3자가 작성한 규칙 추가

하나 이상의 JSON 파일을 SQL 평가 API 호출에 매개 변수로 추가하여 규칙 집합을 결합할 수 있습니다. 조직에서 해당 파일을 작성하거나 타사에서 가져올 수 있습니다. 예를 들어 Microsoft 규칙 집합에서 특정 규칙을 사용하지 않도록 설정하는 JSON 파일을 사용하고 사용자 환경에 유용한 규칙을 포함하는 업계 전문가의 JSON 파일을 또 하나 사용하여 자체 JSON 파일에서 일부 임계값을 변경할 수 있습니다.

중요

신뢰할 수 없는 출처에서 제공되는 규칙 집합을 철저히 검토하여 안전한지 확인할 때까지는 사용하지 것을 촉구합니다.

다음 단계