Solucionar erros usando o Azure Policy

Ao criar definições de política, trabalhar com SDKs ou configurar o complemento do Azure Policy para Kubernetes, você poderá ter erros. Este artigo descreve vários erros gerais que podem ocorrer e sugere maneiras de corrigi-los.

Localizar detalhes do erro

O local dos detalhes do erro depende do aspecto do Azure Policy com o que você está trabalhando.

  • Se você estiver trabalhando com uma política personalizada, acesse o portal do Azure para obter comentários de lint sobre o esquema ou revise os dados de conformidade resultantes para ver como os recursos foram avaliados.
  • Se você estiver trabalhando com qualquer um dos vários SDKs, o SDK fornece detalhes sobre por que a função falhou.
  • Se você estiver trabalhando com o complemento para Kubernetes, comece com o registro em log no cluster.

Erros gerais

Cenário: Alias não encontrado

Problema

Um alias incorreto ou inexistente é usado em uma definição de política. O Azure Policy usa aliases para mapear as propriedades do Azure Resource Manager.

Causa

Um alias incorreto ou inexistente é usado em uma definição de política.

Resolução

Primeiro, valide se a propriedade do Resource Manager tem um alias. Para procurar os aliases disponíveis, acesse Extensão do Azure Policy para Visual Studio Code ou o SDK. Se não houver um alias para uma propriedade do Resource Manager, crie um tíquete de suporte.

Cenário: Os detalhes da avaliação não estão atualizados

Problema

Um recurso está no estado Não Iniciado ou os detalhes de conformidade não estão atualizados.

Causa

Uma nova atribuição de política ou iniciativa leva cerca de cinco minutos para ser aplicada. Recursos novos ou atualizados dentro do escopo de uma atribuição existente ficam disponíveis em cerca de 15 minutos. Uma verificação de conformidade padrão ocorre a cada 24 horas. Para obter mais informações, consulte os gatilhos de avaliação.

Resolução

Primeiro, aguarde um período de tempo apropriado para que uma avaliação seja concluída e os resultados de conformidade fiquem disponíveis no portal do Azure ou no SDK. Para iniciar uma nova verificação de avaliação com o Azure PowerShell ou a API REST, consulte Verificação de avaliação sob demanda.

Cenário: A conformidade não é como esperado

Problema

Um recurso não está no estado de avaliação Em Conformidade ou Sem Conformidade esperado para o recurso.

Causa

O recurso não está no escopo correto para a atribuição de política ou a definição de política não funciona conforme o esperado.

Resolução

Para solucionar problemas em sua definição de política, execute as seguintes etapas:

  1. Primeiro, aguarde um período de tempo apropriado para que uma avaliação seja concluída e os resultados de conformidade fiquem disponíveis no portal do Azure ou SDK.
  2. Para iniciar uma nova verificação de avaliação com o Azure PowerShell ou a API REST, consulte Verificação de avaliação sob demanda.
  3. Verifique se os parâmetros de atribuição e o escopo de atribuição estão definidos corretamente.
  4. Verifique o modo de definição de política:
    • O modo deve ser all para todos os tipos de recurso.
    • O modo deve ser indexed se a definição de política verificar marcas ou local.
  5. Certifique-se de que o escopo do recurso não seja excluído ou isento.
  6. Se a conformidade de uma atribuição de política mostrar 0/0 recursos, nenhum recurso foi determinado para ser aplicável dentro do escopo de atribuição. Verifique a definição de política e o escopo de atribuição.
  7. Para um recurso não compatível que deveria estar em conformidade, consulte determinar os motivos de não conformidade. A comparação da definição com o valor da propriedade avaliada indica por que um recurso não está em conformidade.
    • Se o valor de destino estiver errado, revise a definição da política.
    • Se o valor atual estiver errado, valide o payload do recurso por meio de resources.azure.com.
  8. Para uma definição do modo do Provedor de Recursos que dá suporte a um parâmetro de cadeia de caracteres Regex (como Microsoft.Kubernetes.Data e a definição interna "As imagens do contêiner devem ser implantadas somente de Registros confiáveis"), valide se o parâmetro de cadeia de caracteres Regex estiver correto.
  9. Para outros problemas e soluções comuns, consulte Solucionar problema: A aplicação não ocorreu conforme esperado.

Se você ainda tiver um problema com sua definição de política interna duplicada e personalizada ou definição personalizada, crie um tíquete de suporte em Autorizar política para encaminhar o problema corretamente.

Cenário: A aplicação não ocorreu conforme esperado

Problema

Um recurso no qual você espera que o Azure Policy atue não está sendo implementado e não há nenhuma entrada no Log de Atividades do Azure Activity.

