Azure Arc 対応サーバー セキュリティの概要

この記事では、企業内に Azure Arc 対応サーバーを展開する前に評価しなければならない、セキュリティ構成と考慮事項について説明します。

ID とアクセスの制御

Azure ロールベースのアクセス制御は、Azure Arc 対応サーバーを表示および管理できるアカウントを制御するために使用されます。 Azure portal の [Access Control (IAM)] ページから、Azure Arc 対応サーバーにアクセスできるユーザーを確認できます。

Azure Arc-enabled server access control

リソースに対する共同作成者または管理者ロールのアクセス権を付与されたユーザーおよびアプリケーションは、マシン上での拡張機能の展開や削除などの、リソースに対する変更を加えることができます。 拡張機能には特権コンテキストで実行される任意のスクリプトを含めることができるため、Azure リソースの共同作成者はサーバーの間接管理者になるものと見なしてください。

Azure Connected Machine のオンボード ロールは、大規模なオンボードで使用でき、Azure での新しい Azure Arc 対応サーバーの読み取りまたは作成のみが可能です。 既に登録済みのサーバーの削除や、拡張機能の管理には使用できません。 ベスト プラクティスとして、このロールは、大規模なマシンのオンボードに使われる Microsoft Entra サービス プリンシパルのみに割り当てることをお勧めします。

Azure Connected Machine のリソース管理者ロールのメンバーであるユーザーは、マシンの読み取り、変更、再オンボード、および削除を行うことができます。 このロールは、Azure Arc 対応サーバーの管理をサポートするように設計されていますが、リソース グループまたはサブスクリプション内の他のリソースの管理はサポートしていません。

エージェントのセキュリティとアクセス許可

Windows 上の Azure Connected Machine エージェント (azcmagent) を管理するには、ローカルの管理者グループのメンバーであるユーザー アカウントが必要です。 Linux では、ルート アクセス権が必要です。

Azure Connected Machine エージェントは、お使いのマシンで実行される 3 つのサービスで構成されています。

  • Hybrid Instance Metadata Service (HIMDS) サービスは、Arc のすべてのコア機能を担当します。これには、Azure へのハートビートの送信、他のアプリがマシンの Azure リソース ID を知るためのローカル インスタンス メタデータ サービスの公開、他の Azure サービスに対して認証を行うための Microsoft Entra トークンの取得などが含まれます。 このサービスは、Windows では特権のない仮想サービス アカウント (NT SERVICE\himds) として実行され、Linux では himds ユーザーとして実行されます。 仮想サービス アカウントには、Windows 上の "サービスとしてログオン" 権限が必要です。

  • ゲスト構成サービス (GCService) は、マシン上の Azure Policy を評価する役割を担います。

  • ゲスト構成拡張サービス (ExtensionService) は、マシン上の拡張機能 (エージェント、スクリプト、またはその他のソフトウェア) のインストール、アップグレード、削除を担当します。

ゲスト構成と拡張サービスは、Windows ではローカル システムとして、Linux ではルートとして実行されます。

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

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

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

拡張機能の許可リストとブロックリスト

サーバーにインストールできる拡張機能を制限するには、サーバーで許可およびブロックする拡張機能の一覧を構成します。 拡張機能マネージャーは、拡張機能をインストール、更新、またはアップグレードする要求を許可リストとブロックリストに照らして評価することで、拡張機能をサーバーにインストールできるかどうかを判断します。 削除要求は常に許可されます。

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

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

1 つ以上の拡張機能をブロックリストに追加することで、それらをブロックできます。 拡張機能が許可リストとブロックリストの両方に存在する場合、その拡張機能はブロックされます。 Linux 用カスタム スクリプト拡張機能をブロックするには、次のコマンドを実行します。

azcmagent config set extensions.blocklist "Microsoft.Azure.Extensions/CustomScript"

