SE の雑記

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

Azure Arc enabled SQL Server による Azure 外の SQL Server の Azure への拡張

without comments

Azure Arc enabled SQL Server (Azure Arc 対応 SQL Server) は、オンプレミスの SQL Server や Azure 外で動作している SQL Server の管理を Azure に拡張することができます。

構成については、Azure Arc 対応 SQL Server (プレビュー) で解説が行われており、全体的なとしてはこのドキュメント内で解説されている下図のアーキテクチャとなります。

Azure Arc enabled SQL Server については、Azure Arc で実現する SQL Server Anywhere をまとめる際に触れてはいたのですが、軽く確認しただけでしたので、この機会にもう少し触れてみたいと思います。

Azure Arc enabld SQL Server については、Windows / Linux の両環境の SQL Server をサポートしていますが、Windows 部分をメインに検証しています。

Azure Arc enabled SQL Server を構成するコンポーネント

アーキテクチャの図の中で触れられていますが、Azure Arc enabled SQL Server は、いくつかのコンポーネントを組み合わせることで、機能を実現しています。

  • SQL Arc registration script
  • Arc guest configuration agent
  • Monitoring Agent

SQL Arc registration script

SQL Server を Azure に接続する際には「SQL Server の登録スクリプト」を実行する必要があります。

このスクリプトは Azure Arc enabled SQL Server に対してリソースを追加する際にダウンロードできるものとなっており、Azure Arc に SQL Server を接続するためには、このスクリプトの実行が必要となります。

image

このスクリプトを実行することで、Azure Arc enabled SQL Server に SQL Server の登録が行われます。
image

スクリプトの中では、次のような処理が実行されており、Azure Arc enables Server のエージェントについてもインストールが行われます。

  • Azure guest configuration agent のインストール
  • Azure Arc enabled SQL Server のリソースを Azure に追加

 

Arc guest configuration agent

SQL Server と Azure Arc 間は「Arc guest configuration agent」により接続が行われます。

Azure Arc enabled SQL Server を利用する際に利用者が明示的にインストールはしていないのですが、SQL Arc registration script 内で、このエージェントのインストールが行われています。

このエージェントは、Azure Arc enabled Server (Azure Arc 対応サーバー) でも使用されているものとなります。

そのため、Azure Arc enabled SQL Server を有効にした環境では、Azure Arc enabled Server としても登録が行われた状態となります。

image

エージェントをインストールすると「Azure Hybrid Instance Metadata Service」というサービスがインストールされ、このサービスにより、Azure へのサービスが行われます。

image

Windows 版のエージェントでインストールされるコンポーネントの詳細については、Windows エージェントのインストールの詳細 に記載されており、ログファイル等の場所についても、このドキュメントの内容から確認できます。

Azure Arc enabled SQL Server の Environment Health の機能を使用するためには、「Add-SQLAssessmentTask」というコマンドレットが必要となり、このコマンドレットは、Azure Arc enabled Server のエージェントが導入されることで利用可能となります。

Azure Arc enabled Server のエージェントが導入されることで、「C:\Program Files\Microsoft Monitoring Agent\Agent\PowerShell\Microsoft.PowerShell.Oms.Assessments」に、各種アセスメント用のコマンドレットが MMA に導入されるようですので、このディレクトリに DLL が配置されていない場合は、Azure Arc enabled SQL Server の「Environment Health」による、SQL Server のアセスメントを実行することはできません。

 

Monitoring Agent

Azure Arc enabled SQL Server により、SQL Server の情報を取得するためには、Microsoft Monitoring Agent (MMA) が必要となるようです。

Monitoring Agent については、Azure Arc enabled Server の拡張機能としてインストールすることができます。

そのほかのインストール方法としては、Log Analytics エージェントのインストール でも導入することができるかと。

MMA は Log Analytics との接続に使用されるものとなりますが、この機能を使用して、SQL Server の各種情報を取得して Azure Arc に連携を行っているようです。

MMA のインストールを行うと、Microsoft Monitoring Agent (HealthService) がサービスとしてインストールされます。

image

このサービスは、「NT Service\HealthService」というアカウントで動作しており、SQL Server のログインも作成されます。
image

このログインには、サーバーの各種状態を取得するための権限が付与されており、SQL Server のアセスメント機能の情報の取得が行われているのかと思います。(sysadmin の権限は付与されていないので、限定的なアクセスのみが可能な状態となっています)

 

Azure Arc enabled SQL Server で利用可能となる機能

Azure Arc enabled SQL Server はいくつかのコンポーネントを組み合わせて機能の実装が行われていることが確認できました。

次に機能面を見てみたいと思います。

Azure Arc enabled SQL Server は、Azure Arc enabled Server のエージェントを使用していますので、enabled Server の機能も使用することができます。

enabled SQL Server を導入することで、enabled Server の機能に加えて、SQL Server のセキュリティ面を強化できるいくつかの機能を使用することができます。(セキュリティ系だけでなく、Microsoft.CostManagement と連携して、コスト関連の情報をメール通知できる機能もあるようです。オートメーションのタスクを設定すると、CostManagement のリソースプロバイダーから情報を取得してメール送信する Logic Apps のフローが作成されます)

Azure Arc のシナリオについては Github のコンテンツとなりますが、Azure Arc Overview でも情報が公開されています。

ブレードの機能としては、「Environment Health」と「Security」が大きなものになるかと思います。

image

Environment Health

この機能は Azure Arc 対応 SQL Server インスタンスで SQL Assessment を構成する で解説されているものとなります。

