Obter dados de conformidade de recursos do Azure
Os maiores benefícios do Azure Policy são o insight e os controles que ele fornece sobre os recursos em uma assinatura ou grupo de gerenciamento de assinaturas. Esse controle pode impedir que recursos sejam criados na localização errada, impor o uso comum e consistente de rótulos ou auditar recursos existentes para verificar se há configurações e definições apropriadas. Em todos os casos, o Azure Policy gera dados que permitem entender o estado de conformidade do seu ambiente.
Antes de analisar os dados de conformidade, é importante entender os estados de conformidade no Azure Policy.
Há várias maneiras de acessar as informações de conformidade geradas por sua política e iniciativas de atribuições:
- Portal do Azure.
- Linha de comando.
- Logs do Azure Monitor.
- Consultas do Azure Resource Graph.
Antes de examinar os métodos de relatório de conformidade, vamos ver quando as informações de conformidade são atualizadas, além da frequência e dos eventos que disparam um ciclo de avaliação.
Gatilhos de avaliação
Os resultados de um ciclo de avaliação concluído estão disponíveis no Provedor de Recursos Microsoft.PolicyInsights
por meio das operações PolicyStates
e PolicyEvents
. Para saber mais sobre as operações da API REST de Insights do Azure Policy, confira Insights do Azure Policy.
As avaliações de políticas atribuídas e iniciativas ocorrem como resultado de diversos eventos:
- Uma política ou iniciativa foi recentemente atribuída a um escopo. A atribuição leva cerca de cinco minutos para ser aplicada ao escopo definido e, em seguida, o ciclo de avaliação começa para os recursos aplicáveis em relação à política ou iniciativa recém-atribuída. Dependendo dos efeitos usados, os recursos são marcados como em conformidade, sem conformidade, isentos ou desconhecidos. Pode ser demorado avaliar uma grande política ou iniciativa em relação a um grande escopo de recursos, portanto não há uma expectativa predefinida de quando o ciclo de avaliação será concluído. Após a conclusão, os resultados atualizados de conformidade estarão disponíveis no portal e nos Kits de Desenvolvimento de Software (SDKs).
- Uma política ou iniciativa já atribuída a um escopo foi atualizada. O ciclo de avaliação e o tempo desse cenário são iguais aos de uma nova atribuição a um escopo.
- Um recurso é implantado ou atualizado dentro de um escopo com uma atribuição via Azure Resource Manager, API REST ou um SDK com suporte. Nesse cenário, o evento de efeito (anexar, auditar, negar, implantar) e as informações de status compatíveis com o recurso individual ficam disponíveis no portal e nos SDKs por volta de 15 minutos depois. Este evento não causa uma avaliação de outros recursos.
- Uma assinatura (tipo de recurso
Microsoft.Resources/subscriptions
) é criada ou movida dentro de uma hierarquia de grupo de gerenciamento com uma definição de política atribuída visando o tipo de recurso de assinatura. A avaliação dos efeitos com suporte da assinatura (audit, auditIfNotExist, deployIfNotExists, modify), registro em log e qualquer ação de correção leva cerca de 30 minutos. - Uma isenção de política é criada, atualizada ou excluída. Messe cenário, é realizada a avaliação da atribuição correspondente para verificar se ela está no escopo de isenção definido.
- Ciclo de avaliação de conformidade padrão. Uma vez a cada 24 horas, as atribuições são automaticamente reavaliadas. Uma política ou iniciativa grande com muitos recursos pode levar tempo, portanto, não há expectativa predefinida de quando o ciclo de avaliação será concluído. Após a conclusão, os resultados de conformidade atualizados estarão disponíveis no Portal e nos SDKs.
- O provedor de recursos Configuração de máquina é atualizado com detalhes de conformidade por um recurso gerenciado.
- Verificação sob demanda.
Observação
Por design, a Azure Policy isenta da avaliação de política todos os recursos do provedor de recursos Microsoft.Resources
, exceto assinaturas e grupos de recursos, que podem ser avaliados.
Exame de avaliação sob demanda
Uma verificação de avaliação para uma assinatura ou um grupo de recursos pode ser iniciada com REST, CLI do Azure, Azure PowerShell, extensão Azure Policy para Visual Studio Code ou Ação de Verificação de Conformidade do Azure Policy no GitHub. As verificações sob demanda são um processo assíncrono que leva muito tempo para ser executado, pois os recursos são avaliados em relação a todas as políticas atribuídas.
Observação
Nem todos os provedores de recursos do Azure dão suporte a verificações de avaliação sob demanda. Por exemplo, atualmente, o AVNM (Gerenciador de Rede Virtual do Azure) não dá suporte a gatilhos manuais nem ao ciclo de avaliação de conformidade de política padrão (verificações diárias).
Verificação de avaliação sob demanda usando REST
Dessa forma, o ponto de extremidade REST para iniciar o exame não espera até que o exame seja concluído para responder. Em vez disso, ele fornece um URI para consultar o status da avaliação solicitada.
Em cada URI da API REST, há variáveis usadas que precisam ser substituídas com seus próprios valores:
-
{resourceGroupName}
: Substitua pelo nome do seu grupo de recursos. -
{subscriptionId}
: Substitua pela sua ID de assinatura.
O exame dá suporte à avaliação de recursos em uma assinatura ou em um grupo de recursos. Inicie uma verificação por escopo com um comando POST da API REST usando as seguintes estruturas de URI:
Use o seguinte comando para avaliar uma assinatura. Você pode executar o comando no navegador em Estados de Política – Disparar a Avaliação de Assinatura usando a opção Experimentar.
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
Use o seguinte comando para avaliar um grupo de recursos. Você pode executar o comando no navegador em Estados de Política – Iniciar Avaliação do Grupo de Recursos usando a opção Experimentar.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
As chamadas à API REST de assinatura e grupo de recursos retornam um status 202 Aceito. No cabeçalho de resposta, está incluída uma propriedade location
com o seguinte formato:
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/asyncOperationResults/{ResourceContainerGUID}?api-version=2019-10-01
{ResourceContainerGUID}
é estaticamente gerado para o escopo solicitado. Se um escopo já estiver executando um exame sob demanda, um novo exame não será iniciado. Em vez disso, a nova solicitação recebe o mesmo URI location
{ResourceContainerGUID}
de status. Um comando GET de API REST para o URI location
retorna 202 Aceito enquanto a avaliação está em andamento. Quando a verificação de avaliação for concluída, ela retornará um status 200 OK. O corpo de uma verificação concluída é uma resposta JSON com o status: succeeded
.
Verificação de avaliação sob demanda usando a CLI do Azure
A verificação de conformidade é iniciada com o comando az policy state trigger-scan.
Por padrão, az policy state trigger-scan
inicia uma avaliação para todos os recursos na assinatura atual. Para iniciar uma avaliação em um grupo de recursos específico, use o parâmetro resource-group
. O exemplo a seguir inicia uma digitalização de conformidade na assinatura atual para um grupo de recursos. Substitua resourceGroupName
pelo nome do grupo de recursos:
az policy state trigger-scan --resource-group "resourceGroupName"
Você não precisa aguardar o fim do processo assíncrono para continuar com o parâmetro no-wait
.
Verificação de avaliação sob demanda usando o Azure PowerShell
A verificação de conformidade é iniciada com o cmdlet Start-AzPolicyComplianceScan.
Por padrão, Start-AzPolicyComplianceScan
inicia uma avaliação para todos os recursos na assinatura atual. Para iniciar uma avaliação em um grupo de recursos específico, use o parâmetro ResourceGroupName
. O exemplo a seguir inicia uma digitalização de conformidade na assinatura atual para um grupo de recursos. Substitua resourceGroupName
pelo nome do grupo de recursos:
Start-AzPolicyComplianceScan -ResourceGroupName 'resourceGroupName'
Você pode fazer com que o PowerShell aguarde até que a chamada assíncrona seja concluída antes de fornecer a saída dos resultados ou que ela seja executada em segundo plano como um trabalho. Para usar um trabalho do PowerShell ao executar a verificação de conformidade em segundo plano, utilize o parâmetro AsJob
e defina o valor como um objeto, como $job
neste exemplo:
$job = Start-AzPolicyComplianceScan -AsJob
Você pode verificar o status do trabalho verificando o objeto $job
. O trabalho é do tipo Microsoft.Azure.Commands.Common.AzureLongRunningJob
. Use Get-Member
no objeto $job
para ver as propriedades e os métodos disponíveis.
Enquanto a verificação de conformidade está em execução, a verificação dos resultados de saída do objeto de $job
, como:
$job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
2 Long Running O... AzureLongRunni... Running True localhost Start-AzPolicyCompliance...
Quando a verificação de conformidade for concluída, a propriedade State
mudará para Concluído.
Verificação de avaliação sob demanda usando o Visual Studio Code
A extensão do Azure Policy para o Visual Studio Code tem a capacidade de executar uma verificação de avaliação para um recurso específico. Essa verificação é um processo síncrono, ao contrário dos métodos Azure PowerShell e REST. Veja mais detalhes e instruções em Avaliação sob demanda com a extensão VS Code.
Verificação de avaliação sob demanda usando GitHub Actions
Use a ação de Verificação de Conformidade do Azure Policy para disparar uma verificação de avaliação sob demanda do seu fluxo de trabalho do GitHub em um ou vários recursos, grupos de recursos ou assinaturas e alterar o caminho do fluxo de trabalho com base no estado de conformidade desses recursos. Você também pode configurar o fluxo de trabalho para ser executado em um horário agendado para obter o último status de conformidade em um horário conveniente. Opcionalmente, o GitHub Actions pode gerar um relatório sobre o estado de conformidade de recursos verificados para análise posterior ou arquivamento.
O exemplo a seguir executa uma verificação de conformidade para uma assinatura. Em scopes
use sua ID de assinatura.
on:
schedule:
- cron: '0 8 * * *' # runs every morning 8am
jobs:
assess-policy-compliance:
runs-on: ubuntu-latest
steps:
- name: Login to Azure
uses: azure/login@v2
with:
creds: ${{secrets.AZURE_CREDENTIALS}}
- name: Check for resource compliance
uses: azure/policy-compliance-scan@v0
with:
scopes: |
/subscriptions/aaaa6a6a-bb7b-cc8c-dd9d-eeeeee0e0e0e
Para obter mais informações e exemplos de fluxo de trabalho, confira o repositório do GitHub Actions para Verificação de Conformidade do Azure Policy.
Portal
O Portal do Azure apresenta uma experiência gráfica de visualização e compreensão do estado de conformidade em seu ambiente. Na página Política, a opção Visão Geral fornece detalhes dos escopos disponíveis sobre a conformidade das políticas e iniciativas. Junto com o estado de conformidade e com a contagem por atribuição, ela contém um gráfico mostrando a conformidade nos últimos sete dias. A página Conformidade contém muitas dessas mesmas informações (exceto o gráfico), mas oferece mais opções de filtragem e classificação.
Como uma política ou iniciativa pode ser atribuída a escopos diferentes, a tabela inclui o escopo de cada atribuição e o tipo de definição que foi atribuído. O número de recursos não compatíveis e políticas não compatíveis para cada atribuição também são fornecidos. Selecione uma política ou iniciativa na tabela para ver uma análise mais profunda sobre a conformidade dessa atribuição específica.
A lista de recursos na guia Conformidade de recursos mostra o status de avaliação de recursos existentes para a atribuição atual. O padrão da guia é Não compatível, mas pode ser filtrado. Os eventos (acrescentar, auditar, negar, implantar, modificar) disparados pela solicitação para criar um recurso são mostrados na guia Eventos.
Para os recursos do modo de Provedor de recursos, na guia Conformidade de recursos, selecionar o recurso ou clicar com o botão direito do mouse na linha e selecionar Exibir detalhes de conformidade abre os detalhes de conformidade do componente. Esta página também oferece guias para ver as políticas que são atribuídas a esse recurso, eventos, eventos de componente e histórico de alterações.
De volta à página de conformidade do recurso, selecione e mantenha pressionada (ou clique com o botão direito) a linha do evento para obter mais detalhes e selecione Mostrar logs de atividade. A página do log de atividades é aberta e é pré-filtrada para a pesquisa, mostrando detalhes da tarefa e dos eventos. O log de atividades fornece um contexto adicional e informações sobre esses eventos.
Observação
Os resultados de conformidade podem ser exportados do portal com consultas do Azure Resource Graph.
Linha de comando
As mesmas informações disponíveis no portal podem ser recuperadas com a API REST, CLI do Azure e Azure PowerShell.
REST API
Para obter detalhes sobre a API REST, confira a referência do Azure Policy. As páginas de referência da API REST têm uma opção Experimentar em cada operação que permite executar o comando em um navegador. Você também pode usar a CLI do Azure ou seu cliente de API REST preferencial para executar comandos.
Resumir resultados
Com a API REST, você pode resumir por contêiner, definição ou atribuição. Veja um exemplo de resumo no nível de assinatura usando Resumir para Assinatura do Insight do Azure Policy:
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/summarize?api-version=2019-10-01
A saída resume a assinatura, e a conformidade resumida está nas propriedades nonCompliantResources
e nonCompliantPolicies
. Essa solicitação fornece outros detalhes, incluindo cada atribuição que compôs os números que não estão em conformidade e as informações de definição para cada atribuição. Cada objeto de política na hierarquia fornece um queryResultsUri
que pode ser usado para saber mais sobre aquele nível.
Pesquisar recursos
No exemplo anterior, value.policyAssignments.policyDefinitions.results.queryResultsUri
fornece um URI de amostra de uma definição de política específica a todos os recursos não compatíveis. No valor $filter
, ComplianceState é igual (eq) a NonCompliant
, PolicyAssignmentId
é especificado para a definição de política e, em seguida, o próprio PolicyDefinitionId. O motivo para incluir PolicyAssignmentId
no filtro é porque PolicyDefinitionId
pode existir em diversas atribuições de políticas ou iniciativas com escopos diferentes. Ao especificar tanto PolicyAssignmentId
quanto PolicyDefinitionId
, é possível explicitar os resultados que estão sendo buscados. Anteriormente, latest
era usado para PolicyStates
, que define automaticamente uma janela de tempo from
e to
das últimas 24 horas.
Exemplo do valor queryResultsUri
:
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2025-01-01 04:28:22Z&$to=2025-02-10 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77' and PolicyDefinitionId eq '/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62'
Exibir eventos
Quando um recurso é criado ou atualizado, um resultado da avaliação da política é gerado. Os resultados são chamados Eventos de Política. Use o URI a seguir para exibir eventos recentes de política associados à assinatura.
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/default/queryResults?api-version=2019-10-01
Para obter mais informações sobre como consultar eventos de política, confira Eventos de Azure Policy.
CLI do Azure
O grupo de comandos CLI do Azure para Azure Policy abrange a maioria das operações que estão disponíveis em REST ou Azure PowerShell. Para ver a lista completa de comandos disponíveis, confira az policy.
Obtenha o resumo do estado da política mais atribuída com o maior número de recursos sem conformidade.
az policy state summarize --top 1
Obtenha o registro de estado do recurso mais recentemente avaliado e a saída padrão é por carimbo de data/hora em ordem decrescente.
az policy state list --top 1
Obtenha os detalhes de todos os recursos de rede virtual sem conformidade.
az policy state list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'"
Obtenha eventos relacionados a recursos de rede virtual sem conformidade que ocorreram após uma data específica. Use o parâmetro from
com uma data no formato ISO 8601.
az policy event list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'" --from '2025-02-10T00:00:00Z'
PowerShell do Azure
Você pode executar os seguintes comandos no Azure Cloud Shell.
Obtenha o resumo do estado da política mais atribuída com o maior número de recursos sem conformidade.
Get-AzPolicyStateSummary -Top 1
Obtenha o registro de estado do recurso mais recentemente avaliado. A saída padrão é por carimbo de data/hora em ordem decrescente.
Get-AzPolicyState -Top 1
Obtenha os detalhes de todos os recursos de rede virtual sem conformidade.
Get-AzPolicyState -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'"
Obtenha eventos relacionados a recursos de rede virtual sem conformidade que ocorreram após uma data específica. Use o parâmetro From
com uma data no formato ISO 8601.
Get-AzPolicyEvent -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'" -From '2025-02-10'
A saída inclui uma propriedade PrincipalOid
que pode ser usada para obter um usuário específico com o cmdlet do Azure PowerShell Get-AzADUser
. Substitua {principalOid}
pelo valor que você obteve no comando anterior.
(Get-AzADUser -ObjectId {principalOid}).DisplayName
Logs do Azure Monitor
Se tiver um Workspace do Log Analytics com AzureActivity
da solução Análise do Log de Atividades associada à sua assinatura, também poderá exibir os resultados que não estão em conformidade com a avaliação de recursos novos e atualizados usando as consultas do Kusto e a tabela AzureActivity
. Com os detalhes nos logs do Azure Monitor, os alertas poderão ser configurados para inspecionar a não conformidade.
Gráfico de Recursos do Azure
Os registros de conformidade são armazenados no Azure Resource Graph (ARG). Os dados das consultas do ARG podem ser exportados para formar painéis personalizados baseados em escopos e políticas de seu interesse. Leia nossas amostras de consultas para exportar dados de conformidade por meio do ARG.
Próximas etapas
- Examine os exemplos em amostras do Azure Policy.
- Revise a estrutura de definição do Azure Policy.
- Revisar Compreendendo os efeitos da política.
- Entenda como criar políticas de maneira programática.
- Saiba como corrigir recursos fora de conformidade.
- Veja o que é um grupo de gerenciamento com Organizar seus recursos com grupos de gerenciamento do Azure.