Azure Resource Graph-Beispielabfragen für Azure Key Vault

Diese Seite enthält eine Sammlung von Azure Resource Graph-Beispielabfragen für Azure Key Vault.

Beispielabfragen

Anzahl von Schlüsseltresor-Ressourcen

Diese Abfrage verwendet count anstelle von summarize, um die Anzahl der zurückgegebenen Datensätze zu zählen. In der Anzahl sind nur Schlüsseltresore enthalten.

Resources
| where type =~ 'microsoft.keyvault/vaults'
| count
az graph query -q "Resources | where type =~ 'microsoft.keyvault/vaults' | count"

Schlüsseltresore ohne aktiviertes vorläufiges Löschen

Diese Abfrage identifiziert Schlüsseltresor, die keine Vorläufige Löschung aktiviert haben, was ein wichtiges Sicherheitsfeature ist, das die Wiederherstellung gelöschter Schlüsseltresorobjekte ermöglicht.

Resources
| where type =~ 'microsoft.keyvault/vaults'
| where properties.enableSoftDelete == false or isnull(properties.enableSoftDelete)
| project name, resourceGroup, subscriptionId, location, properties.enableSoftDelete
az graph query -q "Resources | where type =~ 'microsoft.keyvault/vaults' | where properties.enableSoftDelete == false or isnull(properties.enableSoftDelete) | project name, resourceGroup, subscriptionId, location, properties.enableSoftDelete"

Schlüsseltresore ohne aktivierten Bereinigungsschutz

Diese Abfrage findet Schlüsseltresore, die keinen Schutz vor Löschung aktiviert haben. Der Bereinigungsschutz wird für Produktionsumgebungen empfohlen, um das dauerhafte Löschen von Schlüsseltresorobjekten während des Aufbewahrungszeitraums zu verhindern.

Resources
| where type =~ 'microsoft.keyvault/vaults'
| where properties.enablePurgeProtection != true
| project name, resourceGroup, subscriptionId, location, softDeleteEnabled = properties.enableSoftDelete, purgeProtectionEnabled = properties.enablePurgeProtection
az graph query -q "Resources | where type =~ 'microsoft.keyvault/vaults' | where properties.enablePurgeProtection != true | project name, resourceGroup, subscriptionId, location, softDeleteEnabled = properties.enableSoftDelete, purgeProtectionEnabled = properties.enablePurgeProtection"

Schlüsseltresore mit Autorisierung über RBAC

Diese Abfrage listet Schlüssel-Tresore auf, die Azure RBAC für die Autorisierung statt Zugriffsrichtlinien verwenden. Die RBAC-Autorisierung ist der empfohlene Ansatz für die Verwaltung des Zugriffs auf die Key Vault-Datenebene.

Resources
| where type =~ 'microsoft.keyvault/vaults'
| extend rbacEnabled = properties.enableRbacAuthorization
| project name, resourceGroup, subscriptionId, location, rbacEnabled
| where rbacEnabled == true
az graph query -q "Resources | where type =~ 'microsoft.keyvault/vaults' | extend rbacEnabled = properties.enableRbacAuthorization | project name, resourceGroup, subscriptionId, location, rbacEnabled | where rbacEnabled == true"

Schlüsseltresore mit aktiviertem Zugriff für öffentliche Netzwerke

Diese Abfrage identifiziert Schlüsseltresor, die den Zugriff auf öffentliche Netzwerke ermöglichen. Um die Sicherheit zu erhöhen, sollten Sie den Zugriff auf bestimmte Netzwerke einschränken oder private Endpunkte verwenden.

Resources
| where type =~ 'microsoft.keyvault/vaults'
| extend networkDefaultAction = tostring(properties.networkAcls.defaultAction)
| where networkDefaultAction =~ 'Allow' or isnull(networkDefaultAction)
| project name, resourceGroup, subscriptionId, location, networkDefaultAction
az graph query -q "Resources | where type =~ 'microsoft.keyvault/vaults' | extend networkDefaultAction = tostring(properties.networkAcls.defaultAction) | where networkDefaultAction =~ 'Allow' or isnull(networkDefaultAction) | project name, resourceGroup, subscriptionId, location, networkDefaultAction"