Causa

A atribuição de política foi configurada com uma definição enforcementMode definida como Desabilitado. Enquanto enforcementMode estiver desabilitado, o efeito da política não será aplicado e não haverá entrada no log de atividades.

Resolução

Para solucionar o problema de imposição da atribuição de política, execute as seguintes etapas:

  1. Primeiro, aguarde um período de tempo apropriado para que uma avaliação seja concluída e os resultados de conformidade fiquem disponíveis no portal do Azure ou no SDK.
  2. Para iniciar uma nova verificação de avaliação com o Azure PowerShell ou a API REST, consulte Verificação de avaliação sob demanda.
  3. Verifique se os parâmetros e o escopo da atribuição estão definidos corretamente e se enforcementMode está Habilitado.
  4. Verifique o modo de definição de política:
    • O modo deve ser all para todos os tipos de recurso.
    • O modo deve ser indexed se a definição de política verificar marcas ou local.
  5. Certifique-se de que o escopo do recurso não seja excluído ou isento.
  6. Verifique se o payload do recurso corresponde à lógica da política. Essa verificação pode ser feita capturando um rastreamento de Arquivo HTTP (HAR) ou revisando as propriedades do modelo do Azure Resource Manager (modelo do ARM).
  7. Para outros problemas e soluções comuns, consulte Solucionar problema: Conformidade diferente do esperado.

Se você ainda tiver um problema com sua definição de política interna duplicada e personalizada ou definição personalizada, crie um tíquete de suporte em Autorizar política para encaminhar o problema corretamente.

Cenário: Negado por Azure Policy

Problema

A criação ou atualização de um recurso foi negada.

Causa

Uma atribuição de política ao escopo do recurso novo ou atualizado atende aos critérios de uma definição de política com um efeito de Negação. Os recursos que atendem a essas definições são impedidos de serem criados ou atualizados.

Resolução

A mensagem de erro de uma atribuição de política de negação inclui a definição de política e as IDs de atribuição de política. Se as informações de erro na mensagem forem perdidas, também estão disponíveis no Log de atividades. Use essas informações para obter mais detalhes para entender as restrições de recursos e ajustar as propriedades de recurso em sua solicitação para corresponder os valores permitidos.

Cenário: a definição tem como alvo vários tipos de recursos

Problema

Uma definição de política que inclui vários tipos de recursos falha na validação durante a criação ou atualização com o seguinte erro:

The policy definition '{0}' targets multiple resource types, but the policy rule is authored in a way that makes the policy not applicable to the target resource types '{1}'.

Causa

A regra de definição de política tem uma ou mais condições que não são avaliadas pelos tipos de recurso de destino.

Resolução

Se um alias for usado, certifique-se de que o alias é avaliado apenas em relação ao tipo de recurso ao qual ele pertence adicionando uma condição de tipo antes dele. Uma alternativa é dividir a definição de política em várias definições para evitar o direcionamento de vários tipos de recursos.

Cenário: limite de assinatura excedido

Problema

Uma mensagem de erro na página de conformidade no portal do Azure é mostrada ao recuperar a conformidade de atribuições de política.

Causa

O número de assinaturas sob os escopos selecionados na solicitação excedeu o limite de 5.000 assinaturas. Os resultados de conformidade podem ser exibidos parcialmente.

Resolução

Para ver os resultados completos, selecione um escopo mais granular com menos assinaturas filho.

Erros do Modelo

Cenário: Funções com suporte de política processadas pelo modelo

Problema

O Azure Policy dá suporte a muitas funções de modelos do ARM e funções que estão disponíveis apenas em uma definição de política. O Resource Manager processa essas funções como parte de uma implantação em vez de como parte de uma definição de política.

Causa

O uso de funções com suporte, como parameter() ou resourceGroup(), gera o resultado processado da função no momento da implantação em vez de permitir que a função para a definição de política e do mecanismo de Azure Policy seja processada.

Resolução

