Azure SQL データベースの脆弱性の結果を管理する

Microsoft Defender for Cloud では、Azure SQL データベースの脆弱性評価が提供されます。 脆弱性評価では、データベースでソフトウェアの脆弱性がスキャンされ、結果の一覧が提供されます。 この結果を使用して、ソフトウェアの脆弱性を修復し、結果を無効にすることができます。

前提条件

続行する前に、高速構成とクラシック構成のどちらを使用しているかを確認してください。

使用している構成を確認するには:

  1. Azure portal で、Azure SQL Database、SQL Managed Instance データベース、または Azure Synapse の特定のリソースにアクセスします。
  2. [セキュリティ] という見出しの下で [Defender for Cloud] を選択します。
  3. [有効化の状態][構成] を選択し、サーバー全体またはマネージド インスタンスの Microsoft Defender for SQL の設定ウィンドウを開きます。

脆弱性の設定にストレージ アカウントを構成するオプションが表示されている場合は、クラシック構成を使用しています。 そうでない場合は、高速構成を使用しています。

高速構成

スキャン履歴の表示

[脆弱性評価] ペインの [スキャンの履歴] を選択すると、このデータベースで以前に実行されたすべてのスキャンの履歴が表示されます。

高速構成では、以前のスキャンと同じ場合、スキャン結果は格納されません。 スキャン履歴に表示されるスキャン時間は、スキャン結果が変更された最後のスキャンの時間です。

Microsoft Defender for Cloud で検出された特定の項目を無効にする (プレビュー)

組織のニーズとして、結果を修復するのではなく無視する必要がある場合は、結果を無効にできます。 無効化された検出結果は、セキュリティ スコアに影響を与えたり、不要なノイズを生成したりすることはありません。 無効な結果は、スキャン結果の [該当なし] セクションで確認できます。

無効化のルールで定義した条件と一致する検出結果は、検出結果の一覧には表示されません。 一般的なシナリオは次のとおりです。

  • 重大度が中または低の結果を無効にする
  • パッチを適用できない検出結果を無効にする
  • 定義されたスコープの対象にならないベンチマークからの結果を無効にする

重要

特定の検出結果を無効にするには、Azure Policy でポリシーを編集するためのアクセス許可が必要です。 詳細については、「Azure Policy における RBAC アクセス許可」を参照してください。

ルールを作成するには:

  1. [マシン上の SQL サーバーの脆弱性評価の結果を修復する必要がある] という推奨事項の詳細ページで、 [ルールを無効にする] を選択します。

  2. 関連するスコープを選択します。

  3. 条件を定義します。 次のいずれかの条件を使用できます。

    • ID の検索
    • 重大度
    • ベンチマーク
  4. マシン上の SQL サーバーでの VA の結果に対して無効化ルールを作成する

  5. [ルールの適用] を選択します。 変更が有効になるまでに最大 24 時間かかることがあります。

  6. ルールを表示、無効化、または削除するには、次の手順に従います。

    1. [ルールを無効にする] を選択します。
    2. アクティブなルールが適用されているサブスクリプションは、スコープの一覧に [Rule applied](ルール適用済み) と表示されます。
    3. ルールを表示または削除するには、省略記号メニュー ("...") を選択します。

Azure Logic Apps を使用してメール通知を構成する

データベースの脆弱性評価状態の定期的な更新を受け取るために、カスタマイズ可能な Azure Logic Apps テンプレートを使用できます。

テンプレートを使用すると、次のことができるようになります。

  • メール レポートのタイミングを選択する。
  • 無効なルールを含む脆弱性評価の状態を一貫して表示する。
  • Azure SQL Servers と SQL VM のレポートを送信する。
  • 組織の標準に合わせてレポート構造と外観をカスタマイズする。

プログラムによる脆弱性評価の管理

高速構成は、次の機能を備えた最新の REST API バージョンでサポートされています。

説明 Scope API
ベースライン一括操作 システム データベース SQL 脆弱性評価のベースライン
SQL 脆弱性評価のベースライン
ベースライン一括操作 ユーザー データベース データベース SQL 脆弱性評価のベースライン
単一ルールのベースライン操作 ユーザー データベース データベース SQL 脆弱性評価ルールのベースライン
単一ルールのベースライン操作 システム データベース データベース SQL 脆弱性評価ルールのベースライン
データベース SQL 脆弱性評価ルールのベースライン
単一スキャンの結果 ユーザー データベース データベース SQL 脆弱性評価のスキャン結果
単一スキャンの結果 システム データベース SQL 脆弱性評価のスキャン結果
スキャンの詳細 (概要) ユーザー データベース データベース SQL 脆弱性評価のスキャン
スキャンの詳細 (概要) システム データベース SQL 脆弱性評価のスキャン
手動スキャンを実行する ユーザー データベース データベース SQL 脆弱性評価のスキャンの実行
手動スキャンを実行する システム データベース SQL 脆弱性評価のスキャンの実行
VA 設定 (GET は高速構成でのみサポートされます) ユーザー データベース データベース SQL 脆弱性評価の設定
VA 設定操作 サーバー SQL 脆弱性評価の設定
SQL 脆弱性評価

Azure リソース マネージャーのテンプレートを作成する