この機能は Microsoft Monitoring Agent (MMA) が必要となるものですが、MMA をインストールし、Auzure Arc enabled Server に登録している環境では、「Add-SQLAssessmentTask」というコマンドレットが利用できるようになり、オンデマンド SQL Assesment を実行することができるようになります。

上記のドキュメントの、Environment Health を利用できる環境のセットアップを実施すると、SQL Server オンデマンド評価の概要 に記載されている、SQL Server のアセスメントを行うことができるようになります。

セットアップに関してはドキュメントに記載されているセットアップ手順に従い「AddSqlAssessment.ps1」を実行することでセットアップを行うことができます。

オンデマンド評価のドキュメントに記載されていますが、セットアップを行うと、タスクスケジューラーの「Microsoft – Operation Management Suite」の配下にアセスメント用のジョブが作成され、このジョブが定期的に実行されるとで、SQL Assesment の情報が取得されます。

image

実行をしてから Azure Arc に反映されるまでは、情報の収集を含め時間がかかりますので、タスクが実行されてから 1 時間程度は様子を見た方がよいかもしれません。

ログに関してはデフォルトの設定であれば「C:\sql_assessment」配下のワークディレクトリ内に出力がされますので、このディレクトリ内のファイルから、実行の状態を確認することができます。

Azure Arc に情報が連携されると、下図のように、アセスメントの結果を確認することができます。

image

アセスメントの結果では、問題点と解決方法が表示されますので、この内容を元にして、環境の問題点を把握 / 解決することができます。

Security

Security については Azure Arc が有効な SQL Server インスタンスの高度なデータ セキュリティを構成する の内容が含まれているかと思います。

こちらについては、SQL Server on Azure VM で使用することができる Azure Defender for SQL (旧 Advanced Data Security) の機能を、オンプレミスの環境でも利用可能なる形かと思います。

この機能を導入することで、Azure の仮想マシンで動作している SQL Server 以外の環境に対しても、脆弱性評価と、Advanced Threat Protection を利用可にすることができます。

ドキュメントでは、高度なデータセキュリティを有効にする を有効にする必要があるということですので、Azure Arc enalbed SQL Server で使用している Log Analytics Workspace の Azure Defender プランで、Azure Defender をオンにする必要があるのかと思います。(一部の評価については、オフでも動いていそうな気がしますが)

image

Azure Defender for SQL Srever on machines 自体が現在プレビューですので、価格表示はありません。

この機能の注釈として、次の記載があります。

Azure SQL 仮想マシン、SQL Server のオンプレミス、Arc が有効になっているマシン上の SQL Server に適用されます (リソース数には Azure SQL 仮想マシンのみが反映されます)。
仮想マシン リソース上の SQL Server とそれをホストしている仮想マシンは、2 つの異なるリソースです。したがって、課金のためにそれぞれが個別にカウントされます。

Azure Arc で高度はデータセキュリティを有効にするためには、Azure Defender をオンにする必要があることは記載されていますね。

Azure Defender をオンにすると、セキュリティセンターの「推奨事項」の「脆弱性を修復する – マシン上の SQL サーバーの脆弱性評価の調査結果を修復する必要がある」から、Azure Arc enabled SQL Server で接続している SQL Server の脆弱性を確認することができます。
image

実際には、このような結果が取得できます。

image

脆弱性評価については、セキュリティセンターだけでなく、Azure Arc enabled SQL Server のブレードの Security からも確認できます。

image

Azure Defender for SQL と同等の機能となっているようですので、SQL インジェクションに該当しそうなクエリの検知についても行うことができるようです。

怪しいクエリが実行された場合、メールとセキュリティアラートにより、状況を確認することができます。

image

SQL Server on Linux の接続

Azue Arc enabled SQL Server は、SQL Server on Linux もサポート対象となっています。

サポートバージョンについては サポートされている SQL バージョンとオペレーティング システム に記載されており、SQL Server 2017 以降の on Linux であれば、Azure Arc enabled SQL Server の管理対象とすることができます。

Linux 版についても、Windows 版と同様で、Azure Arc enabled Server + MMA を組み合わせた形で機能の実現が行われています。

Linux の Azure Arc のエージェントについては Linux エージェントのインストールの詳細 で解説が行われています。

Windows と同様に himdsd のサービスがエージェントとして起動しています。

image

これと、MMA をインストールし、Azure Arc enabbled SQL Server のリソースが作成されることで、Linux 版の SQL Server についても Azure Arc 上で管理することができるようになります。

ただし、現時点の Azure Arc enabled SQL Server では、「Security」「Environment Health」は使用できないようです。

Linux 環境を認識させても、ブレードではこの二つの機能はグレーアウトされていました。
image

脅威検知を行うために必要となる拡張イベントも SQL Server on Linux では設定されていませんでしたので、Windows 版では利用可能な一部の機能は、現時点では SQL Server on Linux では利用できないようですね。

 

 

Azure Arc enabled SQL Server では、このような機能を、エージェントがインストール可能な SQL Server であれば、Azure 外で動作している環境でも利用することができるようになります。

これにより、SQL Server の状態を一元管理することや、Azure Arc enabled SQL Server によるサーバーの管理を、Azure 以外で動作している環境に対しても提供することができ、Azure で一元化できることによるメリットが出てくるのでしょうね。

Written by Masayuki.Ozawa

11月 6th, 2020 at 12:04 am

Posted in Azure Arc,SQL Server

Tagged with ,

Leave a Reply