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


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

Код состояния 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.

Solution

Узнайте, по какому пути ожидается, что запрос поступит в 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

Solution

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

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

Этот сценарий происходит при попытке выполнять операции, не связанные с данными, с использованием удостоверений 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.

Solution

Выполните операцию, используя Azure Resource Manager, портал Azure, Azure CLI или Azure PowerShell.

Если эта ошибка возникает при использовании аутентификации Microsoft Entra с методами плоскости данных SDK, которые управляют ресурсами базы данных или контейнеров (например, create*, createIfNotExists, или replace операциями с базами данных или контейнерами), эти методы не работают, так как им требуется delete доступ к плоскости управления. Если у вас есть доступ только к уровню данных через контроль доступа на основе ролей Microsoft Entra (RBAC), вы не можете выполнять операции уровня управления. Используйте SDK управления с соответствующими ролями Microsoft Entra RBAC (например, Участник или Участник аккаунта Cosmos DB) для выполнения этих задач.

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