Resolver problemas com erros de utilização do Azure Policy

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

Encontrar os detalhes dos erros

A localização dos detalhes do erro depende do aspeto do Azure Policy no qual está a trabalhar.

  • Se estiver a trabalhar com uma política personalizada, aceda ao portal do Azure para obter comentários de linting sobre o esquema ou reveja os dados de conformidade resultantes para ver como os recursos foram avaliados.
  • Se estiver a trabalhar com qualquer um dos vários SDKs, o SDK indicará detalhes sobre o porquê da função ter falhado.
  • Se estiver a trabalhar com o suplemento para Kubernetes, comece com o registo no cluster.

Erros gerais

Cenário: Alias não encontrado

Problema

É utilizado um alias incorreto ou inexistente numa definição de política. A Política do Azure usa aliases para mapear para as propriedades do Azure Resource Manager.

Motivo

É utilizado um alias incorreto ou inexistente numa definição de política.

Resolução

Primeiro, valide se a propriedade Resource Manager tem um alias. Para pesquisar os aliases disponíveis, aceda a Extensão do Azure Policy para o Visual Studio Code ou o SDK. Se o alias de uma propriedade do Resource Manager não existir, crie um pedido 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.

Motivo

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. A cada 24 horas, ocorre uma análise de conformidade. Para obter mais informações, veja acionadores de avaliação.

Resolução

Primeiro, aguarde o tempo adequado para que uma avaliação termine e os resultados de conformidade fiquem disponíveis no portal do Azure ou no SDK. Para iniciar uma nova avaliação com o Azure PowerShell ou com a API REST, veja Análise da avaliação a pedido.

Cenário: a conformidade não é a esperada

Problema

Um recurso não está no estado de avaliação Conforme ou Não Conforme que é esperado para o recurso.

Motivo

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

Resolução

Para resolver problemas na definição de política, proceda da seguinte forma:

  1. Primeiro, aguarde o tempo adequado para que uma avaliação termine e os resultados de conformidade fiquem disponíveis no portal do Azure ou no SDK.

  2. Para iniciar uma nova avaliação com o Azure PowerShell ou com a API REST, veja Análise da avaliação a pedido.

  3. Certifique-se de que os parâmetros de atribuição e o escopo da atribuição estejam definidos corretamente.

  4. Verifique o modo de definição de políticas:

    • O modo deve ser all para todos os tipos de recursos.
    • O modo deve ser indexed se a definição de política verificar se há tags ou localização.
  5. Certifique-se de que o escopo do recurso não seja excluído ou isento.

  6. Se a conformidade para uma atribuição de política mostrar 0/0 recursos, nenhum recurso foi determinado como aplicável dentro do escopo da atribuição. Verifique a definição de política e o âmbito de atribuição.

  7. Para um recurso não conforme que se esperava que fosse conforme, veja Determinar os motivos da não conformidade. A comparação da definição com o valor da propriedade avaliada indica por que motivo um recurso foi considerado não conforme.

    • Se o valor de destino estiver errado, revise a definição de política.
    • Se o valor atual estiver errado, valide a carga útil do recurso através do resources.azure.com.
  8. Para uma definição de modo Provedor de Recursos que ofereça suporte a um parâmetro de cadeia de caracteres RegEx (como Microsoft.Kubernetes.Data e a definição interna "As imagens de contêiner devem ser implantadas somente a partir de registros confiáveis"), valide se o parâmetro de cadeia de caracteres RegEx está correto.

  9. Para conhecer outros problemas comuns e soluções, veja Resolução de Problemas: a Imposição não é a esperada.

Se ainda tiver um problema com a definição de política incorporada duplicada e personalizada ou a definição personalizada, crie um pedido de suporte ao abrigo da Criação de uma política para encaminhar o problema corretamente.

Cenário: A aplicação não é a esperada

Problema

Um recurso no qual espera que o Azure Policy seja aplicado, mas onde tal não ocorreu e não há nenhuma entrada no Registo de atividades do Azure.

Motivo

A atribuição da política foi configurada para uma definição enforcementMode como Desativada. Embora enforcementMode esteja desativado, o efeito de política não é imposto e não há nenhuma entrada no log de atividades.

