SQL 취약성 평가는 데이터베이스 취약성을 식별하는 데 유용합니다.

적용 대상: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics

SQL 취약성 평가는 데이터베이스의 잠재적인 취약성을 검색, 추적하여 수정할 수 있는 간편하게 구성할 수 있는 서비스입니다. 이 도구를 사용하여 데이터베이스 보안을 사전에 강화하세요.

취약성 평가는 고급 SQL 보안 기능을 위한 통합 패키지인 Microsoft Defender for SQL 제품의 일부입니다. 취약성 평가는 중앙 Microsoft Defender for SQL 포털을 통해 액세스하고 관리할 수 있습니다.

참고

취약성 평가는 Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics에서 지원됩니다. Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics의 데이터베이스는 이 문서의 나머지 부분에서 전체적으로 데이터베이스라고 지칭되며, 서버는 Azure SQL Database 및 Azure Synapse의 데이터베이스를 호스트하는 서버를 지칭합니다.

SQL 취약성 평가란?

SQL 취약성 평가는 보안 상태를 살펴볼 수 있게 하는 서비스입니다. 취약성 평가에는 보안 문제를 해결하고 데이터베이스 보안을 강화하는 실행 가능한 단계가 포함됩니다. 이를 통해 변경 내용을 추적하기 어려운 데이터베이스 환경을 모니터링하고 SQL 보안 상태를 개선할 수 있습니다.

취약성 평가는 Azure SQL Database 서비스에 기본 제공되는 검사 서비스입니다. 이 서비스는 보안 취약성에 플래그를 지정하는 규칙의 기술 자료를 채택합니다. 잘못된 구성, 과도한 권한, 보호되지 않는 민감한 데이터 등 모범 사례의 편차를 강조합니다.

규칙은 Microsoft의 모범 사례를 기반으로 하고 데이터베이스와 중요한 데이터에 가장 큰 위험을 끼치는 보안 문제에 초점을 맞춥니다. 이러한 규칙은 데이터베이스 레벨 문제 및 서버 레벨 보안 문제(예: 서버 방화벽 설정 및 서버 레벨 권한)에 모두 적용됩니다.

검색 결과에는 각 문제를 해결하는 실행 가능한 단계가 포함되며 해당하는 경우 사용자 지정된 재구성 스크립트가 제공됩니다. 다음 사항에 대해 허용 가능한 기준을 설정하여 사용자 환경에 대한 평가 보고서를 사용자 지정할 수 있습니다.

  • 권한 구성
  • 기능 구성
  • 데이터베이스 설정

취약성 평가 구성

취약성 평가를 구성하려면 다음 단계를 수행합니다.

  1. Azure Portal에서 Azure SQL Database, SQL Managed Instance Database 또는 Azure Synapse의 특정 리소스를 엽니다.

  2. 보안 제목 아래에서 Defender for Cloud를 선택합니다.

  3. 링크에서 구성을 선택하여 전체 서버 또는 관리되는 인스턴스에 대한 Microsoft Defender for SQL 설정 창을 엽니다.

    Opening the Defender for SQL configuration

    참고

    SQL 취약성 평가를 수행하려면 검사를 실행할 수 있는 Microsoft Defender for SQL 계획이 필요합니다. Microsoft Defender for SQL을 사용하도록 설정하는 방법에 대한 자세한 내용은 Microsoft Defender for SQL을 참조하세요.

  4. 서버 설정 페이지에서 Microsoft Defender for SQL 설정을 정의합니다.

    Configuring the SQL vulnerability assessment scans

    1. 먼저 서버의 모든 데이터베이스 또는 관리되는 인스턴스에 대한 검사 결과를 저장할 스토리지 계정을 구성합니다. 스토리지 계정에 대한 자세한 내용은 Azure Storage 계정 정보를 참조하세요.

      방화벽 및 VNet의 뒤로 취약성 평가 검사를 저장하는 방법에 대한 자세한 내용은 방화벽 및 VNet 뒤로 액세스할 수 있는 스토리지 계정에 취약성 평가 검사 결과 저장문서를 참조하세요.

    2. 주간 검사를 자동으로 실행하여 잘못된 보안 구성을 탐지하도록 취약성 평가를 구성하려면 정기적 반복 검사켜기로 설정합니다. 결과는 검사 보고를 보내도록 제공한 메일 주소로 전송됩니다. 또한 관리자 및 구독 소유자에게 메일 알림을 보내도록 설정하여 관리자 및 구독 소유자에게 메일 알림을 보낼 수 있습니다.

  5. SQL 취약성 평가 검사는 주문형으로 실행할 수도 있습니다.

    1. 리소스의 Defender for Cloud 페이지에서 취약성 평가에서 추가 발견 항목 보기를 선택하여 이전 검사의 검사 결과에 액세스합니다.

      Opening the scan results and manual scan options

    2. 주문형 검사를 실행하여 데이터베이스에서 취약성을 검사하려면 도구 모음에서 검사를 선택합니다.

      Select scan to run an on-demand vulnerability assessment scan of your SQL resource

