이 문서에서는 Azure Virtual Network Manager에서 Azure Resource Graph를 사용하는 방법을 다룹니다. ARG(Azure Resource Graph)는 Azure Resource Management를 확장하여 더 나은 환경 거버넌스를 위해 지정된 구독 집합을 쿼리할 수 있도록 합니다. ARG 통합을 사용하면 ARG를 쿼리하여 AVNM(Azure Virtual Network Manager) 구성에 대한 정보를 얻을 수 있습니다. 인사이트는 리소스 수준을 제공하는 사용자 지정된 Kusto 쿼리를 통해 또는 지역 수준 상태 데이터에 제공됩니다.
가상 네트워크 관리자에서 ARG 사용
다음은 Azure Virtual Network Manager에 대한 정보를 얻기 위해 Azure Resource Graph를 사용할 수 있는 몇 가지 시나리오입니다.
- 지역 목표 상태 데이터를 검색하여 각 지역에 배포된 구성과 해당 상태를 이해합니다.
- 특정 구성이 적용된 모든 리소스를 검색합니다.
- 가상 네트워크 및 해당 프로비저닝 상태에 적용되는 유효한 구성을 검색합니다.
- 배포 프로세스 중에 성공, 실패 또는 진행 중인 가상 네트워크 수를 식별합니다.
사용 가능한 리소스
ARG에서 보안 관리자 구성을 쿼리하는 데 사용할 수 있는 리소스는 다음과 같습니다.
- microsoft.network/effectivesecurityadminrules
- microsoft.network/networkmanagers/securityadminconfigurations/rulecollections/snapshots
- microsoft.network/networkmanagers/securityadminconfigurations/rulecollections/rules/snapshots
- microsoft.network/networkmanagers/securityadminconfigurations/snapshots
- microsoft.network/networkmanagers/securityadminregionalgoalstates
시작하기
ARG에서 가상 네트워크 관리자 데이터 쿼리를 시작하려면 다음 단계를 수행합니다.
Azure Portal에서 Resource Graph 탐색기를 검색하고 ARG 쿼리 편집기에 리디렉션되는 것과 동일한 것을 선택합니다.
쿼리 편집기에서 Kusto 쿼리를 입력하고 쿼리 실행을 선택합니다.
이러한 쿼리의 출력은 Resource Graph 탐색기에서 CSV로 다운로드할 수 있습니다. 또한 PowerShell, CLI, 또는 SDK와 같이 ARG에서 지원하는 모든 자동화 클라이언트를 사용하여 사용자 지정 자동화에서 이러한 쿼리를 사용할 수 있습니다. 또한 ARG를 데이터 원본으로 사용하여 Azure Portal에서 사용자 지정 통합 문서를 만들 수 있습니다.
참고 항목
ARG를 사용하면 적절한 RBAC(역할 기반 액세스 제어) 권한이 있는 리소스를 쿼리할 수 있습니다.
샘플 쿼리
다음은 가상 네트워크 관리자 데이터에서 실행할 수 있는 샘플 쿼리입니다. 이러한 샘플 쿼리는 사용자 지정 대시보드 및 자동화에서 사용할 수 있습니다. 각 쿼리와 함께 관련된 입력 및 반환된 출력이 나열됩니다.
지정된 가상 네트워크에 영향을 주는 모든 가상 네트워크 관리자 나열
입력: 가상 네트워크의 vnetId를 입력합니다. 00000000-0000-0000-0000-000000000000 구문을 사용합니다. 출력: 가상 네트워크 관리자 ID 목록입니다.
networkresources
| where type == "microsoft.network/effectivesecurityadminrules"
| extend vnetId = "00000000-0000-0000-0000-000000000000"
| where id == strcat(vnetId,"/providers/Microsoft.Network/effectiveSecurityAdminRules/default")
| mv-expand properties.EffectiveSecurityAdminConfigurations
| mv-expand properties.effectiveSecurityAdminConfigurations
| extend configId = tolower(iff(properties_EffectiveSecurityAdminConfigurations.Id == "", properties_effectiveSecurityAdminConfigurations.id, properties_EffectiveSecurityAdminConfigurations.Id))
| extend networkManagerId = substring(configId, 0, indexof(configId, "/securityadminconfigurations/"))
| distinct networkManagerId
지정된 네트워크 관리자에 대한 최신 보안 관리자 커밋의 커밋 세부 정보 나열
입력: 가상 네트워크 관리자의 id를 입력합니다. /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkManagers/myVirtualNetworkManager 구문을 사용합니다.
출력: CommitId, CommitTimestamp, location, SecurityAdminConfigurationId, SecurityAdminRuleIds, SecurityAdminRuleCollectionIds, status 및 errorMessage를 포함한 보안 관리자 구성에 대한 커밋 세부 정보 목록입니다.
networkresources
| where type == "microsoft.network/networkmanagers/securityadminregionalgoalstates"
| where id contains tolower("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkManagers/myVirtualNetworkManager")
| extend adminConfigurationId = tolower(iff(properties.securityAdminConfigurations[0].id == "", properties.SecurityAdminConfigurations[0].Id, properties.securityAdminConfigurations[0].id))
| extend adminRuleCollectionIds = todynamic(iff(properties.securityAdminRuleCollections == "", properties.SecurityAdminRuleCollections, properties.securityAdminRuleCollections))
| extend adminRuleIds = todynamic(iff(properties.securityAdminRules == "", properties.SecurityAdminRules, properties.securityAdminRules))
| extend commitId = iff(properties.commitId == "", properties.CommitId, properties.commitId)
| extend timeStamp = todatetime(iff(properties.commitTimestamp == "", properties.CommitTimestamp, properties.commitTimestamp))
| extend status = iff(properties.status == "", properties.Status, properties.status)
| extend errorMessage = iff(properties.errorMessage == "" and properties.ErrorMessage == "", "", iff(properties.errorMessage == "", properties.ErrorMessage, properties.errorMessage))
| order by timeStamp desc
| project commitId, timeStamp, location, adminConfigurationId, adminRuleCollectionIds, adminRuleIds, status, errorMessage
지정된 보안 관리자 구성의 영향을 받는 가상 네트워크 수
입력: 보안 관리자 구성 스냅샷의 adminConfigurationID를 입력합니다. 다음 구문을 사용합니다. "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkManagers/myVirtualNetworkManager/securityAdminConfigurations/config_2023-05-15-15-07-27/snapshots/0"
출력: Region, successCount 및 failedcount를 포함하여 영향을 받은 가상 네트워크를 나열합니다.
참고 항목
보안 관리자 구성 스냅샷의 adminConfigurationId입니다. 목록 커밋 세부 정보 쿼리의 출력에서 이 ID를 가져올 수 있습니다.
networkresources
| where type == "microsoft.network/effectivesecurityadminrules"
| extend snapshotConfigIdToCheck = tolower("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkManagers/myVirtualNetworkManager/securityAdminConfigurations/config_2023-05-15-15-07-27/snapshots/0")
| mv-expand properties.effectiveSecurityAdminConfigurations
| mv-expand properties.EffectiveSecurityAdminConfigurations
| extend configurationId = tolower(iff(properties_effectiveSecurityAdminConfigurations.id == "", properties_EffectiveSecurityAdminConfigurations.Id, properties_effectiveSecurityAdminConfigurations.id))
| extend provisioningState = tolower(iff(properties.ProvisioningState == "", properties.provisioningState, properties.ProvisioningState))
| where configurationId == snapshotConfigIdToCheck
| summarize count() by location, provisioningState
다음 단계
Azure Portal을 사용하여 Azure Virtual Network Manager 인스턴스를 만듭니다.