拡張機能のセキュリティ

この記事では、Azure Arc 対応サーバーの VM 拡張機能の基礎と、拡張機能の設定をカスタマイズする方法について詳しく説明します。

拡張機能の基本

Azure Arc 対応サーバーの VM 拡張機能は、監視、パッチ管理、スクリプトの実行などの他の機能を有効にするオプションのアドオンです。 拡張機能は Microsoft によって公開され、Azure Marketplace からサード パーティを選択し、Microsoft が管理するストレージ アカウントに格納されます。 すべての拡張機能は、公開プロセスの一環としてマルウェアをスキャンします。 Azure Arc 対応サーバーの拡張機能は、Azure VM で使用できる拡張機能と同じであり、運用環境全体の一貫性を確保します。

拡張機能は、プライベート エンドポイントを構成していない限り、インストールまたはアップグレード時に Azure Storage (*.blob.core.windows.net) から直接ダウンロードされます。 ストレージ アカウントは定期的に変更され、事前に予測することはできません。 プライベート エンドポイントを使用すると、代わりに Azure Arc サービスのリージョン URL を介して拡張機能がプロキシされます。

デジタル署名されたカタログ ファイルは、拡張機能パッケージとは別にダウンロードされ、拡張機能マネージャーが拡張機能パッケージを開く、または実行する前に、各拡張機能の整合性を確認するために使用されます。 ダウンロードした拡張機能の ZIP ファイルが、カタログ ファイルの内容と一致しない場合、拡張機能の操作は中止されます。

拡張機能は、監視エージェントをクラウド サービスに接続するためのプロキシ URL や API キーなど、インストールをカスタマイズまたは構成するための設定を受け取る場合があります。 拡張機能の設定には、通常の設定と保護された設定の 2 種類があります。 保護された設定は Azure に保持されず、ローカル コンピューターで保存時に暗号化されます。

すべての拡張機能操作は、API 呼び出し、CLI、PowerShell、またはポータル アクションを介して、Azure から発生します。 この設計により、サーバーに拡張機能をインストール、更新、またはアップグレードするアクションが、Azure アクティビティ ログに記録されます。 Azure Connected Machine エージェントを使用すると、トラブルシューティングとクリーンアップのために、拡張機能をローカルで削除できます。 ただし、拡張機能がローカルで削除されても、マシンに拡張機能がインストールされているとサービスで認識されている場合は、次回拡張機能マネージャーが Azure と同期する際に再インストールされます。

スクリプトの実行

拡張機能マネージャーを使用すると、カスタム スクリプト拡張機能または実行コマンドを使用して、コンピューターでスクリプトを実行できます。 既定では、これらのスクリプトは拡張機能マネージャーのユーザー コンテキスト (Windows 上のローカル システムまたは Linux 上のルート) で実行されます。つまり、これらのスクリプトはコンピューターに無制限にアクセスできます。 これらの機能を使用しない場合は、許可リストまたはブロックリストを使用してそれらをブロックできます。 次のセクションに例を示します。

ローカル エージェントのセキュリティ制御

エージェント バージョン 1.16 以降では、必要に応じて、サーバーにインストールできる拡張機能を制限し、ゲスト構成を無効にできます。 これらの制御は、サーバーで他の管理機能を使用することを許可せずに、イベント ログの収集など、単一の目的でサーバーを Azure に接続する場合に役立ちます。

これらのセキュリティ制御は、サーバー自体でコマンドを実行することによってのみ構成できます。Azure から変更することはできません。 このアプローチは、Azure Arc でリモート管理シナリオを有効にする際にサーバー管理者の意図を維持することにはつながりますが、後でそれらを変更する場合に、設定の変更がより難しくなります。 この機能は、機密性の高いサーバーを対象としたものです (Active Directory ドメイン コントローラー、支払いデータを処理するサーバー、厳密な変更制御手段が適用されるサーバーなど)。 他のほとんどの場合、これらの設定を変更する必要はありません。

許可リストとブロックリスト

Azure Connected Machine エージェントは、許可リストとブロックリストをサポートして、マシンにインストールできる拡張機能を制限します。 許可リストは排他的です。つまり、リストに含める特定の拡張機能のみをインストールできます。 ブロックリストは排他的です。つまり、それらの拡張機能を除くすべての機能をインストールできます。 許可リストは、将来的に利用可能になる新しい拡張機能を本質的にブロックすることになるため、ブロックリストの使用をお勧めします。 許可リストとブロックリストは、サーバーごとにローカルに構成されます。 これにより、Azure の所有者または全体管理者のアクセス許可を持つユーザーであっても、承認されていない拡張機能をインストールしようとしてセキュリティ規則を上書きすることはできません。 誰かが承認されていない拡張機能をインストールしようとすると、拡張機能マネージャーは拡張機能のインストールを拒否し、Azure にエラーを報告するように拡張機能のインストールをマークします。 許可リストとブロックリストは、エージェントがインストールされた後に (エージェントが Azure に接続される前を含む) いつでも構成できます。