참고

검색 작업은 간단하며 안전합니다. 실행하는 데 몇 초 정도 소요되며 모두 읽기 전용입니다. 데이터베이스에 어떠한 변경도 발생하지 않습니다.

취약성 해결

취약성 검사가 완료되면 보고서가 Azure Portal에 표시됩니다. 보고서는 다음 정보를 제공합니다.

  • 보안 상태 개요
  • 발견된 문제 수
  • 위험의 심각도별 요약
  • 추가 조사 결과 목록

Sampl scan report from the SQL vulnerability assessment scanner

발견된 취약성을 해결하려면 다음과 같이 합니다.

  1. 결과를 검토하여 보고서의 결과 중 사용자 환경에서 실제로 발생하는 보안 문제가 무엇인지 확인합니다.

  2. 실패한 각 결과를 선택하여 그 결과가 끼치는 영향과 보안 검사에 실패한 이유를 파악합니다.

    결과 세부 정보 페이지에는 문제 해결 방법을 설명하는 실행 가능한 수정 정보가 포함되어 있습니다.

    Examining the findings from a vulnerability scan

  3. 평가 결과를 검토할 때 특정 결과를 해당 환경에서 허용 가능한 기준으로 표시할 수 있습니다. 기준은 기본적으로 사용자 맞춤형으로 설정된 결과 보고 방법입니다. 후속 검사에서 기준과 일치하는 결과는 통과로 간주됩니다. 보안 상태 기준을 설정한 후에는, 기준에서 편차가 발생했을 때만 취약성 평가에서 보고합니다. 이렇게 하면 관련 문제에 집중할 수 있습니다.

    Approving a finding as a baseline for future scans

  4. 기준을 변경하는 경우 검사 단추를 사용하여 주문형 검사를 실행하고 사용자 지정된 보고서를 볼 수 있습니다. 기준에 추가한 모든 탐색 결과는 이제 기준이 변경되었기 때문에 통과로 판정됩니다.

    Passed assessments indicating they've passed per custom baseline

이제 취약성 평가 검사를 사용하여 데이터베이스가 항상 높은 수준의 보안을 유지하고 조직의 정책이 충족하게 할 수 있습니다.

고급 기능

평가 보고서 내보내기

검사 결과 내보내기를 선택하여 다운로드 가능한 검사 결과의 Excel 보고서를 만듭니다. 이 보고서에는 평가의 요약 정보를 표시하는 요약 탭이 있습니다. 보고서에는 실패한 검사도 모두 포함됩니다. 결과 탭에는 검사 결과의 모든 사항이 포함됩니다. 결과에는 과거 실행된 모든 검사와 각 검사에 대한 결과 정보가 포함됩니다.

검색 기록 보기

취약성 평가 창에서 검사 기록을 선택하여 이전에 이 데이터베이스에서 실행된 모든 검사 기록을 확인합니다. 자세한 검색 결과를 보려면 목록에서 특정 검색을 선택합니다.

Microsoft Defender for Cloud(미리 보기)의 특정 결과 사용 안 함

조직에서 결과를 수정하지 않고 무시해야 하는 요구 사항이 있으면 필요에 따라 이 결과를 사용하지 않도록 설정할 수 있습니다. 사용하지 않도록 설정된 결과는 보안 점수에 영향을 주거나 원치 않는 노이즈를 생성하지 않습니다.

결과가 사용 안 함 규칙에 정의한 조건과 일치하면 검색 결과 목록에 표시되지 않습니다. 일반적인 시나리오는 다음이 포함됩니다.

  • 심각도가 보통 이하인 결과를 사용하지 않도록 설정
  • 패치 가능하지 않은 검색 결과를 사용하지 않도록 설정
  • 정의된 범위에 관심이 없는 벤치마크의 결과를 사용하지 않도록 설정

중요

특정 결과를 사용하지 않도록 설정하려면 Azure Policy에서 정책을 편집할 수 있는 권한이 있어야 합니다. Azure Policy에서 Azure RBAC 사용 권한에 대해 자세히 알아보세요.