拡張機能は、スラッシュ / で区切られたパブリッシャーと種類によって指定されます。 ドキュメントで最も一般的な拡張機能の一覧を参照するか、ポータル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 Policy のゲスト構成機能を使用すると、サーバー上の設定を Azure から監査および構成できます。 この機能を許可したくない場合は、次のコマンドを実行して、ゲスト構成がサーバーで実行されるのを無効にできます。

azcmagent config set guestconfiguration.enabled false

ゲスト構成が無効になっている場合、Azure 内のマシンに割り当てられたゲスト構成ポリシーはすべて非準拠として表示されます。 これらのマシンが非準拠として報告されないようにしたい場合は、これらのマシンに対する適用除外を作成するか、ポリシー割り当てのスコープを変更することを検討してください。

拡張機能マネージャーを有効または無効にする

拡張機能マネージャーは、サーバー上で VM 拡張機能のインストール、更新、削除を実行する役割を担います。 拡張機能マネージャーを無効にすると、サーバー上で拡張機能の管理が行われなくなりますが、代わりに許可リストとブロックリストを使用してより詳細に管理することをお勧めします。

azcmagent config set extensions.enabled false

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

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

一連の機能を減らして 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 対応サーバーでのマネージド ID の使用

既定では、Arc によって使用される Microsoft Entra システム割り当て ID は、Azure での Azure Arc 対応サーバーの状態を更新するためにのみ使用できます。 たとえば、ハートビートの状態の [最終表示日] です。 自分のサーバーにあるアプリケーションで、システム割り当て ID を使用して他の Azure サービスにアクセスする場合、必要ならば、他のロールを ID に割り当てることもできます。 Azure リソースにアクセスできるようにシステム割り当てマネージド ID を設定する方法の詳細は「Azure Arc 対応サーバーでの Azure リソースに対して認証を行う」を参照してください。

Hybrid Instance Metadata Service は、マシン上で実行されている任意のアプリケーションからアクセスできますが、承認されたアプリケーションのみがシステム割り当て ID の Microsoft Entra トークンを要求できます。 トークン URI への最初のアクセス試行時に、信頼された呼び出し元のみが読み取ることができるファイル システム上の場所に、ランダムに生成された暗号 BLOB がサービスによって生成されます。 次に呼び出し元は、(適切なアクセス許可があることを証明するために) ファイルを読み取り、Authorization ヘッダー内のファイルの内容で要求を再試行して、Microsoft Entra トークンを正常に取得する必要があります。

  • Windows では、呼び出し元は BLOB を読み取るために、ローカルの Administrators グループか、またはハイブリッド エージェント拡張アプリケーション グループのメンバーである必要があります。

  • Linux では、呼び出し元は BLOB を読み取るために HIMDS グループのメンバーである必要があります。

Arc 対応 サーバーでマネージド ID を使用して認証を行い、Azure リソースにアクセスする方法の詳細は、次の動画をご覧ください。

ディスク暗号化の使用

Azure Connected Machine エージェントと Azure サービスとの通信には公開キー認証が使用されます。 サーバーを Azure Arc にオンボードすると、秘密キーがディスクに保存され、エージェントが Azure と通信するたびに使用されます。 盗まれた場合、別のサーバー上で秘密キーを使用してサービスと通信し、元のサーバーと同じように動作させることができます。 これには、システム割り当て ID と、その ID がアクセスできるすべてのリソースへのアクセス権の取得が含まれます。 秘密キー ファイルは、読み取りのために HIMDS アカウントのアクセスのみを許可するように保護されています。 オフライン攻撃を防ぐために、サーバーのオペレーティング システムのボリュームでディスク全体の暗号化 (BitLocker、dm-crypt など) を使用することを強くお勧めします。

次のステップ

  • 複数のハイブリッド マシンにまたがって Azure Arc 対応サーバーを評価または有効にする前に、Connected Machine エージェントの概要に関するページを確認して、要件、エージェントに関する技術的な詳細、デプロイ方法を理解してください。

  • 計画と展開ガイドを参照して、任意の規模で Azure Arc 対応サーバーをデプロイし、一元的な管理と監視を実装する計画を立ててください。