Diagnosticar e solucionar problemas Azure Cosmos DB exceções proibidas
APLICA-SE A: NoSQL
O código de status HTTP 403 representa que a solicitação está proibida de ser concluída.
Solicitações de bloqueio de firewall
As solicitações do plano de dados podem chegar ao Azure Cosmos DB por meio dos três caminhos a seguir.
- Internet pública (IPv4)
- Ponto de extremidade de serviço
- Ponto de extremidade privado
Quando uma solicitação do 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 foi para o Azure Cosmos DB por meio do 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 as documentações.
- Internet pública: configurar o firewall de IP no Azure Cosmos DB.
- Ponto de extremidade de serviço: configure o acesso ao Azure Cosmos DB 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 em que o cliente estava operando 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 DNS (servidor de nomes de domínio) na máquina virtual não estava configurado para resolver o ponto de extremidade da conta para o endereço IP privado em vez do endereço público.
- Se a solicitação for para o Azure Cosmos DB por meio do 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 foi para o Azure Cosmos DB.
- Internet pública: Verifique as configurações de filtro de intervalo de IP e acesso à rede pública da conta.
- Ponto de extremidade de serviço: verifique as configurações de filtro da rede virtual e o acesso à rede pública da conta.
- Ponto de extremidade privado: Verifique a configuração do ponto de extremidade privado da conta e a configuração do 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, tenha em mente 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 seguintes:
Response status code does not indicate success: Forbidden (403); Substatus: 1014
Partition key reached maximum size of {...} GB
Solução
Esse erro significa que a carga de trabalho e o design de particionamento atuais estão tentando armazenar mais do que a quantidade permitida de dados para um determinado valor de chave de partição. Não há nenhum 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. Entre em contato com o suporte para obter esclarecimentos.
Operações não relacionadas a dados não são permitidas.
Esse cenário ocorre ao tentar executar operações que não relacionadas a dados usando identidades do Microsoft Entra. Nesse cenário, é comum ver erros como os seguintes:
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 por meio 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 propriedade CreateLeaseContainerIfNotExists
do gatilho não está definida como true
. O uso de identidades do Microsoft Entra bloqueia todas as operações não relacionadas a dados, como a criação do contêiner de concessão.