규칙을 만들려면 다음을 수행합니다.

  1. 머신의 SQL Server에 대한 취약성 평가 결과가 재조정되어야 함에 대한 권장 사항 세부 정보 페이지에서, 규칙 사용 안 함을 선택합니다.

  2. 관련 범위를 선택합니다.

  3. 조건을 정의하십시오. 다음 조건 중 하나를 사용할 수 있습니다.

    • ID 찾기
    • 심각도
    • 벤치마크

    Create a disable rule for VA findings on SQL servers on machines

  4. 규칙 적용을 선택합니다. 변경 내용이 적용되는 데 최대 24 시간이 걸릴 수 있습니다.

  5. 규칙을 보거나 재정의하거나 삭제하려면 다음을 수행합니다.

    1. 사용 안 함을 선택합니다.

    2. 범위 목록에서 활성 규칙이 있는 구독은 규칙 적용됨으로 표시됩니다.

      Modify or delete an existing rule

    3. 규칙을 보거나 삭제하려면 줄임표 메뉴("...")를 선택합니다.

프로그래밍 방식으로 취약성 평가 관리

참고

이 문서에서는 Azure와 상호 작용하는 데 권장되는 PowerShell 모듈인 Azure Az PowerShell 모듈을 사용합니다. Az PowerShell 모듈을 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

중요

PowerShell Azure Resource Manager 모듈은 여전히 지원되지만 향후 모든 개발은 Az.Sql 모듈에 집중됩니다. 이러한 cmdlet은 AzureRM.Sql을 참조하세요. Az 모듈 및 AzureRm 모듈의 명령에 대한 인수는 실질적으로 동일합니다.

Azure PowerShell cmdlet을 사용하여 취약성 평가를 프로그래밍 방식으로 관리할 수 있습니다. 지원되는 cmdlet은 다음과 같습니다.

링크된 Cmdlet 이름 설명
Clear-AzSqlDatabaseVulnerabilityAssessmentRuleBaseline 취약성 평가 규칙 기준을 지웁니다.
우선 cmdlet을 사용하여 지우기 전에 기준을 설정합니다.
Clear-AzSqlDatabaseVulnerabilityAssessmentSetting 데이터베이스의 취약성 평가 설정을 지웁니다.
Clear-AzSqlInstanceDatabaseVulnerabilityAssessmentRuleBaseline 관리형 데이터베이스의 취약성 평가 규칙 기준을 지웁니다.
우선 cmdlet을 사용하여 지우기 전에 기준을 설정합니다.
Clear-AzSqlInstanceDatabaseVulnerabilityAssessmentSetting 관리형 데이터베이스의 취약성 평가 설정을 지웁니다.
Clear-AzSqlInstanceVulnerabilityAssessmentSetting 관리형 인스턴스의 취약성 평가 설정을 지웁니다.
Convert-AzSqlDatabaseVulnerabilityAssessmentScan 데이터베이스의 취약성 평가 검사 결과를 Excel 파일로 변환합니다.
Convert-AzSqlInstanceDatabaseVulnerabilityAssessmentScan 관리형 데이터베이스의 취약성 평가 검사 결과를 Excel 파일로 변환합니다.
Get-AzSqlDatabaseVulnerabilityAssessmentRuleBaseline 지정된 규칙에 의한 데이터베이스의 취약성 평가 규칙 기준을 가져옵니다.
Get-AzSqlInstanceDatabaseVulnerabilityAssessmentRuleBaseline 지정된 규칙에 대한 관리형 데이터베이스의 취약성 평가 규칙 기준을 가져옵니다.
Get-AzSqlDatabaseVulnerabilityAssessmentScanRecord 지정된 데이터베이스와 연관된 모든 취약성 평가 검사 기록을 가져옵니다.
Get-AzSqlInstanceDatabaseVulnerabilityAssessmentScanRecord 지정된 데이터베이스와 연관된 모든 취약성 평가 검사 레코드를 가져옵니다.
Get-AzSqlDatabaseVulnerabilityAssessmentSetting 데이터베이스의 취약성 평가 설정을 되돌립니다.
Get-AzSqlInstanceDatabaseVulnerabilityAssessmentSetting 관리형 데이터베이스의 취약성 평가 설정을 되돌립니다.
Set-AzSqlDatabaseVulnerabilityAssessmentRuleBaseline 취약성 평가 규칙 기준을 설정합니다.
Set-AzSqlInstanceDatabaseVulnerabilityAssessmentRuleBaseline 관리형 데이터베이스에 대한 취약성 평가 규칙 기준을 설정합니다.
Start-AzSqlDatabaseVulnerabilityAssessmentScan 데이터에 대한 취약성 평가 검사 시작을 트리거합니다.
Start-AzSqlInstanceDatabaseVulnerabilityAssessmentScan 관리형 데이터베이스에 대한 취약성 평가 검사의 시작을 트리거합니다.
Update-AzSqlDatabaseVulnerabilityAssessmentSetting 데이터베이스의 취약성 평가 설정을 업데이트합니다.
Update-AzSqlInstanceDatabaseVulnerabilityAssessmentSetting 관리형 데이터베이스의 취약성 평가 설정을 업데이트합니다.
Update-AzSqlInstanceVulnerabilityAssessmentSetting 관리형 인스턴스의 취약성 평가 설정을 업데이트합니다.

