이 문서에서는 Azure Resource Graph를 사용하여 Azure Firewall 규칙 컬렉션 그룹의 변경 내용을 모니터링하고 추적하는 방법을 보여줍니다. 변경 내용 추적을 사용하면 규칙 집합 수정에 대한 자세한 기록을 제공하여 보안 준수를 유지하고, 구성 수정을 감사하고, 문제를 해결할 수 있습니다.
Azure Resource Graph는 Azure Firewall 규칙 컬렉션 그룹에서 변경 내용이 검색된 시기를 추적하는 데 도움이 되는 변경 분석 데이터를 제공합니다. 구독, 관리 그룹 또는 테넌트 전체에서 속성 변경 세부 정보 및 쿼리 변경 내용을 대규모로 볼 수 있습니다.
Azure Firewall 규칙 컬렉션 그룹에 대한 변경 내용 추적을 사용하면 다음을 수행할 수 있습니다.
- 구성 변경 모니터링: 방화벽 규칙 및 정책에 대한 모든 수정 내용 추적
- 규정 준수 유지 관리: 보안 및 규정 준수 요구 사항에 대한 감사 내역 생성
- 문제 해결: 연결에 영향을 줄 수 있는 변경 내용 식별
- 추세 분석: 시간에 따른 규칙 수정 패턴 이해
필수 조건
규칙 집합 변경 내용을 추적하기 전에 다음 요구 사항을 충족하는지 확인합니다.
- 구성된 규칙 컬렉션 그룹이 있는 Azure Firewall이 있습니다.
- Azure Resource Graph에 액세스할 수 있는 적절한 권한이 있습니다.
- Azure Firewall에서 Azure Firewall Policy를 사용하고 있습니다(클래식 규칙이 아님).
Azure Resource Graph Explorer에 액세스
변경 내용 추적 쿼리를 실행하려면 Azure Resource Graph Explorer에 액세스해야 합니다.
- Azure 포털에 로그인하세요.
- Resource Graph Explorer 검색 및 선택
- 쿼리 창에서 다음 섹션에 설명된 변경 내용 추적 쿼리를 실행할 수 있습니다.
기본 변경 내용 추적 쿼리
이 쿼리를 사용하여 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 경고 만들기
- 보고서: 보고를 위해 스토리지 또는 시각화 도구로 결과 내보내기
모범 사례
규칙 집합 변경 내용 추적을 구현하는 경우:
- 정기 모니터링: 변경 내용을 즉시 catch하도록 정기적인 쿼리 실행 설정
- 보존 정책: 규정 준수를 위해 변경 데이터의 장기 스토리지 계획
- 액세스 제어: 보안 요구 사항에 따라 변경 내용 추적 데이터에 대한 액세스 제한
- 통합: 기존 SIEM 또는 모니터링 도구와 통합하는 것이 좋습니다.
Troubleshooting
결과에 예상되는 변경 내용이 표시되지 않는 경우:
- Azure Firewall Policy를 사용하고 있는지 확인합니다(클래식 규칙이 아님).
- 변경이 발생한 경우 쿼리의 기간이 적용되는지 확인합니다.
- Azure Resource Graph에 액세스하는 데 필요한 권한이 있는지 확인합니다.
- 필터의 리소스 이름이 올바른지 확인합니다.