다음을 통해 공유


Azure SQL 데이터베이스에서 발견한 취약성 관리

클라우드용 Microsoft Defender는 Azure SQL Database에 대한 취약성 평가를 제공합니다. 취약성 평가는 데이터베이스에서 소프트웨어 취약성을 검사하고 결과 목록을 제공합니다. 결과를 사용하여 소프트웨어 취약성을 수정하고 결과를 사용하지 않도록 설정할 수 있습니다.

필수 조건

계속하기 전에 빠른 구성 또는 클래식 구성을 사용하고 있는지 여부를 알고 있어야 합니다.

사용 중인 구성을 확인하려면:

  1. Azure Portal에서 Azure SQL Database, SQL Managed Instance Database 또는 Azure Synapse의 특정 리소스를 엽니다.
  2. 보안 제목 아래에서 Defender for Cloud를 선택합니다.
  3. 사용 상태에서 구성을 선택하여 전체 서버 또는 관리되는 인스턴스에 대한 Microsoft Defender for SQL 설정 창을 엽니다.

취약성 설정에 스토리지 계정을 구성하는 옵션이 표시되면 클래식 구성을 사용하고 있는 것입니다. 그렇지 않은 경우 빠른 구성을 사용하고 있습니다.

빠른 구성

검색 기록 보기

취약성 평가 창에서 검사 기록을 선택하여 이전에 이 데이터베이스에서 실행된 모든 검사 기록을 확인합니다.

빠른 구성은 이전 검사와 동일한 경우 검색 결과를 저장하지 않습니다. 검사 기록에 표시된 검사 시간은 검사 결과가 변경된 마지막 검사 시간입니다.

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

결과를 수정하지 않고 무시해야 하는 조직의 요구 사항이 있는 경우 필요에 따라 이 결과를 사용하지 않도록 설정할 수 있습니다. 사용하지 않도록 설정된 결과는 보안 점수에 영향을 주거나 원치 않는 노이즈를 생성하지 않습니다. 검색 결과의 “해당 없음” 섹션에서 사용하지 않도록 설정된 검색 결과를 볼 수 있습니다.

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

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

중요

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

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

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

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

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

    • ID 찾기
    • 심각도
    • 벤치마크
  4. 머신의 SQL 서버에서 VA 검색에 대한 사용 안 함 규칙을 만들기

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

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

    1. 사용 안 함을 선택합니다.
    2. 범위 목록에서 활성 규칙이 있는 구독은 규칙 적용됨으로 표시됩니다.
    3. 규칙을 보거나 삭제하려면 줄임표 메뉴("...")를 선택합니다.

Azure Logic Apps를 사용하여 이메일 알림 구성

데이터베이스에 대한 취약성 평가 상태의 정기적인 업데이트를 받으려면 사용자 지정 가능한 Azure Logic Apps 템플릿을 사용할 수 있습니다.

템플릿을 사용하면 다음을 수행할 수 있습니다.

  • 메일 보고서의 타이밍을 선택합니다.
  • 사용하지 않도록 설정된 규칙을 포함하는 취약성 평가 상태를 일관되게 볼 수 있습니다.
  • Azure SQL Server 및 SQL VM에 대한 보고서를 보냅니다.
  • 조직 표준에 맞게 보고서 구조 및 모양과 느낌을 사용자 지정합니다.

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

빠른 구성은 다음 기능을 포함한 최신 REST API 버전에서 지원됩니다.

설명 범위 API
기준 대량 작업 시스템 데이터베이스 Sql 취약성 평가 기준
Sql 취약성 평가 기준
기준 대량 작업 사용자 데이터베이스 데이터베이스 Sql 취약성 평가 기준
단일 규칙 기준 작업 사용자 데이터베이스 데이터베이스 Sql 취약성 평가 규칙 기준
단일 규칙 기준 작업 시스템 데이터베이스 Sql 취약성 평가 규칙 기준
Sql 취약성 평가 규칙 기준
단일 검사 결과 사용자 데이터베이스 데이터베이스 Sql 취약성 평가 검사 결과
단일 검사 결과 시스템 데이터베이스 Sql 취약성 평가 검사 결과
검사 세부 정보(요약) 사용자 데이터베이스 데이터베이스 Sql 취약성 평가 검사
검사 세부 정보(요약) 시스템 데이터베이스 Sql 취약성 평가 검사
수동 검사 실행 사용자 데이터베이스 데이터베이스 Sql 취약성 평가 실행 검사
수동 검사 실행 시스템 데이터베이스 Sql 취약성 평가 실행 검사
VA 설정(GET은 빠른 구성에만 지원됨) 사용자 데이터베이스 데이터베이스 Sql 취약성 평가 설정
VA 설정 작업 서버 Sql 취약성 평가 설정
Sql 취약성 평가

