メタデータ セキュリティ プロトコル (MSP) では、ワークロード内のメタデータ サーバー アクセスを最大限に制限するためのカスタマイズが提供されます。 この記事では、サポートされている任意の仮想マシン (VM) または仮想マシン スケール セットですばやく有効にできる基本的な概念について説明します。
ワークロードでメタデータ サービスを使用する方法を理解している場合は、 高度な構成のガイドに従うことで、アクセスをさらに強化できます。
MSP は次の方法で構成できます。
- Azure リソース マネージャーのテンプレート
- REST API
- PowerShell
- Azure Portal
概念
| 用語 | 定義 |
|---|---|
| メタデータ サービス | 固定の場所で利用できる、インターネット以外のプライベートな匿名 HTTP API を提供する業界のプラクティスの一般的な用語。 通常、場所は 169.254.169.254。 正確な機能、詳細、サービス数はクラウド プロバイダーによって異なりますが、それらはすべて同様のアーキテクチャと目的を共有します。 |
| Azure Instance Metadata Service | サポートと完全な API ドキュメントが付属するユーザー向けのメタデータ サービス。 これは、Azure と Microsoft 以外の統合の両方を対象としています。 メタデータと資格情報の組み合わせを提供します。 |
| WireServer | 組織がサービスとしてのコア インフラストラクチャ (IaaS) 機能を実装するために使用するプラットフォーム向けのメタデータ サービス。 これは一般的な使用を目的としたものではなく、Azure ではサポートされていません。 サービスのコンシューマーは Azure の実装に関連していますが、サービスは引き続きセキュリティ評価で考慮する必要があります。 WireServer リソースは、既定で特権として扱われます。 ただし、インスタンス メタデータ サービスのリソースを非特権として表示しないでください。 ワークロードに応じて、インスタンス メタデータ サービスは機密情報を提供することもできます。 |
| ゲスト プロキシ エージェント (GPA) | MSP 保護を有効にするゲスト内エージェント。 |
Azure Resource Manager のフィールド
すべての構成は、リソースの構成の securityProfile セクションの新しいプロパティを使用して管理します。
MSP を構成するための最小 API バージョンは 2024-03-01。
一般的な構成
ProxyAgentSettings は、MSP 機能の構成に使用する Azure VM と仮想マシン スケール セットの VM モデルの新しいプロパティです。
| パラメーター名 | タイプ | 既定値 | 詳細 |
|---|---|---|---|
enabled |
Bool |
false |
VM または仮想マシン スケール セットで MSP 機能を有効にする必要があるかどうかを指定します。 既定値は false です。 このプロパティは次を制御します。
|
imds |
HostEndpointSettings |
適用なし | インスタンス メタデータ サービス固有の構成。 この記事 で後述する各メタデータ サービスの構成 を参照してください。 |
wireServer |
HostEndpointSettings |
適用なし | WireServer エンドポイントの設定。 この記事 で後述する各メタデータ サービスの構成 を参照してください。 |
keyIncarnationId |
Integer |
0 |
キー生成用のカウンター。 この値を大きくすると、ゲストとホストの間の通信チャネルをセキュリティで保護するために使用されるキーをリセットするように MSP に指示されます。 GPA はキーのリセットに気付き、新しいキーを自動的に取得します。 このプロパティは、回復とトラブルシューティングのみを目的としています。 |
各メタデータ サービスの構成
メタデータ サービスごとに個別の保護を構成できます。 スキーマはサービスごとに同じです。
インライン構成とリンク構成は、サービスごとに相互に排他的です。
インライン構成
インライン構成は、modeの HostEndpointSettings プロパティを使用して定義できます。 インライン構成では、カスタマイズはサポートされていません。
次の表では、 mode は Stringとして表される列挙体です。
mode 値 |
GPA の動作 | サービスの動作 |
|---|---|---|
Disabled |
GPA は、このサービスへの要求の eBPF インターセプトを設定しません。 要求はサービスに直接送信されます。 | 変更なし。 このサービスでは、GPA が要求を承認 (署名) する必要 はありません 。 |
Audit |
GPA は、このサービスへの要求をインターセプトし、現在の構成で承認されているかどうかを判断します。 要求は常にサービスに転送されますが、結果と呼び出し元の情報がログに記録されます。 | 変更なし。 このサービスでは、GPA が要求を承認 (署名) する必要 はありません 。 |
Enforce |
GPA は、このサービスへの要求をインターセプトし、現在の構成で承認されているかどうかを判断します。 呼び出し元が承認されている場合、GPA は要求に署名して承認します。 呼び出し元が承認されていない場合、GPA は状態コード 401 または 403で応答します。 すべての結果が監査ログに記録されます。 |
GPA は、サービスに対する要求を保証 (署名) する 必要があります 。 署名されていない要求は、 401 状態コードで拒否されます。 |
Important
このプロパティは、 inVMAccessControlProfileReferenceIdと同時に使用することはできません。
WireServer Enforce モードでは、GPA はプロセスが WireServer にアクセスするために Administrator または root として実行されることを暗黙的に要求します。 この要件は、MSP が無効になっている場合でも存在するゲスト内ファイアウォール規則と同じですが、より安全な実装を使用します。
リンクされた構成
inVMAccessControlProfiles リソースの種類は、VM または仮想マシン スケール セットに対してリンクできるサービスごとの構成を定義します。 これらの構成では、完全なカスタマイズがサポートされています。 詳細については、「 MSP の高度な構成」を参照してください。
HostEndpointSettings プロパティ |
タイプ | 詳細 |
|---|---|---|
inVMAccessControlProfileReferenceId |
String |
適用する構成のリソース ID。 |
このプロパティは、完全な Resource Manager ID である必要があります。この ID は、 /subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/inVMAccessControlProfiles/{profile}/versions/{version} という形式になります。
Important
このプロパティは、 modeと同時に使用することはできません。
完全な例
- VM:
https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Compute/virtualMachines/{virtualMachine-Name}?api-version=2024-03-01 - 仮想マシン スケール セット:
https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSet-name}/virtualMachines/{instance-id}?api-version=2024-03-01
mode の使用例を次に示します。
{
"name": "GPAWinVM",
"location": "centraluseuap",
"properties": {
...
...
"securityProfile": {
"proxyAgentSettings": {
"enabled": true,
"wireServer": {
"mode": "Enforce"
},
"imds": {
"mode": "Audit"
}
}
},
}
}
次の例では、 inVMAccessControlProfileReferenceId:
{
"name": "GPAWinVM",
"location": "centraluseuap",
"properties": {
...
...
"securityProfile": {
"proxyAgentSettings": {
"enabled": true,
"wireServer": {
"inVMAccessControlProfileReferenceId": "/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/inVMAccessControlProfiles/{profile}/versions/{version}"
},
"imds": {
"inVMAccessControlProfileReferenceId": "/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/inVMAccessControlProfiles/{profile}/versions/{version}"
}
}
},
}
}
監査ログ
AuditモードとEnforceモードでは、監査ログがローカル ディスクに生成されます。
| OS ファミリ | 監査ログの場所 |
|---|---|
| Linux | /var/lib/azure-proxy-agent/ProxyAgent.Connection.log |
| ウィンドウズ | C:\WindowsAzure\ProxyAgent\Logs\ProxyAgent.Connection.log |
推奨される進行
多くの場合、お客様は、ワークロードにおける WireServer と Instance Metadata Service の使用状況の全範囲を認識していません。 VM の使用状況は、作成するカスタム統合と、実行する他のソフトウェアの実装の詳細の組み合わせです。 より簡単な構成から始めて、時間の経過と共に反復することをお勧めします。 一般に、次の順序に進むのが最善です。
-
Auditモードで WireServer およびインスタンス メタデータ サービスの MSP を有効にします。 この手順では、互換性を確認し、ワークロードの詳細を確認できます。 また、脅威アクターを検出するための貴重なデータも生成されます。 - 監査データを確認します。 フラグが設定された要求には細心の注意を払います。 これらの要求は、進行中の攻撃またはワークロードの非互換性の兆候である可能性があります。
- 問題を修復します。 既定のセットアップでは、フラグが設定されているものはメタデータ サービスの誤用です。 必要に応じて、セキュリティ チームまたは対応するサービス所有者に問い合わせてください。
-
AuditモードからEnforceモードに切り替えます。 フラグ付き要求は、ワークロードを保護するために拒否されます。 - 高度な構成を試します。 既定の構成では、MSP より前のセキュリティ規則が反映されます。これは、多くの場合、過度に制限されています。 ワークロードのカスタム構成を定義すると、最小特権アクセスの原則を適用することで、セキュリティをさらに強化できます。
完璧な進行に従う必要はありません。心配しないでください。 MSP の有効化レベルは、セキュリティを大幅に向上させ、ほとんどの実際の攻撃から保護するのに役立ちます。