SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Servre on Azure VM で Azure で提供されている機能を使用した基本的なセキュリティ保護

leave a comment

タイトルの通りですが、SQL Server を Azure VM で動作させる場合のセキュリティ保護についてまとめておきたいと思い投稿を書きました。

自分が確認しておきたかった内容をまとめているものとなり、操作をしていて標準で気づくものは省いていますので、OS 標準の機能や、SQL Server IaaS Agent 拡張機能については記載していません。

SQL Server on Azure VM で Azure の機能を使用した基本的なセキュリティ保護

Azure では VM / SQL Server 向けにセキュリティ保護機能が提供されており、次のような機能を活用することができます。

標準で展開された環境に対して、これらの機能を追加で導入することで、セキュリティを高めることができます。

 

Microsoft Antimalware 拡張機能

Windows Server 2016 以降の Windows Server は OS 標準でウイルス対策ソフトが含まれています。

標準的なウイルス対策であれば、OS に含まれている機能で対応することができますが、Azure VM で動作している環境については、無償の追加機能として Microsoft Antimalware 拡張機能 を導入することができます。(拡張機能のインストールで Microsoft Antimalware で検索すると追加できます)

image

Windows Server 2016 以降は OS 標準でウイルス対策機能が含まれていますので、機能が追加されるわけではないのですが、Microsoft Defender ウイルス対策の設定をこの機能を使用して変更することができるようになります。

image

Microsoft Defender ウイルス対策の組織的な管理方法としては ビジネスでMicrosoft Defenderウイルス対策を管理する で記載されているような方法をとることができます。

Azure VM の場合はこれらの方法に追加して、拡張機能を使用したウイルス対策の設定変更を行うことができます。

拡張機能のインストール時や Set-AzVMExtension コマンドレットを使用することで設定を行うことができますので、環境構築の流れの中で OS にログインすることなく設定を行うことができるかと。(コマンドレットで設定するとエラーが出力されていたのですが、実際には設定は反映されていました(深くは調べていません…。))

Windows サーバー標準の機能であれば 自動除外 により、追加したロールに応じた除外設定が自動的に投入される機能がありますが、SQL Server に関しては自動除外はなく、IaaS Agent 拡張機能も自動で設定はしてくれませんので、、SQL Serverを実行しているコンピューターで実行するウイルス対策ソフトウェアを選択する方法 に記載されているような推奨の除外設定を明示的に設定する必要があります。

 

ドキュメントに記載されているような除外設定については、Antimalware 拡張機能を通して反映することができます。

$json = @"
{
  "AntimalwareEnabled": true,
  "RealtimeProtectionEnabled": "true",
  "ScheduledScanSettings": {
    "isEnabled": "False",
    "day": "7",
    "time": "120",
    "scanType": "Quick"
  },
  "Exclusions": {
    "Extensions": "mdf;ldf;ndf;bak;trn;trc;xel;mdmp",
    "Paths": "F:\\data;F:\\Log",
    "Processes": "sqlservr.exe;sqldumper.exe"
  }
}
"@

Set-AzVMExtension -ResourceGroupName "Group Name"-VMName "VM Name" `
-Name "IaaSAntimalware" -Publisher "Microsoft.Azure.Security" -ExtensionType "IaaSAntimalware" `
-TypeHandlerVersion "1.3" -SettingString $json

 

設定は OS の GUI 等で操作した場合と同様でレジストリ (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender) に設定されますので、設定が反映されたかどうかはこのレジストリ配下のキーを見るとよいかと。

Antimalware 拡張機能を追加しなくても、ウイルス検知は実行されますが、Azure の IaC に含めやすい形で、ウイルス対策の設定変更を実施することができるようになるのは便利かもしれませんね。

 

Microsoft Defender for Cloud

Microsoft Defender for Cloud を使用して、SQL Server on Azure VM のセキュリティ保護をすることもできます。

Defender for Cloud ではいくつかの Defender プランが提供されており、SQL Server on Azure VM で最初に活用をする検討する機能としては、次の 3 種類となるのではないでしょうか。

 