Para passar uma função como parte de uma política, faça o escape de toda a cadeia de caracteres com [, de modo que o parâmetro se pareça com [[resourceGroup().tags.myTag]. O caractere de escape faz com que o Resource Manager trate o valor como uma cadeia de caracteres quando processa o modelo. O Azure Policy, então, coloca a função na definição de política, o que permite que ela seja dinâmica conforme esperado. Para obter mais informações, consulte Sintaxe e expressões em modelos de Azure Resource Manager.

Complemento para erros de instalação do Kubernetes

Cenário: Falha na instalação usando um gráfico Helm devido a um erro de senha

Problema

O comando helm install azure-policy-addon falha e retorna um dos seguintes erros:

  • !: event not found
  • Error: failed parsing --set data: key "<key>" has no value (cannot end with ,)

Causa

A senha gerada inclui uma vírgula (,), na qual o gráfico Helm está sendo dividido.

Resolução

Quando você executar helm install azure-policy-addon, escape a vírgula (,) no valor da senha com uma barra invertida (\).

Cenário: Falha na instalação usando um gráfico Helm porque o nome já existe

Problema

O comando helm install azure-policy-addon falha e retorna um dos seguintes erros:

  • Error: cannot re-use a name that is still in use

Causa

O Gráfico Helm com o nome azure-policy-addon já estava instalado ou parcialmente instalado.

Resolução

Siga as instruções para remover o Azure Policy para complemento do Kubernetese, em seguida, siga o comando helm install azure-policy-addon.

Cenário: As identidades atribuídas pelo usuário da máquina virtual do Azure são substituídas por identidades gerenciadas atribuídas pelo sistema

Problema

Depois de atribuir iniciativas de política de Configuração de Convidado para auditar as configurações dentro de um computador, as identidades gerenciadas atribuídas pelo usuário atribuídas ao computador não serão mais atribuídas. Somente uma identidade gerenciada atribuída pelo sistema é atribuída.

Causa

As definições de política que foram usadas anteriormente nas definições de Configuração de Convidado deployIfNotExists garantiram que uma identidade atribuída pelo sistema fosse atribuída ao computador. Mas eles também removeram as atribuições de identidades atribuídas pelo usuário.

Resolução

As definições que causaram esse problema anteriormente aparecem como \[Deprecated\] e são substituídas por definições de política que gerenciam pré-requisitos sem remover as identidades gerenciadas atribuídas pelo usuário. Uma etapa manual é necessária. Exclua todas as atribuições de política existentes marcadas como \[Deprecated\] e substitua-as pela iniciativa de política de pré-requisito atualizada e pelas definições de política que têm o mesmo nome da original.

Para mais informações, confira a postagem no blog Alteração importante liberada para políticas de auditoria de Configuração de Convidado.

Complemento para erros gerais do Kubernetes

Cenário: O complemento não consegue alcançar o ponto de extremidade de serviço do Azure Policy devido a restrições de saída

Problema

O complemento não pode alcançar o ponto de extremidade de serviço do Azure Policy e retorna um dos seguintes erros:

  • failed to fetch token, service not reachable
  • Error getting file "Get https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-allowed-images/template.yaml: dial tcp 151.101.228.133.443: connect: connection refused

Causa

Esse problema ocorre quando uma saída de cluster é bloqueada.

Resolução

Verifique se os domínios e portas mencionados nos seguintes artigos estão abertos:

Cenário: O complemento não consegue alcançar o ponto de extremidade de serviço do Azure Policy devido à configuração aad-pod-identity

Problema

O complemento não pode alcançar o ponto de extremidade de serviço do Azure Policy e retorna um dos seguintes erros:

  • azure.BearerAuthorizer#WithAuthorization: Failed to refresh the Token for request to https://gov-prod-policy-data.trafficmanager.net/checkDataPolicyCompliance?api-version=2019-01-01-preview: StatusCode=404
  • adal: Refresh request failed. Status Code = '404'. Response body: getting assigned identities for pod kube-system/azure-policy-8c785548f-r882p in CREATED state failed after 16 attempts, retry duration [5]s, error: <nil>

Causa

Esse erro ocorre quando aad-pod-identity está instalado no cluster e os pods kube-system não foram excluídos em aad-pod-identity.

Os pods de Identidade Gerenciada de Nó (NMI) do componente aad-pod-identity modificam o iptables dos nós para interceptar chamadas para o ponto de extremidade de metadados de instância do Azure. Essa configuração significa que qualquer solicitação feita ao ponto de extremidade de metadados é interceptada pela NMI, mesmo que o pod não use aad-pod-identity. A AzurePodIdentityException CustomResourceDefinition (CRD) pode ser configurada para informar ao aad-pod-identity que todas as solicitações a um ponto de extremidade de metadados originadas de um pod que corresponda aos rótulos definidos no CRD devem ser enviadas por proxy sem nenhum processamento na NMI.

Resolução

Exclua os pods do sistema que têm o rótulo kubernetes.azure.com/managedby: aks no namespace kube-system em aad-pod-identity configurando o CRD AzurePodIdentityException.

Para obter mais informações, consulte Desabilitar a identidade do Pod do Azure Active Directory (Azure AD) para um pod/aplicativo específico.

Para configurar uma exceção, siga este exemplo:

apiVersion: "aadpodidentity.k8s.io/v1"
kind: AzurePodIdentityException
metadata:
  name: mic-exception
  namespace: default
spec:
  podLabels:
    app: mic
    component: mic
---
apiVersion: "aadpodidentity.k8s.io/v1"
kind: AzurePodIdentityException
metadata:
  name: aks-addon-exception
  namespace: kube-system
spec:
  podLabels:
    kubernetes.azure.com/managedby: aks

Cenário: O provedor de recursos não foi registrado

Problema

O complemento pode alcançar o ponto de extremidade de serviço do Azure Policy, mas os logs de complemento exibem um dos seguintes erros:

  • The resource provider 'Microsoft.PolicyInsights' is not registered in subscription '{subId}'. See https://aka.ms/policy-register-subscription for how to register subscriptions.

  • policyinsightsdataplane.BaseClient#CheckDataPolicyCompliance: Failure responding to request: StatusCode=500 -- Original Error: autorest/azure: Service returned an error. Status=500 Code="InternalServerError" Message="Encountered an internal server error.

Causa

O provedor de recursos Microsoft.PolicyInsights não está registrado. Ele deve ser registrado para que o complemento obtenha as definições de política e retorne os dados de conformidade.

Resolução

Registre o provedor de recursos Microsoft.PolicyInsights na assinatura do cluster. Para obter instruções, consulte Registrar um provedor de recursos.

Cenário: A assinatura está desabilitada

Problema

O complemento pode alcançar o ponto de extremidade de serviço do Azure Policy, mas o seguinte erro é exibido:

The subscription '{subId}' has been disabled for azure data-plane policy. Please contact support.

Causa

Esse erro significa que a assinatura foi determinada como problemática e o sinalizador de recurso Microsoft.PolicyInsights/DataPlaneBlocked foi adicionado para bloquear a assinatura.

Resolução

Para investigar e resolver esse problema, entre em contato com a equipe de recursos.

Cenário: as definições na categoria "Configuração de Convidado" não podem ser duplicadas do portal do Azure

Problema

Ao tentar criar uma definição de política personalizada na página de definições de política do portal Azure, você deve selecionar o botão Duplicar definição. Depois de atribuir a política, você descobre que os computadores são NonCompliant porque não existe nenhum recurso de atribuição de configuração de convidado.

Causa

A configuração de convidado depende dos metadados personalizados adicionados às definições de política ao criar recursos de atribuição de configuração de convidado. A atividade Duplicar definição no portal Azure não copia metadados personalizados.

Resolução

Em vez de usar o portal, duplique a definição de política usando a API Informações sobre a Política. O seguinte comando do PowerShell fornece uma opção.

# duplicates the built-in policy which audits Windows machines for pending reboots
$def = Get-AzPolicyDefinition -id '/providers/Microsoft.Authorization/policyDefinitions/4221adbc-5c0f-474f-88b7-037a99e6114c' | % Properties
New-AzPolicyDefinition -name (new-guid).guid -DisplayName "$($def.DisplayName) (Copy)" -Description $def.Description -Metadata ($def.Metadata | convertto-json) -Parameter ($def.Parameters | convertto-json) -Policy ($def.PolicyRule | convertto-json -depth 15)

Cenário: o recurso Kubernetes é criado durante a falha de conectividade, apesar da política de negação ser atribuída

Problema

Se houver uma falha de conectividade do cluster do Kubernetes, a avaliação de recursos recém-criados ou atualizados poderá ser ignorada devido ao comportamento de abertura com falha do Gatekeeper.

Causa

O modelo GK abertura de falhas é projetado e com base nos comentários da Comunidade. A documentação do Gatekeeper expande esses motivos aqui:https://open-policy-agent.github.io/gatekeeper/website/docs/failing-closed#considerations.

Resolução

No evento anterior, o caso de erro pode ser monitorado a partir das métricas do webhook de admissão fornecidas pelo kube-apiserver. Se a avaliação for ignorada no momento da criação e um objeto for criado, ele será relatado sobre conformidade do Azure Policy como não compatível, como um sinalizador para os clientes.

Independentemente do cenário, a política do Azure retém a última política conhecida no cluster e mantém as proteções no lugar.

Próximas etapas

Se o problema não estiver listado neste artigo ou se você não conseguir resolvê-lo, receba suporte visitando um dos seguintes canais:

  • Obter respostas de especialistas por do Microsoft Q&A.
  • Conecte-se com @AzureSupport. Esse recurso oficial do Microsoft Azure no X ajuda a melhorar a experiência do cliente, conectando a comunidade do Azure às respostas certas, ao suporte e aos especialistas.
  • Se ainda precisar de ajuda, acesse o site de suporte do Azure e selecione Enviar um tíquete de suporte.