Biztonsági másolatok lekérdezése az Azure Resource Graph (ARG) használatával

Ez a cikk azt ismerteti, hogyan kérdezheti le az Azure-erőforrások biztonsági mentési adatait az Azure Resource Graph (ARG) használatával további költségek nélkül. Az ARG kibővíti az Azure Resource Managementet, és lehetővé teszi az erőforrások hatékony és nagy léptékű felfedezését több előfizetésben.

Az Azure Resource Graph biztonsági mentési metaadatainak használatának főbb előnyei

A biztonsági másolat metaadatainak lekérdezéséhez az ARG fő előnyei a következők:

  • Az előfizetések erőforrásainak lekérdezése speciális szűréssel, csoportosítással és rendezéssel erőforrástulajdonságok szerint.
  • Valós idejű biztonsági mentési adatok elérése, beleértve az aktív biztonsági mentési feladatokat is.
  • Egyesítse a biztonsági mentési adatokat a kapcsolódó Azure-erőforrásadatokkal, például a virtuális gépekkel és a tárfiókokkal.

Első lépések

A biztonsági másolatok ARG használatával történő lekérdezésének megkezdéséhez kövesse az alábbi lépéseket:

  1. Keresse meg a Resource Graph Explorert az Azure Portalon. Válassza ki ugyanezt az ARG lekérdezésszerkesztőbe való átirányításhoz.

    Keresés az Azure-erőforráscsoportban

    A bal oldali panelen megjelenik a lekérdezéshez elérhető összes tábla (és a hozzájuk tartozó sémák).

    • A RecoveryServicesResources tábla tartalmazza a legtöbb biztonsági mentéssel kapcsolatos rekordot, például a feladat adatait, a biztonsági mentési példány részleteit. és így tovább.
    • Az Erőforrások tábla az összes legfelső szintű Azure-erőforrásról tartalmaz információkat, például a Recovery Services-tárolókról, az Azure-beli virtuális gépekről, a tárfiókokról stb.

    Elérhető táblák és társított sémák a lekérdezéshez

  2. A táblák adatainak megismeréséhez írja be a Kusto-lekérdezéseket a lekérdezésszerkesztőbe, és kattintson a Lekérdezés futtatása parancsra.

    A lekérdezések kimenetét CSV-ként töltheti le a Resource Graph Explorerből. Ezeket a lekérdezéseket az egyéni automatizálásban is használhatja az ARG által támogatott automatizálási ügyfelek, például a PowerShell, a PARANCSSOR vagy az SDK használatával. Egyéni munkafüzeteket is létrehozhat az Azure Portalon az ARG adatforrásként való használatával.

Feljegyzés

  • A legfeljebb 14 napos biztonsági mentési/visszaállítási feladatok az ARG-ben érhetők el lekérdezéshez. Ha előzményrekordokat szeretne lekérdezni, javasoljuk, hogy használja az Azure Monitor-naplókat.
  • Az ARG segítségével lekérdezheti azokat az erőforrásokat, amelyekhez megfelelő RBAC-jogosultságokkal rendelkezik.

Minta lekérdezések

Az alábbiakban néhány minta ARG-lekérdezést láthat a biztonsági mentési adatokról, amelyeket egyéni irányítópultokon és automatizálásokban használhat.

A biztonsági mentéshez konfigurált összes Azure-beli virtuális gép listázása

RecoveryServicesResources 
| where type in~ ('Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems')
| extend vaultName = case(type =~ 'microsoft.dataprotection/backupVaults/backupInstances',split(split(id, '/Microsoft.DataProtection/backupVaults/')[1],'/')[0],type =~ 'Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems',split(split(id, '/Microsoft.RecoveryServices/vaults/')[1],'/')[0],'--')
| extend dataSourceType = case(type=~'Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems',properties.backupManagementType,type =~ 'microsoft.dataprotection/backupVaults/backupInstances',properties.dataSourceSetInfo.datasourceType,'--')
| extend friendlyName = properties.friendlyName
| extend dsResourceGroup = split(split(properties.dataSourceInfo.resourceID, '/resourceGroups/')[1],'/')[0]
| extend dsSubscription = split(split(properties.dataSourceInfo.resourceID, '/subscriptions/')[1],'/')[0]
| extend lastRestorePoint = properties.lastRecoveryPoint
| extend primaryLocation = properties.dataSourceInfo.resourceLocation
| extend policyName = case(type =~ 'Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems',properties.policyName, type =~ 'microsoft.dataprotection/backupVaults/backupInstances', properties.policyInfo.name, '--')
| extend protectionState = properties.currentProtectionState
| where protectionState in~ ('ConfiguringProtection','ProtectionConfigured','ConfiguringProtectionFailed','ProtectionStopped','SoftDeleted','ProtectionError')

Az Azure Database for PostgreSQL-kiszolgálók összes biztonsági mentési feladatának listázása az elmúlt egy hétben