エージェントで許可リストまたはブロックリストが構成されていない場合、すべての拡張機能が許可されます。

最も安全なオプションは、インストールしてもよい拡張機能を明示的に許可する方法です。 許可リストに含まれていない拡張機能は、自動的にブロックされます。 Azure Monitor エージェントのみを許可するように Azure Connected Machine エージェントを構成するには、各サーバーで次のコマンドを実行します。

azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorLinuxAgent"

任意のスクリプトを実行する機能を持つすべての拡張機能をブロックするブロックリストの例を次に示します。

azcmagent config set extensions.blocklist “Microsoft.Cplat.Core/RunCommandHandlerWindows, Microsoft.Cplat.Core/RunCommandHandlerLinux,Microsoft.Compute/CustomScriptExtension,Microsoft.Azure.Extensions/CustomScript,Microsoft.Azure.Automation.HybridWorker/HybridWorkerForWindows,Microsoft.Azure.Automation.HybridWorkerForLinux,Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent, Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux”

拡張機能は、スラッシュ / で区切られたパブリッシャーと種類によって指定されます。 ドキュメントで最も一般的な拡張機能の一覧を参照するか、ポータルAzure PowerShell、または Azure CLI でサーバーに既にインストールされている VM 拡張機能を一覧表示してください。

次の表は、許可リストまたはブロックリストが構成されているエージェントに対して拡張操作を実行した場合の動作を示したものです。

操作 許可リスト内 ブロックリスト内 許可リストとブロックリストの両方 どちらのリストにもないが、許可リストが構成されている
拡張機能のインストール 許可 Blocked Blocked Blocked
更新 (再構成) 拡張機能 許可 Blocked Blocked Blocked
アップグレード拡張機能 許可 Blocked Blocked Blocked
削除拡張機能 許可 許可 許可 許可

重要

許可リストやブロックリストを構成する前に、拡張機能がサーバーに既にインストールされている場合、その拡張機能は自動的には削除されません。 その拡張機能をマシンから完全に削除するには、Azure からそれを削除する必要があります。 このシナリオに対応するために、削除要求は常に受け入れられます。 削除すると、許可リストとブロックリストで、今後のインストール試行を許可するかどうかが決定されます。

エージェント バージョン 1.35 以降では、拡張機能マネージャーに実行を指示するものの、拡張機能のインストールは許可しない特別な許可リスト値 Allow/None が用意されています。 これは、Azure Arc を使用して、他の拡張機能を使用せずに Windows Server 2012 拡張セキュリティ更新プログラム (ESU) を配信する場合に推奨される構成です。

azcmagent config set extensions.allowlist "Allow/None"

Azure のポリシーを使用して、インストールできる拡張機能を制限することもできます。 Azure のポリシーには、クラウドで構成することが可能であり、承認された拡張機能の一覧を変更する必要がある場合に個々のサーバーで変更を必要としない利点があります。 ただし、ポリシーの割り当てを変更するアクセス許可を持つすべてのユーザーは、この保護をオーバーライドまたは削除できます。 Azure のポリシーを使用して拡張機能を制限する場合は、組織内でポリシー割り当てを編集するアクセス許可を持つアカウントを見直し、適切な変更制御対策が適用されていることを確認してください。

ロックダウンされたマシンのベスト プラクティス

一連の機能を減らして Azure Connected Machine エージェントを構成する場合は、一部のユーザーがそれらの制限を削除して適切な制御を実装できるようにするためのメカニズムを考慮することが重要です。 サーバー上で管理者またはルート ユーザーとしてコマンドを実行できるユーザーは、Azure Connected Machine エージェントの構成を変更できます。 拡張機能とゲスト構成ポリシーは、サーバー上の特権コンテキストで実行されます。そのため、エージェントの構成を変更できる場合もあります。 ローカル エージェントのセキュリティ制御を適用してエージェントをロックダウンする場合は、次のベスト プラクティスを実施して、ローカル サーバー管理者だけがエージェントの構成を更新できるようにすることをお勧めします。

  • 可能な限り、拡張機能にはブロックリストではなく、許可リストを使用する。
  • エージェントの構成を変更する可能性があるスクリプトが実行されるのを防ぐため、拡張機能の許可リストにはカスタム スクリプト拡張機能を含めない。
  • ゲスト構成を無効にして、エージェントの構成を変更する可能性があるカスタム ゲスト構成ポリシーの使用を防止する。

監視およびセキュリティ シナリオごとの構成例

