Exemplos de consultas do Azure Resource Graph para Azure Key Vault

Esta página é uma coleção de consultas de exemplo do Azure Resource Graph para o Azure Key Vault.

Exemplos de consultas

Contar recursos do cofre de chaves

Esta consulta usa count em vez de summarize contar o número de registros retornados. Apenas os cofres de chaves estão incluídos na contagem.

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

Cofres de chaves sem a eliminação reversível ativada

Esta consulta identifica os cofres de chaves que não têm a eliminação suave ativada, que é uma funcionalidade de segurança crítica que permite a recuperação de objetos do cofre de chaves eliminados.

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"

Cofres de chaves sem a proteção de purga ativada

Esta consulta encontra cofres de chaves que não têm proteção contra purga ativada. A proteção contra eliminações é recomendada para ambientes de produção para evitar a eliminação permanente de objetos do Cofre de Chaves durante o período de retenção.

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"

Cofres de chaves usando autorização RBAC

Esta consulta lista cofres de chaves que utilizam Azure RBAC para autorização em vez de políticas de acesso. A autorização RBAC é a abordagem recomendada para gerir o acesso ao plano de dados do cofre de chaves.

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"

Cofres de chaves com acesso à rede pública ativado

Esta consulta identifica cofres de chave que permitem o acesso à rede pública. Para maior segurança, considere restringir o acesso a redes específicas ou utilizar endpoints privados.

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"

Resumo da configuração de segurança dos cofres de chaves

Esta consulta fornece um resumo abrangente da postura de segurança para todos os vaults-chave, incluindo o estado de eliminação suave, proteção contra purgas, autorização RBAC e definições de rede.

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"

Cofres de chaves por localização

Esta consulta conta os cofres de chaves agrupados por região do Azure, o que é útil para compreender a distribuição geográfica dos seus recursos de gestão de chaves.

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"

Cofres de chaves por tipo de SKU

Esta consulta agrupa os cofres de chaves pelo seu nível SKU (padrão ou premium). Os SKUs premium são obrigatórios para teclas protegidas por HSM.

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"

Cofres de chaves com nome de subscrição

A consulta a seguir mostra um uso complexo de join com tipo como leftouter. A consulta limita a tabela unida a recursos de assinaturas e inclui project apenas o campo original subscriptionId e o campo name renomeado para SubName. A renomeação de join campo evita adicioná-lo como nome1 , uma vez que o campo já existe em recursos. A tabela original é filtrada com where e o seguinte project inclui colunas de ambas as tabelas. O resultado da consulta são todos os cofres de chaves exibindo o tipo, o nome do cofre de chaves e o nome da assinatura em que ele está.

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"

Próximos passos