RecoveryServicesResources 
| where type in~ ('Microsoft.DataProtection/backupVaults/backupJobs')
| extend vaultName = case(type =~ 'microsoft.dataprotection/backupVaults/backupJobs',properties.vaultName,type =~ 'Microsoft.RecoveryServices/vaults/backupJobs',split(split(id, '/Microsoft.RecoveryServices/vaults/')[1],'/')[0],'--')
| extend friendlyName = case(type =~ 'microsoft.dataprotection/backupVaults/backupJobs',strcat(properties.dataSourceSetName , '/', properties.dataSourceName),type =~ 'Microsoft.RecoveryServices/vaults/backupJobs', properties.entityFriendlyName, '--')
| extend dataSourceType = case(type =~ 'Microsoft.RecoveryServices/vaults/backupJobs',properties.backupManagementType,type =~ 'microsoft.dataprotection/backupVaults/backupJobs',properties.dataSourceType,'--')
| extend backupInstanceName = properties.backupInstanceId
| extend dsResourceGroup = split(split(properties.dataSourceId, '/resourceGroups/')[1],'/')[0]| extend dsSubscription = split(split(properties.dataSourceId, '/subscriptions/')[1],'/')[0]
| extend status = properties.status
| extend dataSourceId = properties.dataSourceId
| extend primaryLocation = properties.dataSourceLocation
| extend jobStatus = case (properties.status == 'Completed' or properties.status == 'CompletedWithWarnings','Succeeded',properties.status == 'Failed','Failed',properties.status == 'InProgress', 'Started', properties.status), operation = case(type =~ 'microsoft.dataprotection/backupVaults/backupJobs' and tolower(properties.operationCategory) =~ 'backup' and properties.isUserTriggered == 'true',strcat('adhoc',properties.operationCategory),type =~ 'microsoft.dataprotection/backupVaults/backupJobs', tolower(properties.operationCategory), type =~ 'Microsoft.RecoveryServices/vaults/backupJobs' and tolower(properties.operation) =~ 'backup' and properties.isUserTriggered == 'true',strcat('adhoc',properties.operation),type =~ 'Microsoft.RecoveryServices/vaults/backupJobs',tolower(properties.operation), '--'),startTime = todatetime(properties.startTime),endTime = properties.endTime, duration = properties.duration
| project id, name, friendlyName, resourceGroup, vaultName, dataSourceType, operation, jobStatus, startTime, duration, backupInstanceName, dsResourceGroup, dsSubscription, status, primaryLocation, dataSourceId
| where (startTime >= ago(7d))

Az összes olyan Azure-beli virtuális gép listázása, amely nincs biztonsági mentésre konfigurálva

Resources
| where type in~ ('microsoft.compute/virtualmachines','microsoft.classiccompute/virtualmachines') 
| extend resourceId=tolower(id) 
| join kind = leftouter ( RecoveryServicesResources
| where type == "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems"
| where properties.backupManagementType == "AzureIaasVM"
| project resourceId = tolower(tostring(properties.sourceResourceId)), backupItemid = id, isBackedUp = isnotempty(id) ) on resourceId 
| extend isProtected = isnotempty(backupItemid)
| where (isProtected == (0))
| project id,name,resourceGroup,location,tags

Az Azure-beli virtuális gépekhez használt összes biztonsági mentési szabályzat listázása

RecoveryServicesResources
| where type == 'microsoft.recoveryservices/vaults/backuppolicies'
| extend vaultName = case(type == 'microsoft.recoveryservices/vaults/backuppolicies', split(split(id, 'microsoft.recoveryservices/vaults/')[1],'/')[0],type == 'microsoft.recoveryservices/vaults/backuppolicies', split(split(id, 'microsoft.recoveryservices/vaults/')[1],'/')[0],'--')
| extend datasourceType = case(type == 'microsoft.recoveryservices/vaults/backuppolicies', properties.backupManagementType,type == 'microsoft.dataprotection/backupVaults/backupPolicies',properties.datasourceTypes[0],'--')
| project id,name,vaultName,resourceGroup,properties,datasourceType
| where datasourceType == 'AzureIaasVM'

Az adott biztonsági mentési szabályzathoz társított összes virtuális gép listázása

RecoveryServicesResources
| where type == "microsoft.recoveryservices/vaults/backupfabrics/protectioncontainers/protecteditems"
| project propertiesJSON = parse_json(properties)
| where propertiesJSON.backupManagementType == "AzureIaasVM"
| project VMID=propertiesJSON.sourceResourceId, PolicyID=propertiesJSON.policyId
| where PolicyID == "<ARM ID of the given policy>"

Az Azure Database for PostgreSQL-kiszolgálókhoz használt összes biztonsági mentési szabályzat listázása

RecoveryServicesResources 
| where type in~ ('Microsoft.DataProtection/BackupVaults/backupPolicies')
| extend vaultName = case(type =~ 'microsoft.dataprotection/backupVaults/backupPolicies', split(split(id, '/Microsoft.DataProtection/backupVaults/')[1],'/')[0],type =~ 'microsoft.recoveryservices/vaults/backupPolicies', split(split(id, '/Microsoft.RecoveryServices/vaults/')[1],'/')[0],'--')
| extend datasourceType = case(type =~ 'Microsoft.RecoveryServices/vaults/backupPolicies', properties.backupManagementType,type =~ 'microsoft.dataprotection/backupVaults/backupPolicies',properties.datasourceTypes[0],'--')
| project id,name,vaultName,resourceGroup,properties,datasourceType
| where (datasourceType in~ ('Microsoft.DBforPostgreSQL/servers/databases'))

Következő lépések

További információ az Azure Resource Graphról