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 especificará por meio de qual dos três caminhos acima 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 seja com a 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 (VNet). Por exemplo, se você espera usar o ponto de extremidade de serviço, mas a solicitação chegou ao Azure Cosmos DB via Internet pública, talvez a sub-rede na qual o cliente estava sendo executado não tenha habilitado 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. Por exemplo, se você espera usar o ponto de extremidade privado, mas a solicitação chegou ao Azure Cosmos DB via Internet pública, talvez o DNS na VM não tenha sido configurado para resolver o ponto de extremidade da conta para o IP privado, portanto, ele passou pelo IP público da conta.
  • 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 ser permitida para a conta. Verifique as configurações da conta dependendo do caminho que a solicitação chegou ao Azure Cosmos DB.

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 abaixo:

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.

Não são permitidas operações sem dados

Esse cenário acontece ao tentar executar operações que não sejam de dados usando identidades do Microsoft Entra. Nesse cenário, é comum ver erros como os abaixo:

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.

Próximos passos

  • Configure o Firewall IP.
  • Configure o acesso a partir de redes virtuais.
  • Configure o acesso a partir de pontos de extremidade privados.