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 Compatível ou Não Compatível 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 solucionar problemas de definição de política, siga estas etapas:
- 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.
- Certifique-se de que os parâmetros de atribuição e o escopo da atribuição estejam definidos corretamente.
- Verifique o modo de definição da política:
- 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.
- O modo deve ser
- Certifique-se de que o escopo do recurso não seja excluído ou isento.
- 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. - 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
.
- 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. - 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 de política foi configurada para uma configuração enforcementMode de Disabled. Enquanto enforcementMode
estiver desabilitado, o efeito de política não será imposto e não haverá nenhuma entrada no registro de atividades.
Resolução
Solucione problemas de imposição da sua atribuição de política seguindo as seguintes etapas:
- 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.
- Certifique-se de que os parâmetros de atribuição e o escopo da atribuição estão definidos corretamente e que
enforcementMode
está Habilitado. - Verifique o modo de definição da política:
- 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.
- O modo deve ser
- Certifique-se de que o escopo do recurso não seja excluído ou isento.
- Verifique se a carga útil do recurso corresponde à lógica da política. Essa verificação pode ser feita capturando um rastreamento HTTP Archive (HAR) ou revisando as propriedades do modelo do Azure Resource Manager (modelo ARM).
- 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 assinaturas sob os escopos selecionados na solicitação excedeu o limite de 5.000 assinaturas. Os resultados da conformidade podem ser parcialmente exibidos.
Resolução
Para ver os resultados completos, selecione um escopo mais granular com menos assinaturas filhas.
Erros de modelo
Cenário: funções suportadas por política processadas por modelo
Problema
O Azure Policy dá suporte a muitas 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-addon
o , 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á estava 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 eles 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 \[Deprecated\]
, 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 \[Deprecated\]
, e substitua-as pela iniciativa de política de pré-requisito atualizada e definições de política que tenham o mesmo nome que o 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 no aad-pod-identity
.
Os aad-pod-identity
pods NMI (Node Managed Identity) do componente 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 configurando aad-pod-identity
o AzurePodIdentityException
CRD.
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 Microsoft.PolicyInsights
provedor de recursos 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 Microsoft.PolicyInsights
provedor de recursos 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 Duplicar definição . 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
Se houver uma falha de conectividade de cluster do 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 evento anterior, o caso de erro pode ser monitorado a partir das métricas de 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 a conformidade com a Política do Azure como não compatível como um sinalizador para os clientes.
Independentemente do cenário, a política do Azure mantém a última política conhecida no cluster e mantém 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 X ajuda a melhorar a experiência do cliente, conectando a comunidade do Azure às respostas, suporte e especialistas certos.
- Se você ainda precisar de ajuda, vá para o site de suporte do Azure e selecione Enviar um tíquete de suporte.