次の 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" ]
            ]
        }
    }
    
  • 最新のスキャン結果に基づいてマスター データベースにバッチ ベースラインを設定します。

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

PowerShell の使用

PowerShell コマンドレットでは高速構成はサポートされていませんが、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 を調整する必要が生じる場合があります。

エラー

“脆弱性評価は、このサーバーまたは互換性のないバージョンの基になるデータベースのいずれかで有効になっています”

考えられる原因:

  • サーバー ポリシー エラーのため、高速構成への切り替えに失敗しました。

    解決策: 高速構成を有効にするために、もう一度やり直してください。 問題が解決しない場合は、Azure SQL リソースで Microsoft Defender for SQL を無効にして、[保存] を選択し、Microsoft Defender for SQL をもう一度有効にして、[保存] を選択します。

  • データベース ポリシー エラーのため、高速構成への切り替えに失敗しました。 データベース ポリシーは、Defender for SQL 脆弱性評価の Azure portal には表示されないため、高速構成に切り替える検証段階で確認します。

    解決策: 関連するサーバーのすべてのデータベース ポリシーを無効にしてから、高速構成に切り替え直してください。

  • サポートが必要な場合は、提供された PowerShell スクリプトを使用することを検討してください。

クラシック構成

スキャン履歴の表示

[脆弱性評価] ペインの [スキャンの履歴] を選択すると、このデータベースで以前に実行されたすべてのスキャンの履歴が表示されます。

Microsoft Defender for Cloud で検出された特定の項目を無効にする (プレビュー)

組織のニーズとして、検出結果を修復するのではなく無視する必要がある場合は、必要に応じて検出結果を無効にできます。 無効化された検出結果は、セキュリティ スコアに影響を与えたり、不要なノイズを生成したりすることはありません。

無効化のルールで定義した条件と一致する検出結果は、検出結果の一覧には表示されません。 一般的なシナリオは次のとおりです。

  • 重大度が中または低の結果を無効にする
  • パッチを適用できない検出結果を無効にする
  • 定義されたスコープの対象にならないベンチマークからの結果を無効にする

重要

  • 特定の検出結果を無効にするには、Azure Policy でポリシーを編集するためのアクセス許可が必要です。 詳細については、「Azure Policy における RBAC アクセス許可」を参照してください。
  • 無効にした結果も、週単位の SQL 脆弱性評価メール レポートには含まれます。
  • 無効なルールは、スキャン結果の "該当なし" セクションに表示されます。

ルールを作成するには、以下のようにします。

  1. [マシン上の SQL サーバーの脆弱性評価の結果を修復する必要がある] という推奨事項の詳細ページで、 [ルールを無効にする] を選択します。

  2. 関連するスコープを選択します。

  3. 条件を定義します。 次のいずれかの条件を使用できます。

    • ID の検索
    • 重大度
    • ベンチマーク

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

  4. [ルールの適用] を選択します。 変更が有効になるまでに最大 24 時間かかることがあります。

  5. ルールを表示、無効化、または削除するには、次の手順に従います。

    1. [ルールを無効にする] を選択します。

    2. アクティブなルールが適用されているサブスクリプションは、スコープの一覧に [Rule applied](ルール適用済み) と表示されます。

      Screenshot of modify or delete an existing rule.

    3. ルールを表示または削除するには、省略記号メニュー ("...") を選択します。

プログラムによる脆弱性評価の管理

Azure PowerShell

注意

この記事では、Azure と対話するために推奨される PowerShell モジュールである Azure Az PowerShell モジュールを使用します。 Az PowerShell モジュールの使用を開始するには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

重要

PowerShell Azure Resource Manager モジュールは引き続きサポートされますが、今後の開発はすべて Az.Sql モジュールを対象に行われます。 これらのコマンドレットについては、「AzureRM.Sql」を参照してください。 Az モジュールと AzureRm モジュールのコマンドの引数は実質的に同じです。

Azure PowerShell コマンドレットを使用して、脆弱性評価をプログラムで管理できます。 サポートされているコマンドレットは次のとおりです。

コマンドレット名 (リンク) 説明
Clear-AzSqlDatabaseVulnerabilityAssessmentRuleBaseline 脆弱性評価規則のベースラインをクリアします。
このコマンドレットを使用してクリアする前に、まずベースラインを設定します。
Clear-AzSqlDatabaseVulnerabilityAssessmentSetting データベースの脆弱性評価の設定をクリアします。
Clear-AzSqlInstanceDatabaseVulnerabilityAssessmentRuleBaseline マネージド データベースの脆弱性評価規則のベースラインをクリアします。
このコマンドレットを使用してクリアする前に、まずベースラインを設定します。
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

重要

次の 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 脆弱性評価のスキャンの概要を表示します。

Resource Manager テンプレート

Azure Resource Manager テンプレートを使用して脆弱性評価基準を構成するには、Microsoft.Sql/servers/databases/vulnerabilityAssessments/rules/baselines の種類を使用します。

基準を追加する前に、vulnerabilityAssessments が有効になっていることを確認します。

Resource Manager テンプレートのリソースとして、master データベースに基準規則 VA2065 を定義し、user データベースに VA1143 を定義する例を以下に示します。

   "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 データベースでは、リソース名は異なる方法で定義されます。

  • マスター データベース - "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"
               ]
            }
         ]
      }

   }