Zusammenfassung der Sicherheitskonfiguration von Schlüsseltresoren

Diese Abfrage bietet eine umfassende Zusammenfassung der Sicherheitsposition für alle Schlüsseltresore, einschließlich Soft Delete-Status, Bereinigungsschutz, RBAC-Autorisierung und Netzwerkeinstellungen.

Resources
| where type =~ 'microsoft.keyvault/vaults'
| extend 
    softDeleteEnabled = tobool(properties.enableSoftDelete),
    purgeProtectionEnabled = tobool(properties.enablePurgeProtection),
    rbacEnabled = tobool(properties.enableRbacAuthorization),
    networkDefaultAction = tostring(properties.networkAcls.defaultAction),
    sku = tostring(properties.sku.name)
| project name, resourceGroup, subscriptionId, location, sku, softDeleteEnabled, purgeProtectionEnabled, rbacEnabled, networkDefaultAction
| order by name asc
az graph query -q "Resources | where type =~ 'microsoft.keyvault/vaults' | extend softDeleteEnabled = tobool(properties.enableSoftDelete), purgeProtectionEnabled = tobool(properties.enablePurgeProtection), rbacEnabled = tobool(properties.enableRbacAuthorization), networkDefaultAction = tostring(properties.networkAcls.defaultAction), sku = tostring(properties.sku.name) | project name, resourceGroup, subscriptionId, location, sku, softDeleteEnabled, purgeProtectionEnabled, rbacEnabled, networkDefaultAction | order by name asc"

Schlüsseltresore nach Standort

Diese Abfrage zählt Schlüsseltresore, die nach Azure-Regionen gruppiert sind, und ist nützlich, um die geografische Verteilung Ihrer Schlüsselverwaltungsressourcen zu verstehen.

Resources
| where type =~ 'microsoft.keyvault/vaults'
| summarize count() by location
| order by count_ desc
az graph query -q "Resources | where type =~ 'microsoft.keyvault/vaults' | summarize count() by location | order by count_ desc"

Key Vaults nach SKU-Typen

Diese Abfrage gruppiert die Schlüsseltresore nach ihrer SKU-Stufe (Standard oder Premium). Premium-SKUs sind für HSM-geschützte Schlüssel erforderlich.

Resources
| where type =~ 'microsoft.keyvault/vaults'
| extend skuName = tostring(properties.sku.name)
| summarize count() by skuName
az graph query -q "Resources | where type =~ 'microsoft.keyvault/vaults' | extend skuName = tostring(properties.sku.name) | summarize count() by skuName"

Schlüsseltresore mit Abonnementname

Die folgende Abfrage zeigt eine komplexe Verwendung von join mit kind als leftouter. Die Abfrage schränkt die verknüpfte Tabelle auf Abonnementressourcen ein, und mit project wird nur das ursprüngliche Feld subscriptionId einbezogen, und das Feld name wird in SubName umbenannt. Beim Umbenennen des Felds wird das Hinzufügen von join als name1 vermieden, da das Feld bereits unter resources vorhanden ist. Die ursprüngliche Tabelle wird mit where gefiltert, und das folgende project-Element enthält Spalten aus beiden Tabellen. Das Abfrageergebnis enthält alle Schlüsseltresore mit Typ, Name des Schlüsseltresors und Name des Abonnements, in dem er sich befindet.

Resources
| join kind=leftouter (ResourceContainers | where type=='microsoft.resources/subscriptions' | project SubName=name, subscriptionId) on subscriptionId
| where type == 'microsoft.keyvault/vaults'
| project type, name, SubName
az graph query -q "Resources | join kind=leftouter (ResourceContainers | where type=='microsoft.resources/subscriptions' | project SubName=name, subscriptionId) on subscriptionId | where type == 'microsoft.keyvault/vaults' | project type, name, SubName"

Nächste Schritte