Diagnosticare e risolvere i problemi relativi ad eccezioni non autorizzate di Azure Cosmos DB

SI APPLICA A: NoSQL

Il codice di stato HTTP 403 rappresenta una richiesta non autorizzata.

Firewall che blocca le richieste

Le richieste del piano dati possono arrivare ad Azure Cosmos DB tramite i tre percorsi seguenti.

  • Internet pubblico (IPv4)
  • Endpoint di servizio
  • Endpoint privato

Quando una richiesta del piano dati è bloccata con 403 Accesso negato, il messaggio di errore specifica tramite quale dei tre percorsi precedenti la richiesta è stata inviata ad 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.

Soluzione

Comprendere tramite quale percorso è prevista la ricezione della richiesta in Azure Cosmos DB.

  • Se il messaggio di errore indica che la richiesta non è stata inviata ad Azure Cosmos DB tramite il percorso previsto, è probabile che il problema si verifichi con la configurazione lato client. Controllare attentamente la configurazione sul lato client seguendo le documentazioni seguenti.
    • Internet pubblico: Configurare un firewall IP in Azure Cosmos DB.
    • Endpoint servizio: configurare l'accesso ad Azure Cosmos DB dalle reti virtuali. Valutare se si prevede di usare l'endpoint di servizio, ma la richiesta è arrivata ad Azure Cosmos DB dalla rete Internet pubblica. Questa situazione potrebbe indicare che la subnet in cui era in esecuzione il client non ha abilitato l'endpoint di servizio per Azure Cosmos DB.
    • Endpoint privato: Configurare Collegamento privato di Azure per un account di Azure Cosmos DB. Considerare anche se si prevede di usare un endpoint privato, ma la richiesta è arrivata ad Azure Cosmos DB dalla rete Internet pubblica. Questa situazione potrebbe indicare che il server dei nomi di dominio (DNS) nella macchina virtuale non è stato configurato per risolvere l'endpoint dell'account nell'endpoint privato anziché nell'indirizzo IP pubblico.
  • Se la richiesta è stata inviata ad Azure Cosmos DB tramite il percorso previsto, la richiesta è stata bloccata perché l'identità di rete di origine non è stata configurata per l'account. Controllare le impostazioni dell'account a seconda del percorso in cui è stata inviata la richiesta ad Azure Cosmos DB.
    • Internet pubblico: controllare l'accesso alla rete pubblica e le configurazioni dei filtri dell'intervallo IP dell'account.
    • Endpoint servizio: controllare l'accesso alla rete pubblica dell'account e le configurazioni del filtro di rete virtuale.
    • Endpoint privato: controllare la configurazione dell'endpoint privato dell'account e la configurazione DNS privata del client. Questo problema potrebbe essere dovuto all'accesso all'account da un endpoint privato configurato per un account diverso.

Se le configurazioni del firewall dell'account sono state aggiornate di recente, tenere presente che l'applicazione delle modifiche può richiedere fino a 15 minuti.

Chiave di partizione che supera l'archiviazione

In questo scenario è comune vedere errori come quelli riportati di seguito:

Response status code does not indicate success: Forbidden (403); Substatus: 1014
Partition key reached maximum size of {...} GB

Soluzione

Questo errore indica che la progettazione del partizionamento corrente e il carico di lavoro stanno tentando di archiviare più della quantità di dati consentita per un determinato valore della chiave di partizione. Non esiste alcun limite al numero di partizioni logiche nel contenitore, ma le dimensioni dei dati che ogni partizione logica può archiviare è limitata. È possibile contattare il supporto per ottenere chiarimenti.

Le operazioni non di dati non sono consentite

Questo scenario si verifica quando si tenta di eseguire operazioni non di dati usando le identità di Microsoft Entra. In questo scenario è comune vedere errori come quelli riportati di seguito:

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.

Soluzione

Eseguire l'operazione tramite Azure Resource Manager, il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell. Se si usa il trigger Funzioni di Azure Azure Cosmos DB, assicurarsi che la CreateLeaseContainerIfNotExists proprietà del trigger non sia impostata su true. L'uso delle identità di Microsoft Entra blocca qualsiasi operazione non di dati, ad esempio la creazione del contenitore di lease.