Resolução

Resolva os problemas da aplicação da atribuição de políticas fazendo o seguinte:

  1. Primeiro, aguarde o tempo adequado para que uma avaliação termine e os resultados de conformidade fiquem disponíveis no portal do Azure ou no SDK.

  2. Para iniciar uma nova avaliação com o Azure PowerShell ou com a API REST, veja Análise da avaliação a pedido.

  3. Verifique se os parâmetros de atribuição e o escopo da atribuição estão definidos corretamente e se enforcementMode está habilitado.

  4. Verifique o modo de definição de políticas:

    • O modo deve ser all para todos os tipos de recursos.
    • O modo deve ser indexed se a definição de política verificar se há tags ou localização.
  5. Certifique-se de que o escopo do recurso não seja excluído ou isento.

  6. Verifique se a carga útil do recurso corresponde à lógica da política. Esta verificação pode ser feita ao capturar um Rastreio HAR (Arquivo HTTP) ou ao rever as propriedades do modelo do Azure Resource Manager (modelo do ARM).

  7. Para outras questões e soluções comuns, veja Resolução de Problemas: Conformidade não como esperado.

Se ainda tiver um problema com a definição de política incorporada duplicada e personalizada ou a definição personalizada, crie um pedido de suporte ao abrigo da Criação de uma política para encaminhar o problema corretamente.

Cenário: Negada pelo Azure Policy

Problema

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

Motivo

A atribuição de uma política ao âmbito do novo recurso ou do recurso atualizado cumpre os critérios de definição da política com um efeito de Negação. Os recursos que cumprem estas definições estão impedidos de serem criados ou atualizados.

Resolução

A mensagem de erro da atribuição de uma política de negação inclui a definição de política e os IDs de atribuição de políticas. Se a informação do erro na mensagem estiver em falta, estará disponível no Registo de atividades. Utilize estas informações para obter mais detalhes para compreender as restrições de recursos e ajustar as propriedades dos recursos no pedido para corresponder aos valores permitidos.

Cenário: A definição visa 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 a 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}'.

Motivo

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

Resolução

Se um alias for usado, certifique-se de que o alias seja avaliado em relação apenas ao tipo de recurso ao qual 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 visar vários tipos de recursos.

Cenário: Limite da subscrição ultrapassado

Problema

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

Motivo

O número de subscrições nos âmbitos selecionados no pedido excedeu o limite de 5000 subscrições. Os resultados da conformidade podem ser parcialmente apresentados.

Resolução

Selecione um âmbito mais granular com menos subscrições subordinadas para ver os resultados completos.

Erros de modelo

Cenário: funções suportadas por política processadas por modelo

Problema

O Azure Policy dá suporte a várias funções de modelo 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.

Motivo

O uso de funções com suporte, como parameter() ou resourceGroup(), resulta no 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 o mecanismo de Política do Azure sejam processadas.

Resolução

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

Add-on para erros de instalação do Kubernetes

Cenário: A instalação usando um gráfico de leme falha devido a um erro de senha

Problema

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

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

Motivo

A senha gerada inclui uma vírgula (,), na qual o Gráfico de Leme está dividindo.

Resolução

Ao executar helm install azure-policy-addono , escape da vírgula (,) no valor da senha com uma barra invertida (\).

Cenário: A instalação usando um gráfico de leme falha porque o nome já existe

Problema

O helm install azure-policy-addon comando falha e retorna o seguinte erro:

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

Motivo

O Helm Chart com o nome azure-policy-addon já foi instalado ou parcialmente instalado.

Resolução

Siga as instruções para remover o complemento Azure Policy for Kubernetes e execute novamente o helm install azure-policy-addon comando.

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

Problema

Depois de atribuir iniciativas de política de Configuração de Convidado para auditar configurações dentro de uma máquina, as identidades gerenciadas atribuídas pelo usuário que foram atribuídas à máquina não são mais atribuídas. Apenas uma identidade gerenciada atribuída ao sistema é atribuída.

Motivo