一般的には、Azure Arc を使用する場合、Azure Monitor と Microsoft Sentinel を使ってサーバーを監視し、Microsoft Defender for Cloud を使ってそれらを保護します。 このセクションでは、監視とセキュリティのシナリオのみをサポートするようにエージェントをロックダウンする方法の例を示します。

Azure Monitor エージェントのみ

Windows サーバーで、管理者特権のコマンド コンソールから次のコマンドを実行します。

azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorWindowsAgent"
azcmagent config set guestconfiguration.enabled false

Linux サーバーで、次のコマンドを実行します。

sudo azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorLinuxAgent"
sudo azcmagent config set guestconfiguration.enabled false

Log Analytics と依存関係 (Azure Monitor VM Insights) のみ

この構成は、従来の Log Analytics エージェントと依存関係エージェント用です。

Windows サーバーで、管理者特権のコンソールから次のコマンドを実行します。

azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent,Microsoft.Azure.Monitoring.DependencyAgent/DependencyAgentWindows"
azcmagent config set guestconfiguration.enabled false

Linux サーバーで、次のコマンドを実行します。

sudo azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux,Microsoft.Azure.Monitoring.DependencyAgent/DependencyAgentLinux"
sudo azcmagent config set guestconfiguration.enabled false

監視とセキュリティ

Microsoft Defender for Cloud を使用すると、サーバー上で追加の拡張機能をデプロイして、サーバー上の脆弱性のあるソフトウェアを識別し、Microsoft Defender for Endpoint を有効にすることができます (構成されている場合)。 また、Microsoft Defender for Cloud では、規制コンプライアンス機能に対応したゲスト構成も使用されます。 エージェントの制限を元に戻すためにカスタムのゲスト構成割り当てが使用される可能性もあるので、規制コンプライアンス機能が必要かどうかや、マシンでゲスト構成を有効にする必要があるかどうかは、慎重に評価するようにしてください。

Windows サーバーで、管理者特権のコマンド コンソールから次のコマンドを実行します。

azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent,Qualys/WindowsAgent.AzureSecurityCenter,Microsoft.Azure.AzureDefenderForServers/MDE.Windows,Microsoft.Azure.AzureDefenderForSQL/AdvancedThreatProtection.Windows"
azcmagent config set guestconfiguration.enabled true

Linux サーバーで、次のコマンドを実行します。

sudo azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux,Qualys/LinuxAgent.AzureSecurityCenter,Microsoft.Azure.AzureDefenderForServers/MDE.Linux"
sudo azcmagent config set guestconfiguration.enabled true

エージェントのモード

監視とセキュリティのシナリオ向けにローカル セキュリティ コントロールを構成する方法としては、エージェント バージョン 1.18 以降で利用できる "モニター モード" を使用するのが簡単です。 モードとは、Microsoft が管理するゲスト構成エージェントおよび拡張機能の許可リストに対する定義済みの構成です。 監視のシナリオに対応した新しい拡張機能が利用可能になると、Microsoft は許可リストとエージェントの構成を更新して、その新しい機能を適宜、追加または除外します。

モードには、次の 2 つの選択肢があります。

  1. 完全 - 既定のモード。 エージェントのすべての機能が許可されます。
  2. 監視 - ゲスト構成のポリシー エージェントを無効にし、監視とセキュリティに関連した拡張機能の使用のみを許可する制限モード。

監視モードを有効にするには、次のコマンドを実行します。

azcmagent config set config.mode monitor

エージェントの現在のモードと許可されている拡張機能は、次のコマンドを使用して確認できます。

azcmagent config list

監視モードでは、拡張機能の許可リストまたはブロックリストを変更することはできません。 どちらかのリストを変更する必要がある場合は、エージェントを完全モードに戻し、独自の許可リストとブロックリストを指定してください。

エージェントを完全モードに戻すには、次のコマンドを実行します。

azcmagent config set config.mode full

拡張機能マネージャーの無効化

Azure Arc で拡張機能を使用する必要がない場合は、拡張機能マネージャーを完全に無効にすることもできます。 次のコマンドを使用して、拡張機能マネージャーを無効にできます (各マシンでローカルに実行します)。

azcmagent config set extensions.enabled false

拡張機能マネージャーを無効にしても、サーバーに既にインストールされている拡張機能は削除されません。 Log Analytics エージェントなど、独自の Windows または Linux サービスでホストされている拡張機能は、拡張機能マネージャーが無効になっている場合でも引き続き実行される可能性があります。 Azure Monitor エージェントなど、拡張機能マネージャー自体によってホストされている他の拡張機能は、拡張機能マネージャーが無効になっている場合、実行されません。 拡張機能マネージャーを無効にする前に拡張機能を削除して、サーバーで拡張機能が引き続き実行されるのを防止する必要があります。