基本的な CSPM

Microsoft Defender for CSPM (Cloud Security Posture Management: クラウドセキュリティ管理体制) には二種類の CSPM が提供されています。

  • 基本的な CSPM (Foundational CSPM)
  • Defender CSPM

基本的な CSPM は無料で提供されるものとなり、Defender CSPM は有料のプランとなります。

機能の差については、クラウド セキュリティ態勢管理 (CSPM) から確認をすることができますが、基本的は CSPM としては次の 3 つの観点の機能を使用することができます。

  • クラウドのセキュリティ構成の継続的な評価
  • 設定ミスや弱点を修正するためのセキュリティ勧告
  • 現在のセキュリティ状況をまとめたセキュアスコア

サブスクリプションの初期状態で有効になっているようですが、設定状況については Azure ポータルで「Microsoft Defender for Cloud → 環境設定 → 対象サブスクリプション → Defender プラン」から確認することができます。

image

Azure VM ではなく、サブスクリプション全体よりな話ではありますが、基本的な CSPM の機能を活用することができます。

 

Microsoft Defender for Servers

Microsoft Defender for Servers を使用することで、仮想マシンのセキュリティ保護を行うことができます。

Defender for Servers プランを選択する に記載されていますが、プラン 1 / プラン 2 の 2 種類のプランが提供されており、プランによって価格 / 機能が異なります。

 

Defender for Servers の有効化の方法

Defender for Servers の有効化については次の 2 種類の方法があります。

  • Defender for Cloud → 環境設定 → 対象サブスクリプション → Defender プラン
  • Defender for Cloud → 環境設定 → 対象サブスクリプション → Log Analytics ワークスペース → Defender プラン

以前、Microsoft Defender for Cloud のサブスクリプションレベルと Log Analytics ワークスペースレベルの違い という投稿で書いたのですが、Microsoft Defender for SQL の有効化については、サブスクリプションレベルと Log Analytics ワークスペースレベルの 2 種類で実施することができます。

Microsoft Defender for Cloud は特定のリソースだけ有効にするということはできず、サブスクリプション内の全対象リソース、または Log Analytics ワークスペースに接続しているリソースがという粒度で有効化することになります。

Log Analytics ワークスペース単位で有効にすることで対象となるサーバーが減り、コストを抑えることができるのですが、Log Analytics ワークスペースで有効にした場合はプラン 2 固定となり、一部の機能を使うことができず、「プラン 2 なのになぜこの機能を使用することができないのか?」「機能が思ったように動作しない」という事態に陥る可能性が出てきます…。

後述の AMA でもパブリックプレビューで Microsoft Defender for Cloud との連携ができるということになっているのですが、私が試した場合は、Log Analytics ワークスペールレベルで Defender for Cloud を有効にした場合は、Azure Monitor エージェント (AMA) ではなく、廃止予定の Log Analytics エージェント (MMA) でないと想定した動作になりませんでした。

 

エージェントの自動プロビジョニング

Microsoft Defender for Servers はセキュリティの脆弱性と脅威監視のために、Log Analytics ワークスペースに情報を収集する必要があります。

