Você está visualizando a documentação do Apigee Edge.
Acesse a
documentação da
Apigee X. info
IPDeniedAccess
Código do erro
accesscontrol.IPDeniedAccess
Corpo da resposta de erro
{ "fault": { "faultstring": "Access Denied for client ip : client_IP", "detail": { "errorcode": "accesscontrol.IPDeniedAccess" } } }
Exemplo de mensagem de erro
{
"fault": {
"faultstring": "Access Denied for client ip : 104.132.196.83",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}
Causa
Esse erro ocorre se o endereço IP do cliente ou qualquer endereço IP transmitido como parte da solicitação da API corresponder a qualquer endereço IP especificado no elemento <SourceAddress>
dentro do elemento <MatchRule>
da política de controle de acesso e o atributo action
do elemento <MatchRule>
está definido como DENY
.
Por exemplo, digamos que o <SourceAddress>
seja definido conforme mostrado abaixo:
<SourceAddress mask="32">104.132.196.83</SourceAddress>
Se o endereço IP acima corresponder ao endereço IP do sistema cliente (indicado pela variável proxy.client.ip
) ou qualquer um dos endereços IP passados como parte da solicitação de API, ocorrerá um erro.
Diagnóstico
Identifique os endereços IP que tiveram o acesso negado para uma solicitação de API específica. Você encontra essas informações no elemento
faultstring
da resposta de erro.Por exemplo, no
faultstring
seguinte, o endereço IP é104.132.196.83:
"faultstring": "Access Denied for client ip : 104.132.196.83"
Examine todas as políticas de controle de acesso no proxy de API com falha e determine a política específica em que os endereços IP especificados no elemento
<SourceAddress>
correspondem aos endereços IP identificados emfaultstring
(Etapa 1 acima).Por exemplo, a política a seguir define o IP
<SourceAddress>
como104.132.196.83,
, que corresponde ao que está emfaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control"> <DisplayName>Access-Control</DisplayName> <Properties/> <IPRules noRuleMatchAction="ALLOW"> <MatchRule action="DENY"> <SourceAddress mask="32">104.132.196.83</SourceAddress> </MatchRule> </IPRules> </AccessControl>
Determine os endereços IP de onde a solicitação da API foi feita. Isso pode ser feito de várias maneiras:
Como usar o IU Trace
- Capture o trace para a solicitação de API com falha.
- Selecione a política de controle de acesso específica que falhou no painel à direita.
Verifique o valor da variável
proxy.client.ip
, conforme mostrado na captura de tela a seguir de um exemplo de rastro.Se
proxy.client.ip
não estiver listado, verifique o valor dos cabeçalhos de mensagem X-Forwarded-For ou True-Client-IP.
Como usar os relatórios personalizados
É possível criar relatórios personalizados para determinar se um código de status 403 foi gerado durante a execução da política de controle de acesso no proxy de API e também determinar o endereço IP do cliente. Isso é especialmente útil se o problema tiver ocorrido no passado ou se o problema é intermitente e você não consegue capturar o rastro na IU.
Consulte Criar e gerenciar relatórios personalizados para entender como criar relatórios personalizados. No relatório personalizado, escolha:
Soma do tráfego como uma métrica e
Proxy, Código de status de resposta, IP do cliente do proxy e X-Forwarded-For como dimensões.
Isso ajuda a determinar os endereços IP do cliente ou os endereços IP que levaram ao erro.
Se o endereço IP do cliente (indicado pela variável
proxy.client.ip
) ou qualquer endereço IP passado como parte da solicitação da API correspondem aos endereços IP especificados no elemento<SourceAddress>
dentro do elemento<MatchRule>
da Política de controle de acesso, em que o atributoaction
foi definido comoDENY
, um erro será gerado.No exemplo mostrado acima, o valor definido na variável de referência
proxy.client.ip
(como visto na captura de tela do trace acima) corresponde ao endereço IP definido no elemento<SourceAddress>
da política de controle de acesso. Dessa forma, ele aciona a resposta de erro:"faultstring": "Access Denied for client ip : 104.132.196.83"
Resolução
Se a política de controle de acesso destina-se a negar acesso à solicitação de APIs proveniente dos endereços IP específicos listados em faultstring
, então a mensagem de erro é esperada. Nesse caso, não é necessária nenhuma outra ação.
No entanto, se você determinar que o(s) endereço(s) IP(s) específico pode receber acesso às solicitações de API do proxy específico da API, modifique a política de controle de acesso para permitir o acesso a esses endereços IP. Como alternativa, você pode remover a Política de controle de acesso do proxy da API, se não quiser negar o acesso aos endereços IP.
Veja um exemplo que mostra como permitir o acesso a um determinado endereço IP específico 104.132.196.83
e negar o acesso para o restante:
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>