Поделиться через


Диагностика и устранение неполадок с исключениями запрета доступа в Azure Cosmos DB

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Код состояния HTTP 403 означает, что выполнение запроса запрещено.

Брандмауэр блокирует запросы

Запросы уровня данных могут поступать в Azure Cosmos DB через следующие три пути.

  • Общедоступный Интернет (IPv4)
  • Конечная точка службы
  • Частная конечная точка

Если запрос на уровне данных заблокирован с кодом ошибки 403 запрещено, в сообщении об ошибке указывается, через какой из предыдущих трех путей запрос пришел к 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.

Решение

Узнайте, по какому пути ожидается, что запрос поступит в Azure Cosmos DB.

  • Если сообщение об ошибке показывает, что запрос не пришел в Azure Cosmos DB через ожидаемый путь, проблема, скорее всего, связана с настройками на стороне клиента. Дважды проверьте настройку на стороне клиента, следуя документациям.
    • Общедоступный Интернет. Настройка брандмауэра IP-адресов в Azure Cosmos DB.
    • Конечная точка службы. Настройка доступа к Azure Cosmos DB из виртуальных сетей. Подумайте, что если вы ожидали использовать конечную точку службы, но запрос пришел в Azure Cosmos DB из публичного интернета. Эта ситуация может указывать на то, что подсеть, в которой работает клиент, не имеет включенной конечной точки службы для Azure Cosmos DB.
    • Частная конечная точка: Настройка Azure Private Link для учетной записи Azure Cosmos DB. Если вы ожидали использовать частную конечную точку, но запрос поступил в Azure Cosmos DB из общедоступного Интернета. Эта ситуация может указывать на то, что сервер доменных имен (DNS) на виртуальной машине не настроен для разрешения конечной точки учетной записи в частный, а не общедоступный IP-адрес.
  • Если запрос пришел в Azure Cosmos DB через ожидаемый путь, запрос был заблокирован, так как исходное сетевое удостоверение не было настроено для учетной записи. Проверьте параметры учетной записи в зависимости от пути, по которому запрос пришел в Azure Cosmos DB.
    • Общедоступный Интернет. Проверьте конфигурацию доступа к общедоступным сетям и фильтрации диапазонов IP-адресов учетной записи.
    • Конечная точка службы: проверьте конфигурации общедоступного сетевого доступа учетной записи и конфигурации фильтра виртуальной сети.
    • Приватная конечная точка: проверьте конфигурацию приватной конечной точки учетной записи и конфигурацию приватного DNS клиента. Эта проблема может возникнуть из-за доступа к учетной записи из частной конечной точки, настроенной для другой учетной записи.

Если вы недавно обновили конфигурацию брандмауэра учетной записи, помните, что для применения изменений может потребоваться до 15 минут.

Ключ раздела превышает допустимый объем хранилища.

В этом сценарии часто возникают ошибки, подобные следующим:

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

Решение

Эта ошибка означает, что ваша текущая схема секционирования и рабочая нагрузка пытаются сохранить объем данных, превышающий допустимый для заданного значения ключа секции. В контейнере нет ограничений на количество логических секций, но размер данных, которые могут храниться логическими секциями, ограничен. Более подробную информацию можно получить в службе поддержки.

Операции, не связанные с данными, не разрешены.

Этот сценарий происходит при попытке выполнять операции, не связанные с данными, с использованием удостоверений Microsoft Entra. В этом сценарии часто возникают ошибки, подобные следующим:

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.

Решение

Выполните операцию, используя Azure Resource Manager, портал Azure, Azure CLI или Azure PowerShell. Если вы используете триггер Azure Functions для Azure Cosmos DB, убедитесь, что свойство триггера CreateLeaseContainerIfNotExists не установлено на true. При использовании учетных записей Microsoft Entra блокируется любая операция, не относящаяся к обработке данных, например, создание контейнера аренд.