Diagnozowanie i rozwiązywanie problemów z wyjątkami zabronionych usługi Azure Cosmos DB

DOTYCZY: NoSQL

Kod stanu HTTP 403 reprezentuje żądanie jest zabronione do ukończenia.

Żądania blokowania zapory

Żądania płaszczyzny danych mogą przychodzić do usługi Azure Cosmos DB za pośrednictwem następujących trzech ścieżek.

  • Publiczny Internet (IPv4)
  • Punkt końcowy usługi
  • Prywatny punkt końcowy

Gdy żądanie płaszczyzny danych zostanie zablokowane z 403 Zabronione, komunikat o błędzie określa, za pomocą których z poprzednich trzech ścieżek żądanie dotarło do usługi 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.

Rozwiązanie

Dowiedz się, która ścieżka to oczekiwane żądanie do usługi Azure Cosmos DB.

  • Jeśli komunikat o błędzie pokazuje, że żądanie nie przyszło do usługi Azure Cosmos DB za pośrednictwem oczekiwanej ścieżki, problem prawdopodobnie dotyczy konfiguracji po stronie klienta. Dokładnie sprawdź konfigurację po stronie klienta, postępując zgodnie z dokumentacją.
    • Publiczny Internet: skonfiguruj zaporę ip w usłudze Azure Cosmos DB.
    • Punkt końcowy usługi: skonfiguruj dostęp do usługi Azure Cosmos DB z sieci wirtualnych. Rozważ użycie punktu końcowego usługi, ale żądanie przyszło do usługi Azure Cosmos DB z publicznego Internetu. Taka sytuacja może wskazywać, że podsieć uruchomiona przez klienta nie włączyła punktu końcowego usługi do usługi Azure Cosmos DB.
    • Prywatny punkt końcowy: skonfiguruj usługę Azure Private Link dla konta usługi Azure Cosmos DB. Należy również rozważyć użycie prywatnego punktu końcowego, ale żądanie dotarło do usługi Azure Cosmos DB z publicznego Internetu. Taka sytuacja może wskazywać, że serwer nazw domen (DNS) na maszynie wirtualnej nie został skonfigurowany do rozpoznawania punktu końcowego konta jako prywatnego zamiast publicznego adresu IP.
  • Jeśli żądanie dotarło do usługi Azure Cosmos DB za pośrednictwem oczekiwanej ścieżki, żądanie zostało zablokowane, ponieważ tożsamość sieci źródłowej nie została skonfigurowana dla konta. Sprawdź ustawienia konta w zależności od ścieżki, którą żądanie dotarło do usługi Azure Cosmos DB.
    • Publiczny Internet: sprawdź konfiguracje filtrów zakresu adresów IP i dostępu do sieci publicznej konta.
    • Punkt końcowy usługi: sprawdź konfiguracje filtrów sieci publicznej i dostępu do sieci wirtualnej konta.
    • Prywatny punkt końcowy: sprawdź konfigurację prywatnego punktu końcowego konta i prywatną konfigurację DNS klienta. Ten problem może być spowodowany uzyskaniem dostępu do konta z prywatnego punktu końcowego skonfigurowanego dla innego konta.

Jeśli ostatnio zaktualizowano konfiguracje zapory konta, należy pamiętać, że zastosowanie zmian może potrwać do 15 minut.

Klucz partycji przekraczający magazyn

W tym scenariuszu często występują błędy, takie jak te w tym miejscu:

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

Rozwiązanie

Ten błąd oznacza, że bieżący projekt partycjonowania i obciążenie próbuje przechowywać więcej niż dozwoloną ilość danych dla danej wartości klucza partycji. Nie ma limitu liczby partycji logicznych w kontenerze, ale rozmiar danych, które może przechowywać każda partycja logiczna, jest ograniczony. Aby uzyskać wyjaśnienia, możesz skontaktować się z pomocą techniczną.

Operacje inne niż dane nie są dozwolone

Ten scenariusz występuje podczas próby wykonania operacji innych niż dane przy użyciu tożsamości firmy Microsoft Entra. W tym scenariuszu często występują błędy, takie jak te w tym miejscu:

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.

Rozwiązanie

Wykonaj operację za pomocą usługi Azure Resource Manager, witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Jeśli używasz wyzwalacza usługi Azure Functions w usłudze Azure Cosmos DB, upewnij się, że CreateLeaseContainerIfNotExists właściwość wyzwalacza nie jest ustawiona na truewartość . Użycie tożsamości entra firmy Microsoft blokuje dowolną operację niezwiązaną z danymi, taką jak tworzenie kontenera dzierżawy.