As definições de política usadas anteriormente nas definições de Configuração de Convidado DeployIfNotExists garantiram que uma identidade atribuída ao sistema fosse atribuída à máquina, mas também removeram as atribuições de identidade atribuídas pelo usuário.

Resolução

As definições que causaram esse problema anteriormente aparecem como [Preterido] e são substituídas por definições de política que gerenciam pré-requisitos sem remover identidades gerenciadas atribuídas pelo usuário. É necessário um passo manual. Exclua todas as atribuições de política existentes marcadas como [Preteridas] e substitua-as pela iniciativa de política de pré-requisito atualizada e definições de política que tenham o mesmo nome do original.

Para obter uma narrativa detalhada, consulte a postagem do blog Alteração importante lançada para políticas de auditoria de Configuração de Convidado.

Add-on para erros gerais do Kubernetes

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

Problema

O complemento não pode alcançar o ponto de extremidade do serviço 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

Motivo

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

Resolução

Certifique-se de que os domínios e portas mencionados no seguinte artigo estão abertos:

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

Problema

O complemento não pode alcançar o ponto de extremidade do serviço 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>

Motivo

Este erro ocorre quando aad-pod-identity é instalado no cluster e os pods kube-system não são excluídos em aad-pod-identity.

Os pods NMI (Node Managed Identity) do componente aad-pod-identity modificam os iptables dos nós para intercetar chamadas para o ponto de extremidade de metadados da instância do Azure. Essa configuração significa que qualquer solicitação feita ao ponto de extremidade de metadados é intercetada pelo NMI, mesmo que o pod não use aad-pod-identity. O AzurePodIdentityException CustomResourceDefinition (CRD) pode ser configurado para informar aad-pod-identity que quaisquer solicitações para um ponto de extremidade de metadados originadas de um pod correspondente aos rótulos definidos no CRD devem ser intermediadas por proxy sem qualquer processamento no NMI.

Resolução

Exclua os pods do sistema que têm o kubernetes.azure.com/managedby: aks rótulo 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 Ative 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 está registrado

Problema

O complemento pode alcançar o ponto de extremidade do serviço Azure Policy, mas os logs do 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.

Motivo

O provedor de recursos 'Microsoft.PolicyInsights' não está registrado. Ele deve ser registrado para o complemento para obter definições de política e retornar 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 subscrição está desativada

Problema

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

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

Motivo

Esse erro significa que a assinatura foi considerada problemática e o sinalizador Microsoft.PolicyInsights/DataPlaneBlocked de recurso 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 do portal do Azure para definições de política, selecione o botão "Definição duplicada". Depois de atribuir a política, você descobre que as máquinas não são compatíveis porque não existe nenhum recurso de atribuição de configuração de convidado.

Motivo

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

Resolução

Em vez de usar o portal, duplique a definição de política usando a API do Policy Insights. O exemplo do PowerShell a seguir 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 uma falha de conectividade, apesar da política de negação ser atribuída

Problema

No caso de uma falha de conectividade de cluster Kubernetes, a avaliação de recursos recém-criados ou atualizados pode ser ignorada devido ao comportamento de abertura de falha do Gatekeeper.

Motivo

O modelo GK fail-open é por design e baseado no feedback 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 caso acima, o caso de erro pode ser monitorado a partir das métricas de webhook de admissão fornecidas pelo kube-apiserver. E mesmo que a avaliação seja ignorada no momento da criação e um objeto seja criado, ele ainda será relatado sobre a conformidade com a Política do Azure como não compatível como um sinalizador para os clientes.

Independentemente do acima, em tal cenário, a política do Azure ainda manterá a última política conhecida no cluster e manterá os guardrails no lugar.

Próximos passos

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

  • Obtenha respostas de especialistas através das Perguntas e respostas da Microsoft.
  • Conecte-se com @AzureSupport. Este recurso oficial do Microsoft Azure no Twitter ajuda a melhorar a experiência do cliente conectando a comunidade do Azure às respostas, suporte e especialistas certos.
  • Se ainda precisar de ajuda, vá para o site de suporte do Azure e selecione Enviar uma solicitação de suporte.