この記事では、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 portal アクションを使用して Azure から送信されます。 この設計により、サーバーに拡張機能をインストール、更新、またはアップグレードする操作が Azure Monitor アクティビティ ログに記録されます。 Azure Connected Machine エージェントを使用すると、トラブルシューティングとクリーンアップのために、拡張機能をローカルで削除できます。 ただし、拡張機能がローカルで削除されても、マシンに拡張機能がインストールされているとサービスで認識されている場合は、次回拡張機能マネージャーが Azure と同期する際に再インストールされます。
スクリプトの実行
拡張機能マネージャーを使用すると、カスタム スクリプト拡張機能または実行コマンドを使用して、コンピューターでスクリプトを実行できます。 既定では、これらのスクリプトは拡張機能マネージャーのユーザー コンテキスト (Windows 上のローカル システムまたは Linux 上のルート) で実行されます。つまり、これらのスクリプトはコンピューターに無制限にアクセスできます。 これらの機能を使用しない場合は、許可リストまたはブロックリストを使用してそれらをブロックできます。 次のセクションに例を示します。
使用可能なコントロールを使用して、不要な管理機能を制限または無効にすることができます。 たとえば、リモート でコードを実行するためにカスタム スクリプト拡張機能を使用する場合を除き、攻撃者がリモートでコマンドを実行してマルウェアやその他の悪意のあるコードを仮想マシンに配置できるため、その使用を無効にすることをお勧めします。 カスタム スクリプト拡張機能の使用がセキュリティ要件を満たしていない場合は、許可リスト メカニズムを使用して、カスタム スクリプト拡張機能の使用を無効にすることができます。
ローカル エージェントのセキュリティ制御
エージェント バージョン 1.16 以降では、必要に応じて、サーバーにインストールできる拡張機能を制限し、ゲスト構成を無効にできます。 これらの制御は、サーバーで他の管理機能を使用することを許可せずに、イベント ログの収集など、単一の目的でサーバーを Azure に接続する場合に役立ちます。
これらのセキュリティ制御は、サーバー自体でコマンドを実行することによってのみ構成できます。Azure から変更することはできません。 この方法では、Azure Arc でリモート管理シナリオを有効にするときに、サーバー管理者の意図が維持されます。ただし、後で設定を変更する場合は、設定の変更がより困難になります。 この機能は、機密性の高いサーバー (たとえば、Active Directory ドメイン コントローラー、支払いデータを処理するサーバー、厳密な変更管理の対象となるサーバー) を対象としています。 他のほとんどの場合、これらの設定を変更する必要はありません。
許可リストとブロックリスト
Azure Connected Machine エージェントは、許可リストとブロックリストをサポートして、マシンにインストールできる拡張機能を制限します。 許可リストは排他的です。つまり、リストに含める特定の拡張機能のみをインストールできます。 ブロックリストは排他的です。つまり、それらの拡張機能を除くすべての機能をインストールできます。 許可リストは、将来的に利用可能になる新しい拡張機能を本質的にブロックすることになるため、ブロックリストの使用をお勧めします。
許可リストとブロックリストは、サーバーごとにローカルに構成されます。 これにより、Azure の所有者または全体管理者のアクセス許可を持つユーザーであっても、承認されていない拡張機能をインストールしようとしてセキュリティ規則を上書きすることはできません。 誰かが承認されていない拡張機能をインストールしようとすると、拡張機能マネージャーはそれをインストールすることを拒否し、拡張機能のインストール レポートを Azure のエラーとしてマークします。
許可リストとブロックリストは、エージェントがインストールされた後 (エージェントが Azure に接続される前を含む) いつでも構成できます。
エージェントで許可リストまたはブロックリストが構成されていない場合、すべての拡張機能が許可されます。
最も安全なオプションは、インストールしてもよい拡張機能を明示的に許可する方法です。 許可リストに含まれていない拡張機能は、自動的にブロックされます。 たとえば、Azure Monitor Agent for Linux のみを許可するように 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 拡張機能を一覧表示できます。
次の表は、許可リストまたはブロックリストが構成されているエージェントに対して拡張操作を実行した場合の動作を示したものです。
操作 | 許可リスト内 | ブロックリスト内 | 許可リストとブロックリストの両方 | どちらのリストにもないが、許可リストが構成されている |
---|---|---|---|---|
拡張機能のインストール | 許可 | ブロックされました | ブロックされました | ブロックされました |
更新 (再構成) 拡張機能 | 許可 | ブロックされました | ブロックされました | ブロックされました |
アップグレード拡張機能 | 許可 | ブロックされました | ブロックされました | ブロックされました |
削除拡張機能 | 許可 | 許可 | 許可 | 許可 |
重要
許可リストまたはブロックリストを構成する前に、拡張機能がサーバーに既にインストールされている場合、その拡張機能は自動的に削除されません。 その拡張機能をマシンから完全に削除するには、Azure からそれを削除する必要があります。 このシナリオに対応するために、削除要求は常に受け入れられます。 削除すると、許可リストとブロックリストで、今後のインストール試行を許可するかどうかが決定されます。
エージェント バージョン 1.35 以降では、拡張機能マネージャーに実行を指示するものの、拡張機能のインストールは許可しない特別な許可リスト値 Allow/None
が用意されています。 この値は、Azure Arc を使用して、他の拡張機能を使用せずに Windows Server 2012 拡張セキュリティ更新プログラム (ESU) を配信する場合に推奨されます。
azcmagent config set extensions.allowlist "Allow/None"
Azure のポリシーを使用して、インストールできる拡張機能を制限することもできます。 Azure Policies にはクラウドで構成できるという利点があるため、承認された拡張機能の一覧を変更する必要がある場合は、個々のサーバーでの変更は必要ありません。 ただし、ポリシーの割り当てを変更するアクセス許可を持つすべてのユーザーは、この保護をオーバーライドまたは削除できます。 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
監視とセキュリティ
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 つの選択肢があります。
- 完全 - 既定のモード。 このモードでは、すべてのエージェント機能が許可されます。
- 監視 - ゲスト構成のポリシー エージェントを無効にし、監視とセキュリティに関連した拡張機能の使用のみを許可する制限モード。
監視モードを有効にするには、次のコマンドを実行します。
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 エージェントなど) は、拡張機能マネージャーが無効になっている場合は実行されません。 拡張機能マネージャーを無効にする前に拡張機能を削除して、サーバーで拡張機能が引き続き実行されるのを防止する必要があります。