Azure Resource Manager 템플릿 사용

다음 ARM 템플릿을 사용하여 SQL 취약성 평가를 위한 빠른 구성으로 새 Azure SQL 논리 서버를 만듭니다.

Azure Resource Manager 템플릿을 사용하여 취약성 평가 기준을 구성하려면 Microsoft.Sql/servers/databases/sqlVulnerabilityAssessments/baselines 유형을 사용합니다. 기준을 추가하기 전에 vulnerabilityAssessments가 사용하도록 설정되어 있는지 확인합니다.

ARM 템플릿을 사용하여 기준을 설정하는 방법에 대한 몇 가지 예는 다음과 같습니다.

  • 최신 검사 결과를 기반으로 일괄 처리 기준 설정:

    {
        "type": "Microsoft.Sql/servers/databases/sqlVulnerabilityAssessments/baselines",
        "apiVersion": "2022-02-01-preview",
        "name": "[concat(parameters('serverName'),'/', parameters('databaseName') , '/default/default')]",
        "properties": {
            "latestScan": true
            }
    }
    
  • 특정 결과에 따라 일괄 처리 기준 설정:

    {
        "type": "Microsoft.Sql/servers/databases/sqlVulnerabilityAssessments/baselines",
        "apiVersion": "2022-02-01-preview",
        "name": "[concat(parameters('serverName'),'/', parameters('databaseName') , '/default/default')]",
        "properties": {
            "latestScan": false,
            "results": {
            "VA2065": [
                [
                     "FirewallRuleName3",
                         "62.92.15.67",
                         "62.92.15.67"
                ],
                [
                     "FirewallRuleName4",
                         "62.92.15.68",
                         "62.92.15.68"
                ]
            ],
            "VA2130": [
                [
                     "dbo"
                ]
            ]
         }
      }
    }
    
  • 특정 규칙에 대한 기준 설정:

    {
        "type": "Microsoft.Sql/servers/databases/sqlVulnerabilityAssessments/baselines/rules",
        "apiVersion": "2022-02-01-preview",
        "name": "[concat(parameters('serverName'),'/', parameters('databaseName') , '/default/default/VA1143')]",
        "properties": {
        "latestScan": false,
        "results": [
            [ "True" ]
            ]
        }
    }
    
  • 최신 검사 결과에 따라 master 데이터베이스에 일괄 처리 기준을 설정합니다.

    {
        "type": "Microsoft.Sql/servers/databases/sqlVulnerabilityAssessments/baselines",
        "apiVersion": "2022-02-01-preview",
        "name": "[concat(parameters('serverName'),'/master/default/default')]",
        "properties": {
            "latestScan": true
            }
    }
    

PowerShell 사용

빠른 구성은 PowerShell cmdlet에서 지원되지 않지만 PowerShell을 사용하여 최신 취약성 평가 기능을 호출하기 위해 REST API를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

Azure CLI 사용

Azure CLI를 사용하여 빠른 구성을 호출합니다.

문제 해결

클래식 구성으로 되돌리기

Azure SQL 데이터베이스를 빠른 취약성 평가 구성에서 클래식 구성으로 변경하는 방법:

  1. Azure Portal에서 Defender for Azure SQL 플랜을 사용하지 않도록 설정합니다.

  2. PowerShell로 클래식 환경을 사용하여 다시 구성합니다.

    Update-AzSqlServerAdvancedThreatProtectionSetting `
                -ResourceGroupName "demo-rg" `
                -ServerName "dbsrv1" `
                -Enable 1
    Update-AzSqlServerVulnerabilityAssessmentSetting `
                -ResourceGroupName "demo-rg" `
                -ServerName "dbsrv1" `
                -StorageAccountName "mystorage" `
                -RecurringScansInterval Weekly `
                -ScanResultsContainerName "vulnerability-assessment"
    

    방화벽 및 VNet 뒤에서 액세스할 수 있는 스토리지 계정에서 저장소 취약성 평가 검사 결과에 따라 Update-AzSqlServerVulnerabilityAssessmentSetting을 조정해야 할 수 있습니다.

