この記事では、Azure Resource Graph を使用して Azure Firewall ルール コレクション グループの変更を監視および追跡する方法について説明します。 変更の追跡は、規則セットの変更の詳細な履歴を提供することで、セキュリティ コンプライアンスの維持、構成の変更の監査、および問題のトラブルシューティングに役立ちます。
Azure Resource Graph には、Azure Firewall ルール コレクション グループで変更が検出されたタイミングを追跡するのに役立つ変更分析データが用意されています。 プロパティ変更の詳細を表示し、サブスクリプション、管理グループ、またはテナント全体で大規模にクエリを実行できます。
Azure Firewall 規則コレクション グループの変更追跡を使用すると、次のことが可能になります。
- 構成の変更を監視する: ファイアウォール規則とポリシーに対するすべての変更を追跡する
- コンプライアンスの維持: セキュリティとコンプライアンスの要件に対する監査証跡を生成する
- 問題のトラブルシューティング: 接続に影響を与える可能性のある変更が行われたタイミングを特定する
- 傾向の分析: 時間の経過に伴うルール変更のパターンを理解する
[前提条件]
ルール セットの変更を追跡する前に、次の要件を満たしていることを確認します。
- 規則コレクション グループが構成された Azure Firewall がある
- Azure Resource Graph にアクセスするための適切なアクセス許可がある
- Azure Firewall で Azure Firewall ポリシーが使用されている (クラシック ルールではない)
Azure Resource Graph エクスプローラーにアクセスする
変更追跡クエリを実行するには、Azure Resource Graph エクスプローラーにアクセスする必要があります。
- Azure ポータル にサインインする
- Resource Graph エクスプローラーを検索して選択する
- クエリ ウィンドウでは、次のセクションで説明する変更追跡クエリを実行できます。
基本的な変更追跡クエリ
このクエリを使用して、Azure Firewall 規則コレクション グループに対するすべての変更の包括的なビューを取得します。
networkresourcechanges
| where properties contains "microsoft.network/firewallpolicies/rulecollectiongroups"
| extend parsedProperties = parse_json(properties)
| extend TargetResource = tostring(parsedProperties.targetResourceId),
Timestamp = todatetime(parsedProperties.changeAttributes.timestamp),
Changes = todynamic(parsedProperties.changes),
ChangeType = tostring(parsedProperties.changeType),
PreviousSnapshotId = tostring(parsedProperties.changeAttributes.previousResourceSnapshotId),
NewSnapshotId = tostring(parsedProperties.changeAttributes.newResourceSnapshotId),
CorrelationId = tostring(parsedProperties.changeAttributes.correlationId),
ChangesCount = toint(parsedProperties.changeAttributes.changesCount),
TenantId = tostring(tenantId),
Location = tostring(location),
SubscriptionId = tostring(subscriptionId),
ResourceGroup = tostring(resourceGroup),
FirewallPolicyName = extract('/firewallPolicies/([^/]+)/', 1, tostring(id))
| mv-expand ChangeKey = bag_keys(Changes)
| extend ChangeDetails = todynamic(Changes[tostring(ChangeKey)])
| extend RuleCollectionName = extract('properties\\.ruleCollections\\["([^"]+)"\\]', 1, tostring(ChangeKey))
| where isnotempty(RuleCollectionName)
| summarize Changes = make_list(pack("ChangeKey", ChangeKey, "PreviousValue", tostring(ChangeDetails.previousValue), "NewValue", tostring(ChangeDetails.newValue)))
by Timestamp = format_datetime(Timestamp, 'yyyy-MM-dd HH:mm:ss'),
TenantId,
SubscriptionId,
ResourceGroup,
Location,
TargetResource,
FirewallPolicyName,
RuleCollectionName,
ChangeType,
PreviousSnapshotId,
NewSnapshotId,
CorrelationId,
ChangesCount
| project Timestamp,
TenantId,
SubscriptionId,
ResourceGroup,
Location,
TargetResource,
FirewallPolicyName,
RuleCollectionName,
ChangeType,
PreviousSnapshotId,
NewSnapshotId,
CorrelationId,
ChangesCount,
Changes
| order by Timestamp desc
クエリ結果について
変更追跡クエリは、検出された変更ごとに次の情報を返します。
| フィールド | Description |
|---|---|
| タイムスタンプ | 変更が発生したとき |
| SubscriptionId | ファイアウォールを含む Azure サブスクリプション |
| ResourceGroup | ファイアウォール ポリシーを含むリソース グループ |
| FirewallPolicyName | 影響を受けるファイアウォール ポリシーの名前 |
| RuleCollectionName | 影響を受ける規則コレクションの名前 |
| ChangeType | 変更の種類 (作成、更新、削除) |
| 変更回数 | 変更されたプロパティの数 |
| 変更点 | 変更された内容の詳細な一覧 (以前の値と新しい値を含む) |
| CorrelationId | 一意の識別子が関連変更をリンクします。 |
期間で変更をフィルターする
最近の変更に焦点を当てるには、クエリに時間フィルターを追加します。
networkresourcechanges
| where properties contains "microsoft.network/firewallpolicies/rulecollectiongroups"
| where todatetime(properties.changeAttributes.timestamp) >= ago(7d) // Last 7 days
// ... rest of query
特定のファイアウォール ポリシーでフィルター処理する
特定のファイアウォール ポリシーの変更を追跡するには:
networkresourcechanges
| where properties contains "microsoft.network/firewallpolicies/rulecollectiongroups"
| where id contains "/firewallPolicies/your-policy-name"
// ... rest of query
自動監視を設定する
継続的な監視を行う場合は、次の設定を検討してください。
- スケジュールされたクエリ: Azure Logic Apps または Azure Automation を使用してスケジュールに従ってクエリを実行する
- アラート: 変更パターンに基づいて Azure Monitor アラートを作成する
- レポート: レポート用のストレージまたは視覚化ツールに結果をエクスポートする
ベスト プラクティス
ルール セットの変更の追跡を実装する場合:
- 定期的な監視: 変更を迅速にキャッチするように定期的なクエリ実行を設定する
- アイテム保持ポリシー: コンプライアンスのために変更データの長期保存を計画する
- アクセス制御: セキュリティ要件に基づいて変更追跡データへのアクセスを制限する
- 統合: 既存の SIEM または監視ツールとの統合を検討する
トラブルシューティング
結果に予想される変更が表示されない場合:
- Azure Firewall Policy を使用していることを確認します (クラシック ルールではありません)
- クエリ内の期間に変更が発生した日時が含まれているかどうかを確認する
- Azure Resource Graph にアクセスするために必要なアクセス許可があることを確認する
- フィルター内のリソース名が正しいことを確認する