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 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). Wenn Sie beispielsweise erwarten, einen Dienstendpunkt zu verwenden, aber die Anforderung über das öffentliche Internet an Azure Cosmos DB übermittelt wurde, wurde vom Subnetz, das der Client ausgeführt hat, möglicherweise nicht der Dienstendpunkt für Azure Cosmos DB aktiviert.
- Privater Endpunkt: Konfigurieren von Azure Private Link für ein Azure Cosmos DB-Konto. Wenn Sie beispielsweise erwarten, einen privaten Endpunkt zu verwenden, aber die Anforderung über das öffentliche Internet an Azure Cosmos DB übermittelt wurde, wurde das DNS auf dem virtuellen Computer möglicherweise nicht für die Auflösung des Kontoendpunkts an die private IP-Adresse konfiguriert, sodass stattdessen die öffentliche IP-Adresse des Kontos verwendet wurde.
- Wenn die Anforderungen ü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 dafür, 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.
Andere Vorgänge als Datenvorgänge sind unzulä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.
Nächste Schritte
- Konfigurieren der IP-Firewall
- Konfigurieren des Zugriffs über virtuelle Netzwerke
- Konfigurieren des Zugriffs über private Endpunkte