Errors

“이 서버 또는 호환되지 않는 버전이 있는 기본 데이터베이스 중 하나에서 취약성 평가를 사용하도록 설정되어 있습니다.”

가능한 원인:

  • 서버 정책 오류로 인해 빠른 구성으로 전환하지 못했습니다.

    해결 방법: 빠른 구성을 다시 사용하도록 설정합니다. 문제가 지속되면 Azure SQL 리소스에서 Microsoft Defender for SQL을 사용하지 않도록 설정하고, 저장을 선택하고, Microsoft Defender for SQL을 다시 사용하도록 설정하고, 저장을 선택합니다.

  • 데이터베이스 정책 오류로 인해 빠른 구성으로 전환하지 못했습니다. 데이터베이스 정책은 Defender for SQL 취약성 평가가 Azure Portal에 표시되지 않도록 하는 것이므로 빠른 구성으로 전환하는 유효성 검사 단계에서 이를 확인합니다.

    해결 방법: 관련 서버에 대한 모든 데이터베이스 정책을 사용하지 않도록 설정한 다음 구성을 다시 표시하도록 전환합니다.

  • 지원을 위해 제공된 PowerShell 스크립트를 사용하는 것이 좋습니다.

클래식 구성

검색 기록 보기

취약성 평가 창에서 검사 기록을 선택하여 이전에 이 데이터베이스에서 실행된 모든 검사 기록을 확인합니다.

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

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

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

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

중요

  • 특정 결과를 사용하지 않도록 설정하려면 Azure Policy에서 정책을 편집할 수 있는 권한이 있어야 합니다. Azure Policy에서 Azure RBAC 사용 권한에 대해 자세히 알아보세요.
  • 사용하지 않도록 설정된 검색 결과도 주간 SQL 취약성 평가 메일 보고서에 포함됩니다.
  • 사용하지 않도록 설정된 규칙은 검사 결과의 “해당 없음” 섹션에 표시됩니다.

규칙을 만들려면:

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

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

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

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

    Screenshot of create a disable rule for VA findings on SQL servers on machines.

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

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

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

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

      Screenshot of modify or delete an existing rule.

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

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

Azure PowerShell

참고 항목

이 문서에서는 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 지원을 참조하세요.

Azure CLI

Important

다음 Azure CLI 명령은 VM 또는 온-프레미스 컴퓨터에서 호스트되는 SQL 데이터베이스용입니다. Azure SQL Database에 대한 취약성 평가는 Azure Portal 또는 PowerShell 섹션을 참조하세요.

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

링크로 명령 이름 설명
az security va sql baseline delete SQL 취약성 평가 규칙 기준을 삭제합니다.
az security va sql baseline list 모든 규칙에 대한 SQL 취약성 평가 기준을 봅니다.
az security va sql baseline set SQL 취약성 평가 기준을 설정합니다. 현재 기준선을 바꿉니다.
az security va sql baseline show SQL 취약성 평가 규칙 기준을 봅니다.
az security va sql baseline update SQL 취약성 평가 규칙 기준을 업데이트합니다. 현재 규칙 기준선을 바꿉니다.
az security va sql results list 모든 SQL 취약성 평가 검사 결과를 봅니다.
az security va sql results show SQL 취약성 평가 검사 결과를 봅니다.
az security va sql scans list 모든 SQL 취약성 평가 검사 요약을 나열합니다.
az security va sql scans show SQL 취약성 평가 검사 요약을 봅니다.

리소스 관리자 템플릿

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

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

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

   "resources": [
      {
         "type": "Microsoft.Sql/servers/databases/vulnerabilityAapiVersion": "2018-06-01",
         "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/vulnerabilityAapiVersion": "2018-06-01",
         "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 데이터베이스 - "name": "[concat(parameters('server_name'),'/', parameters('database_name'), '/default/VA2065/master')]",
  • 사용자 데이터베이스 - "name": "[concat(parameters('server_name'),'/', parameters('database_name'), '/default/VA2065/default')]",

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

   {
      "type": "Microsoft.Sql/servers/databases/vulnerabilityapiVersion": "2018-06-01",
      "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"
               ]
            }
         ]
      }

   }