Log Analytics ワークスペースに情報を収集するためにはエージェント (Log Analytics エージェント (Microsoft Monitoring Agent: MMA) / Azure Monitor Agent (AMA) が必要となります。(MMA はリタイアとなるため、AMA 推奨)

当初は、MMA でないと Microsoft Defender for Cloud はサポートしていなかったのですが、レガシ エージェントとの比較 に記載されているように、Public Preview として、サポートがはじまっていますので、今後は AMA も活用できるようになるかと。

これらのエージェントの導入については、各サーバーの展開の都度、エージェント導入を実行する必要が無いように Microsoft Defender for Server ではエージェントの自動プロビジョニングという機能を使用し、エージェントの導入とデフォルトで接続する Log Analytics ワークスペースを制御することができます。

VM にエージェントを明示的に導入したことがないにもかかわらずMMA / AMA が導入されていた場合には、この自動プロビジョニングの機能が影響している可能性があります。

この自動プロビジョニングの機能についてはサブスクリプションレベルで有効にした場合にしか設定できないようなので、サブスクリプションレベル / ワークスペースレベルではエージェントの導入方法の違いも出てくるようです。

 

動作確認

Microsoft Defender for Servers のプラン 2 には、 OS レベルの脅威検出 (エージェントベース) が含まれていますので、これを使用して想定した動作になるのかを確認するとよさそうでした。

VM 内に EICARテストファイル を作成すると、OS 標準の Microsoft Defender ウイルス対策で検知が行われます。

Microsoft Defender for Servers の設定が想定通りできていれば、「Microsoft Defender for Cloud → セキュリティ警告」で「Antimalware Action」としてアラートが検知されます。

image

また Microsoft Defender for Cloud の環境設定からサブスクリプション / Log Analytics ワークスペースを開き、「電子メールの通知」の設定を行うことでアラートメールの通知を行うこともできますので、メールで確認をすることもできます。(アラートメールは時間内の通知数があるため、テストで何回か EICAR テストファイルを作成するのであればポータルから確認したほうが良いかと)

メール通知の場合は次のようなメールが届きます。

image

 

Microsoft Defender for SQL Server

Microosft Defender for Servers は OS / サーバー部分が主な対象となっていますが、Microsoft Defender for SQL Server は SQL Server に特化したセキュリティ保護となり、こちらも有償の機能となります。

データベースへの不正なアクティビティが対象となり次のような操作を検知することができます。

  • 疑わしいデータベース アクティビティ
  • 潜在的な脆弱性
  • SQL インジェクション攻撃および異常なデータベース アクセスやクエリのパターン

Azure Arc 向けのドキュメントとなりますが、実施できる内容は近いので 演習 – セキュリティと Microsoft Defender for Cloud を管理する も参考となります。

こちらも有効方法は Microsoft Defender for Servers と同様です。

  • サブスクリプションレベル / Log Analytics ワークスペースレベルで有効化することができる
  • Log Analytics ワークスペースレベルで有効化した場合、Log Analtyics エージェント (MMA) でないと動作しない可能性がある

 

動作確認

Microsoft Defender for SQL Server が利用できる環境になっているかについては、SSMS でサーバーに接続し、管理の拡張イベントから「SQLAdvancedThreatProtectionTraffic」のイベントが追加されているかどうかで確認ができます。

image

この拡張イベントが追加されていない場合は、Microsoft Defender for SQL Server による不正なアクティビティの検知はできません。Azure Monitor エージェント (AMA) を導入していて、イベントが追加されていないようであれば、Log Analytics エージェント (MMA) を導入することで、イベントが追加されるかと思います。

Microsoft Defender for SQL Server も Servers と同様に異常な動作についてはアラートが検知されるのですが、テストのための明示的なアラートの発生については、演習 – セキュリティと Microsoft Defender for Cloud を管理する が参考になります。

このドキュメントの中では意図的に SQL インジェクションのパターンとなるクエリを実行しており、次の方法によりアラートを発生させています。

  • SSMS 空の接続で Application Name を明示的に指定
  • 「SELECT * FROM sys.databases WHERE database_id like ” or 1 = 1 –‘ and family = ‘test1’;」を実行することでコメントを使用した不正なパターンのクエリを実行

これを実行することで、セキュリティ警告として SQL インジェクションを検知し、

image

メールによるアラート通知を受けることができます。

image

 

まとめ

SQL Server on Azure VM で Azure の機能を使用したセキュリティ保護として、

といった機能については、導入の手間はあまりかからずに環境のセキュリティを高めることができるのではないでしょうか。

一部の機能は無償で使用することもできるので、活用できる場は多いかもしれませんね。

「どの情報を見ればよいか」「どこで設定するのか」「どうやって実際に動作することを確認するのか」を忘れてしまうことがあるので、使用する機会が出てきたときには本投稿を見直して思い出そうと思います。

Share

Written by Masayuki.Ozawa

4月 5th, 2023 at 5:53 pm

Posted in 未分類

Tagged with ,

Leave a Reply