Diagnostizieren und Behandeln von Azure Cosmos DB-Ausnahmen des Typs „Unzulässig“

GILT FÜR: NoSQL

Der HTTP-Statuscode 403 bedeutet, dass die Anforderung unzulässig ist und nicht abgeschlossen werden kann.

Durch Firewall blockierte Anforderungen

Anforderungen auf Datenebene können über die folgenden drei Wege zu Azure Cosmos DB gelangen:

  • Öffentliches Internet (IPv4)
  • Dienstendpunkt
  • Privater Endpunkt

Wenn eine Anforderung auf Datenebene mit dem Fehler „403: unzulässig“ blockiert wird, gibt die Fehlermeldung an, über welchen der drei vorherigen Pfade die Anforderung an Azure Cosmos DB übermittelt wurde.

  • Request originated from client IP {...} through public internet.
  • Request originated from client VNET through service endpoint.
  • Request originated from client VNET through private endpoint.

Lösung

Sie müssen verstehen, welcher Pfad erwartungsgemäß die Anforderung an Azure Cosmos DB übermittelt.

  • Wenn die Fehlermeldung zeigt, dass die Anforderung nicht über den erwarteten Pfad an Azure Cosmos DB gesendet wurde, liegt das Problem wahrscheinlich bei der clientseitigen Einrichtung. Überprüfen Sie Ihre clientseitige Einrichtung mithilfe der folgenden Dokumentationen.
    • Öffentliches Internet: Konfigurieren der IP-Firewall in Azure Cosmos DB
    • Dienstendpunkt: Konfigurieren des Zugriffs auf Azure Cosmos DB über virtuelle Netzwerke (VNet). Berücksichtigen Sie, ob Sie die Verwendung eines Dienstendpunkts erwartet haben, die Anfrage aber über das öffentliche Internet an Azure Cosmos DB gesendet wurde. Diese Situation könnte darauf hinweisen, dass das Subnetz, in dem der Client ausgeführt wurde, den Dienstendpunkt nicht für Azure Cosmos DB aktiviert hat.
    • Privater Endpunkt: Konfigurieren von Azure Private Link für ein Azure Cosmos DB-Konto. Berücksichtigen Sie auch, ob Sie die Verwendung eines privaten Endpunkts erwartet haben, die Anforderung aber über das öffentliche Internet an Azure Cosmos DB gesendet wurde. Diese Situation könnte darauf hinweisen, dass der Domänennamenserver (DNS) auf dem virtuellen Computer nicht so konfiguriert wurde, dass der Kontoendpunkt in die private IP-Adresse anstelle der öffentlichen IP-Adresse aufgelöst wird.
  • Wenn die Anforderung über den erwarteten Pfad an Azure Cosmos DB übermittelt wurde, wurde sie blockiert, da die Quellnetzwerkidentität nicht für das Konto konfiguriert wurde. Überprüfen Sie die Einstellungen des Kontos abhängig vom Pfad, über den die Anforderung an Azure Cosmos DB übermittelt wurde.
    • Öffentliches Internet: Überprüfen Sie den öffentlichen Netzwerkzugriff des Kontos sowie die Konfigurationen für den IP-Adressbereichfilter.
    • Dienstendpunkt: Überprüfen Sie den öffentlichen Netzwerkzugriff des Kontos sowie die Konfigurationen für den VNet-Filter.
    • Privater Endpunkt: Überprüfen Sie die Konfiguration des privaten Kontoendpunkts und die private DNS-Konfiguration des Clients. Möglicherweise ist der Grund für dieses Problem, dass über einen privaten Endpunkt, der für ein anderes Konto eingerichtet ist, auf das Konto zugegriffen wird.

Wenn Sie die Firewallkonfigurationen des Kontos vor Kurzem aktualisiert haben, bedenken Sie, dass es bis zu 15 Minuten dauern kann, bis die Änderungen übernommen werden.

Partitionsschlüssel überschreitet Speicher

Bei diesem Szenario tauchen häufig Fehler wie die folgenden auf:

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

Lösung

Dieser Fehler bedeutet, dass Ihr aktueller Partitionierungsentwurf und Ihre aktuelle Workload versuchen, für einen bestimmten Partitionsschlüsselwert mehr als die zulässige Datenmenge zu speichern. Es gibt keine Beschränkung für die Anzahl logischer Partitionen in Ihrem Container, aber die Datenmenge, die von den einzelnen logischen Partitionen gespeichert werden kann, ist begrenzt. Wenn Sie hierzu Fragen haben, wenden Sie sich an den Support.

Nicht datenbezogene Vorgänge sind nicht zulässig.

Dieses Szenario liegt vor beim Versuch, nicht datenbezogene Vorgänge mithilfe von Microsoft Entra-Identitäten auszuführen. Bei diesem Szenario tauchen häufig Fehler wie die folgenden auf:

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.

Lösung

Führen Sie den Vorgang über Azure Resource Manager, das Azure-Portal, die Azure CLI oder Azure PowerShell aus. Wenn Sie den Azure Cosmos DB-Trigger von Azure Functions verwenden, stellen Sie sicher, dass die Eigenschaft CreateLeaseContainerIfNotExists des Triggers nicht auf true festgelegt ist. Die Verwendung von Microsoft Entra-Identitäten blockiert alle nicht datenbezogenen Vorgänge, z. B. das Erstellen des Leasecontainers.