스크립트 예제를 보려면 Azure SQL 취약성 평가 PowerShell 지원을 참조하세요.

Resource Manager 템플릿 사용

Azure Resource Manager 템플릿을 사용하여 취약성 평가 기준을 구성하려면 Microsoft.Sql/servers/databases/vulnerabilityAssessments/rules/baselines 유형을 사용합니다.

기준을 추가하기 전에 vulnerabilityAssessments을(를) 사용하도록 설정했는지 확인합니다.

다음은 리소스 관리자 템플릿에서 기준 규칙 VA2065를 master 데이터베이스에 정의하고 VA1143을 리소스로 user 데이터베이스에 정의하는 예시입니다.

   "resources": [
      {
         "type": "Microsoft.Sql/servers/databases/vulnerabilityAssessments/rules/baselines",
         "apiVersion": "2018-06-01-preview",
         "name": "[concat(parameters('server_name'),'/', parameters('database_name') , '/default/VA2065/master')]",
         "properties": {
            "baselineResults": [
               {
                  "result": [
                     "FirewallRuleName3",
                     "StartIpAddress",
                     "EndIpAddress"
                  ]
               },
               {
                  "result": [
                     "FirewallRuleName4",
                     "62.92.15.68",
                     "62.92.15.68"
                  ]
               }
            ]
         },
         "type": "Microsoft.Sql/servers/databases/vulnerabilityAssessments/rules/baselines",
         "apiVersion": "2018-06-01-preview",
         "name": "[concat(parameters('server_name'),'/', parameters('database_name'), '/default/VA2130/Default')]",
         "dependsOn": [
            "[resourceId('Microsoft.Sql/servers/vulnerabilityAssessments', parameters('server_name'), 'Default')]"
         ],
         "properties": {
            "baselineResults": [
               {
                  "result": [
                     "dbo"
                  ]
               }
            ]
         }
      }
   ]

master 데이터베이스 및 user 데이터베이스의 경우 리소스 이름은 다음과 같이 다르게 정의됩니다.

  • Master database - "name": "[concat(parameters('server_name'),'/', parameters('database_name') , '/default/VA2065/master')]",
  • User database - "name": "[concat(parameters('server_name'),'/', parameters('database_name') , '/default/VA2065/default')]",

부울 형식을 true/false로 처리하려면 “1”/”0” 같은 이진 입력을 사용하여 기준 결과를 설정합니다.

   {
      "type": "Microsoft.Sql/servers/databases/vulnerabilityAssessments/rules/baselines",
      "apiVersion": "2018-06-01-preview",
      "name": "[concat(parameters('server_name'),'/', parameters('database_name'), '/default/VA1143/Default')]",

      "dependsOn": [
         "[resourceId('Microsoft.Sql/servers/vulnerabilityAssessments', parameters('server_name'), 'Default')]"
      ],

      "properties": {
         "baselineResults": [
            {
               "result": [
                  "1"
               ]
            }
         ]
      }

   }

사용 권한

Microsoft Defender for Cloud 권장 사항 SQL 데이터베이스는 취약성 발견 항목이 해결되어야 함에서 취약성 평가 결과를 보려면 다음 권한 중 하나가 필요합니다.

  • 보안 관리자
  • 보안 판독기

취약성 평가 설정을 변경하려면 다음 권한이 필요합니다.

  • SQL 보안 관리자
  • Storage Blob 데이터 읽기 권한자
  • 스토리지 계정에 대한 소유자 역할

검사 결과에 대한 이메일 알림의 링크를 열거나 리소스 수준에서 검사 결과를 보려면 다음 권한이 필요합니다.

  • SQL 보안 관리자
  • Storage Blob 데이터 읽기 권한자

데이터 상주

SQL 취약성 평가는 SQL 취약성 평가에 대한 Defender for Cloud 권장 사항에서 공개적으로 사용 가능한 쿼리를 사용하여 SQL Server를 쿼리하고 쿼리 결과를 저장합니다. 데이터는 구성된 사용자 소유 스토리지 계정에 저장됩니다.

SQL 취약성 평가를 사용하면 스토리지 계정의 위치를 선택하여 데이터가 저장될 지역을 지정할 수 있습니다. 사용자는 스토리지 계정의 보안 및 데이터 복원력에 대한 책임이 있습니다.

다음 단계