Diagnosticar e solucionar problemas de exceções proibidas do Azure Cosmos DB
APLICA-SE A: NoSQL
O código de status HTTP 403 representa que a solicitação está proibida de ser concluída.
Pedidos de bloqueio de firewall
As solicitações de plano de dados podem chegar ao Azure Cosmos DB por meio dos três caminhos a seguir.
- Internet pública (IPv4)
- Ponto final de serviço
- Ponto final privado
Quando uma solicitação de plano de dados é bloqueada com 403 Proibido, a mensagem de erro especifica por qual dos três caminhos anteriores a solicitação chegou ao Azure Cosmos DB.
Request originated from client IP {...} through public internet.
Request originated from client VNET through service endpoint.
Request originated from client VNET through private endpoint.
Solução
Entenda por qual caminho a solicitação deve chegar ao Azure Cosmos DB.
- Se a mensagem de erro mostrar que a solicitação não chegou ao Azure Cosmos DB pelo caminho esperado, é provável que o problema esteja na configuração do lado do cliente. Verifique novamente a configuração do lado do cliente seguindo a documentação.
- Internet pública: configure o firewall IP no Azure Cosmos DB.
- Ponto de extremidade de serviço: configure o acesso ao Azure Cosmos DB a partir de redes virtuais. Considere se você esperava usar o ponto de extremidade de serviço, mas a solicitação chegou ao Azure Cosmos DB da Internet pública. Essa situação pode indicar que a sub-rede na qual o cliente estava sendo executado não habilitou o ponto de extremidade de serviço para o Azure Cosmos DB.
- Ponto de extremidade privado: configure o Link Privado do Azure para uma conta do Azure Cosmos DB. Considere também se você esperava usar o ponto de extremidade privado, mas a solicitação chegou ao Azure Cosmos DB da Internet pública. Essa situação pode indicar que o servidor de nomes de domínio (DNS) na máquina virtual não foi configurado para resolver o ponto de extremidade da conta para o endereço IP privado em vez do endereço IP público.
- Se a solicitação chegou ao Azure Cosmos DB pelo caminho esperado, a solicitação foi bloqueada porque a identidade da rede de origem não estava configurada para a conta. Verifique as configurações da conta dependendo do caminho que a solicitação chegou ao Azure Cosmos DB.
- Internet pública: verifique o acesso à rede pública da conta e as configurações de filtro de intervalo de IP.
- Ponto de extremidade de serviço: verifique o acesso à rede pública da conta e as configurações de filtro de rede virtual.
- Ponto de extremidade privado: verifique a configuração do ponto de extremidade privado da conta e a configuração de DNS privado do cliente. Esse problema pode ser devido ao acesso à conta de um ponto de extremidade privado configurado para uma conta diferente.
Se você atualizou recentemente as configurações de firewall da conta, lembre-se de que as alterações podem levar até 15 minutos para serem aplicadas.
Chave de partição excedendo o armazenamento
Nesse cenário, é comum ver erros como os que estão aqui:
Response status code does not indicate success: Forbidden (403); Substatus: 1014
Partition key reached maximum size of {...} GB
Solução
Este erro significa que seu design de particionamento atual e carga de trabalho está tentando armazenar mais do que a quantidade permitida de dados para um determinado valor de chave de partição. Não há limite para o número de partições lógicas em seu contêiner, mas o tamanho dos dados que cada partição lógica pode armazenar é limitado. Você pode entrar em contato com o suporte para esclarecimentos.
Operações sem dados não são permitidas
Esse cenário acontece ao tentar executar operações que não são de dados usando identidades do Microsoft Entra. Nesse cenário, é comum ver erros como os que estão aqui:
Operation 'POST' on resource 'calls' is not allowed through Azure Cosmos DB endpoint
Forbidden (403); Substatus: 5300; The given request [PUT ...] cannot be authorized by AAD token in data plane.
Solução
Execute a operação através do Azure Resource Manager, do portal do Azure, da CLI do Azure ou do Azure PowerShell.
Se você estiver usando o Gatilho do Azure Cosmos DB do Azure Functions, verifique se a CreateLeaseContainerIfNotExists
propriedade do gatilho não está definida como true
. O uso de identidades do Microsoft Entra bloqueia qualquer operação que não seja de dados, como a criação do contêiner de concessão.