Настройка брандмауэра IP-адресов в Azure Cosmos DB

Область применения: Nosql Mongodb Кассандра Гремлин Таблица

Для защиты данных, хранящихся в учетной записи, в Azure Cosmos DB реализована поддержка модели авторизации на основе секретов. Проверка целостности данных в этой модели осуществляется с использованием надежного кода проверки подлинности сообщений с помощью хэш-функций (HMAC). Для поддержки входящего трафика брандмауэра Azure Cosmos DB использует политики контроля доступа на основе IP-адресов. Эта модель похожа на использование правил брандмауэра в традиционной системе базы данных. Она предоставляет дополнительный уровень защиты для учетных записей. С помощью брандмауэров можно настроить учетную запись Azure Cosmos DB только из утвержденного набора компьютеров и (или) облачных служб. Доступ к данным, хранящимся в базе данных Azure Cosmos DB из этих утвержденных наборов компьютеров и служб, по-прежнему потребует, чтобы вызывающий объект присутствовал на допустимом маркере авторизации.

Управление доступом на основе IP-адресов

По умолчанию ваша учетная запись Azure Cosmos DB доступна из Интернета, если запрос сопровождается допустимым маркером авторизации. Чтобы настроить управление доступом на основе политик IP, пользователь должен предоставить набор IP-адресов или диапазонов IP-адресов в форме CIDR (маршрутизация между доменами без класса), чтобы включить в список разрешенных IP-адресов клиента для доступа к определенной учетной записи Azure Cosmos DB. После применения этой конфигурации любые запросы, полученные от компьютеров, IP-адреса которых не входят в список разрешенных, получат ответ "Ошибка 403: запрещено". При использовании брандмауэра IP-адресов рекомендуется разрешить порталу Azure доступ к учетной записи. Этот доступ необходим, чтобы разрешить использование обозревателя данных, а также получать метрики для учетной записи, которые отображаются на портале Azure. При использовании обозревателя данных нужно не только предоставить порталу Azure доступ к учетной записи, но и изменить параметры брандмауэра, добавив текущий IP-адрес в его правила. Обратите внимание, что применение новых параметров брандмауэра может занять до 15 минут. В течение этого времени он может реагировать на события несогласованным образом.

Вы можете сочетать брандмауэр IP-адресов с политикой контроля доступа на уровне подсети и виртуальной сети. Объединив эти методы, можно настроить доступ для любого источника с общедоступным IP-адресом и (или) определенной подсети в виртуальной сети. Дополнительные сведения о контроле доступа на уровне подсети и виртуальной сети см. в статье Безопасный доступ к учетной записи Azure Cosmos DB с использованием конечной точки службы виртуальной сети Azure.

Для сводки маркер авторизации всегда требуется для доступа к учетной записи Azure Cosmos DB. Если брандмауэр IP и виртуальная сеть контроль доступа списки (ACL) не настроены, учетная запись Azure Cosmos DB может быть доступ к ней с помощью маркера авторизации. После настройки брандмауэра IP-адресов или списков управления доступом виртуальной сети в учетной записи Azure Cosmos DB только запросы, поступающие из указанных источников (и с маркером авторизации), получают допустимые ответы.

Вы можете защитить данные, хранимые в учетной записи Azure Cosmos DB, с помощью брандмауэров IP-адресов. Для фильтрации входящего трафика Azure Cosmos DB поддерживает политики управления доступом на основе IP-адресов. Брандмауэр IP-адресов можно настроить в учетной записи Azure Cosmos DB любым из следующих способов:

  • на портале Azure;
  • декларативно с помощью шаблона Azure Resource Manager;
  • программным способом, изменив значение свойства ipRangeFilter с помощью Azure CLI или Azure PowerShell.

Настройка брандмауэра IP-адресов с помощью портала Azure

Чтобы настроить политику контроля доступа на основе IP-адресов на портале Azure, перейдите на страницу учетной записи Azure Cosmos DB и выберите в меню навигации Брандмауэр и виртуальные сети. Измените значение параметра Разрешить доступ из, указав Выбранные сети, и нажмите Сохранить. Если вы изменяете параметры сети общедоступного доступа, отключив его или разрешив для всех сетей, вы потеряете IP-адрес брандмауэра, который вы, возможно, настроили раньше.

Снимок экрана, показывающий, как открыть страницу

При включенном контроле доступа на основе IP-адресов портал Azure предоставляет возможность указать IP-адреса, диапазоны IP-адресов и параметры. Параметры обеспечивают доступ к другим службам Azure и порталу Azure. Сведения об этих параметрах приведены в указанных ниже разделах.

Примечание.

После включения политики контроля доступа на основе IP-адресов для учетной записи Azure Cosmos DB отклоняются все запросы к этой учетной записи Azure Cosmos DB с компьютеров, IP-адреса которых не входят в список диапазонов разрешенных IP-адресов. В соответствии с этой политикой также блокируется возможность просмотра ресурсов Azure Cosmos DB на портале.

Разрешение запросов на портале Azure

Чтобы программным способом обеспечить доступ к порталу Azure при включении политики управления доступом на основе IP-адресов, необходимо добавить его IP-адрес к свойству ipRangeFilter. IP-адрес портала:

Область/регион IP-адрес
Китай 139.217.8.252
US Gov 52.244.48.71
Все другие регионы 104.42.195.92,40.76.54.131,52.176.6.30,52.169.50.45,52.187.184.26

Вы можете включить запросы на доступ к порталу Azure, установив флажок Разрешить доступ с портала Azure, как показано на следующем снимке экрана:

Снимок экрана, показывающий, как разрешить доступ к порталу Azure

Новые IP-адреса портал Azure

Службы портала Cosmos DB переходят на новую инфраструктуру в 2024 году. В рамках этого перехода учетные записи с включенным брандмауэром потребуют, чтобы новые IP-адреса были разрешены для продолжения доступа к некоторым функциям портала, таким как Обозреватель данных. В этом шаге также представлены выделенные IP-адреса для учетных записей API Mongo DB и Apache Cassandra.

Во время этого перехода параметр "Разрешить доступ из портал Azure" добавляет текущие и новые IP-адреса в параметры брандмауэра учетной записи (включая MongoDB и Cassandra определенные адреса для этих учетных записей). После завершения перехода будет доступен параметр портала для удаления старых IP-адресов.

Azure Public
API учетной записи базы данных IP-адреса
Все 13.91.105.215, 4.210.172.107, 13.88.56.148, 40.91.218.243
Только MongoDB 20.245.81.54, 40.118.23.126, 40.80.152.199, 13.95.130.121
Только Apache Cassandra 40.113.96.14, 104.42.11.145, 137.117.230.240, 168.61.72.237
Azure – Китай
API учетной записи базы данных IP-адреса
Все 163.228.137.6, 143.64.170.142
Только MongoDB 52.131.240.99, 143.64.61.130
Только Apache Cassandra 40.73.99.146, 143.64.62.47
Azure – Правительство США
API учетной записи базы данных IP-адреса
Все 52.247.163.6, 52.244.134.181
Только MongoDB 52.244.176.112, 52.247.148.42
Только Apache Cassandra 52.244.50.101, 52.227.165.24

Примечание.

Если у вас возникли проблемы, связанные с подключением к учетной записи Azure Cosmos DB из Обозреватель данных, ознакомьтесь с руководством по устранению неполадок с данными Обозреватель.

Allow requests from global Azure datacenters or other sources within Azure (Разрешение запросов от глобальных центров обработки данных Azure или других источников в пределах Azure).

Если вы выполняете доступ к учетной записи Azure Cosmos DB из служб, которые не предоставляют статический IP-адрес (например, Azure Stream Analytics и "Функции Azure"), вы все равно можете использовать брандмауэр IP-адресов для ограничения доступа. Вы можете включить доступ из других источников Azure, установив флажок Принимать подключения из общедоступных центров данных Azure, как показано на следующем снимке экрана:

Снимок экрана, показывающий, как принимать подключения из центров обработки данных Azure

При включении этого параметра IP-адрес 0.0.0.0 будет добавлен в список разрешенных IP-адресов. IP-адрес 0.0.0.0 разрешает запросы к учетной записи Azure Cosmos DB только из диапазона IP-адресов центров обработки данных Azure. Этот параметр неприменим для получения доступа к учетной записи Azure Cosmos DB из других диапазонов IP-адресов.

Примечание.

Этот параметр настраивает брандмауэр на разрешение всех запросов из Azure, в том числе из подписок других пользователей, развернутых в Azure. Этот параметр разрешает большой список IP-адресов, что существенно снижает эффективность политики брандмауэра. Его следует использовать, только если запросы будут поступать из расположений без статических IP-адресов или подсетей в виртуальных сетях. При выборе этого варианта автоматически разрешается доступ с портала Azure, так как сам портал Azure развернут в Azure.

Запросы с текущего IP-адреса

Для упрощения разработки портал Azure помогает определить и добавить IP-адрес клиентского компьютера в список разрешенных адресов. Приложения, работающие на вашем компьютере, смогут после этого получить доступ к учетной записи Azure Cosmos DB.

Портал автоматически определяет IP-адрес клиента. Это может быть IP-адрес клиента вашего компьютера или сетевого шлюза. Удалите этот IP-адрес, прежде чем переносить рабочие нагрузки в рабочую среду.

Чтобы добавить текущий IP-адрес в список IP-адресов, выберите Добавить мой текущий IP-адрес. Затем выберите Сохранить.

Снимок экрана, показывающий, как настроить параметры брандмауэра текущего IP-адреса

Запросы из облачных служб

В Azure облачные службы — это стандартный способ размещения логики службы среднего уровня с помощью Azure Cosmos DB. Чтобы разрешить доступ к учетной записи Azure Cosmos DB из облачной службы, обязательно добавьте общедоступный IP-адрес этой службы в список разрешенных IP-адресов, связанных с используемой учетной записью Azure Cosmos DB. Для этого настройте политику контроля доступа на основе IP-адресов. Так вы предоставите всем экземплярам ролей облачных служб доступ к учетной записи Azure Cosmos DB.

IP-адреса для ваших облачных служб можно получить на портале Azure, как показано на следующем снимке экрана:

Снимок экрана с общедоступным IP-адресом для облачной службы на портале Azure

При горизонтальном увеличении масштаба облачной службы за счет добавления экземпляров ролей каждый новый экземпляр автоматически получит доступ к учетной записи Azure Cosmos DB, так как он входит в ту же облачную службу.

Запросы из виртуальных машин

Можно использовать также виртуальные машины или масштабируемые наборы виртуальных машин для размещения служб среднего уровня с помощью Azure Cosmos DB. Чтобы настроить учетную запись Azure Cosmos DB, чтобы разрешить доступ к виртуальным машинам, необходимо настроить общедоступный IP-адрес виртуальной машины и (или) масштабируемый набор виртуальных машин в качестве одного из разрешенных IP-адресов для учетной записи Azure Cosmos DB, настроив политику управления доступом к IP-адресам.

IP-адреса для виртуальных машин можно узнать на портале Azure, как показано на следующем снимке экрана:

Снимок экрана с общедоступным IP-адресом для виртуальной машины на портале Azure

Добавленные в группу экземпляры виртуальных машин автоматически получают доступ к учетной записи Azure Cosmos DB.

Запросы из Интернета

Если вы выполняете доступ к учетной записи Azure Cosmos DB с компьютера через Интернет, необходимо добавить IP-адрес или диапазон IP-адресов клиента этого компьютера в список разрешенных IP-адресов для этой учетной записи.

Добавление в брандмауэр правил для исходящего трафика

Чтобы узнать, как получить текущий список диапазонов исходящих IP-адресов для добавления в параметры брандмауэра, ознакомьтесь со сведениями на странице Скачивание списка диапазонов IP-адресов и тегов служб Azure.

Чтобы узнать, как автоматизировать этот список, обратитесь к разделу Использование API обнаружения тегов служб.

Настройка брандмауэра IP-адресов с помощью шаблона Resource Manager

Чтобы настроить контроль доступа к учетной записи Azure Cosmos DB, обязательно укажите в шаблоне Resource Manager атрибут ipRules с массивом диапазонов разрешенных IP-адресов. Если настроить брандмауэр IP-адресов для уже развернутой учетной записи Azure Cosmos DB, убедитесь locations , что массив соответствует развернутому в настоящее время. Вы не можете одновременно изменять массив locations и другие свойства. Подробные сведения и примеры шаблонов Azure Resource Manager для Azure Cosmos DB см. в статье Шаблоны Azure Resource Manager для Azure Cosmos DB.

Внимание

Свойство ipRules было введено в API версии 2020-04-01. В предыдущих версиях вместо него можно было использовать свойство ipRangeFilter, которое представляет собой список IP-адресов, разделенных запятыми.

В приведенном ниже примере показано, как использовать свойство ipRules в API версии 2020-04-01 или более поздней версии.

{
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "name": "[variables('accountName')]",
  "apiVersion": "2020-04-01",
  "location": "[parameters('location')]",
  "kind": "GlobalDocumentDB",
  "properties": {
    "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
    "locations": "[variables('locations')]",
    "databaseAccountOfferType": "Standard",
    "enableAutomaticFailover": "[parameters('automaticFailover')]",
    "ipRules": [
      {
        "ipAddressOrRange": "40.76.54.131"
      },
      {
        "ipAddressOrRange": "52.176.6.30"
      },
      {
        "ipAddressOrRange": "52.169.50.45"
      },
      {
        "ipAddressOrRange": "52.187.184.26"
      }
    ]
  }
}

Ниже приведен тот же пример для API до версии 2020-04-01:

{
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "name": "[variables('accountName')]",
  "apiVersion": "2019-08-01",
  "location": "[parameters('location')]",
  "kind": "GlobalDocumentDB",
  "properties": {
    "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
    "locations": "[variables('locations')]",
    "databaseAccountOfferType": "Standard",
    "enableAutomaticFailover": "[parameters('automaticFailover')]",
    "ipRangeFilter":"40.76.54.131,52.176.6.30,52.169.50.45,52.187.184.26"
  }
}

Настройка политики контроля доступа на основе IP-адресов с помощью интерфейса командной строки Azure

Следующая команда демонстрирует, как создать учетную запись Azure Cosmos DB с использованием контроля доступа на основе IP-адресов:

# Create an Azure Cosmos DB account with default values and IP Firewall enabled
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
ipRangeFilter='192.168.221.17,183.240.196.255,40.76.54.131'

# Make sure there are no spaces in the comma-delimited list of IP addresses or CIDR ranges.
az cosmosdb create \
    -n $accountName \
    -g $resourceGroupName \
    --locations regionName='West US 2' failoverPriority=0 isZoneRedundant=False \
    --locations regionName='East US 2' failoverPriority=1 isZoneRedundant=False \
    --ip-range-filter $ipRangeFilter

Настройка политики контроля доступа на основе IP-адресов с помощью PowerShell

Следующий сценарий демонстрирует, как создать учетную запись Azure Cosmos DB с использованием контроля доступа на основе IP-адресов:

# Create an Azure Cosmos DB account with default values and IP Firewall enabled
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$ipRules = @("192.168.221.17","183.240.196.255","40.76.54.131")

$locations = @(
    @{ "locationName"="West US 2"; "failoverPriority"=0; "isZoneRedundant"=False },
    @{ "locationName"="East US 2"; "failoverPriority"=1, "isZoneRedundant"=False }
)

# Make sure there are no spaces in the comma-delimited list of IP addresses or CIDR ranges.
$CosmosDBProperties = @{
    "databaseAccountOfferType"="Standard";
    "locations"=$locations;
    "ipRules"=$ipRules
}

New-AzResource -ResourceType "Microsoft.DocumentDb/databaseAccounts" `
    -ApiVersion "2020-04-01" -ResourceGroupName $resourceGroupName `
    -Name $accountName -PropertyObject $CosmosDBProperties

Устранение неполадок с политикой контроля доступа на основе IP-адресов

Для устранения неполадок с политикой контроля доступа на основе IP-адресов у вас есть следующие возможности и средства:

Портал Azure

Включив политику контроля доступа на основе IP-адресов для учетной записи Azure Cosmos DB, вы заблокируете все запросы к этой учетной записи с любых компьютеров, IP-адреса которых не входят в список диапазонов разрешенных IP-адресов. Чтобы разрешить операции плоскости данных на портале (например, просмотр контейнеров и запрашивание документов), следует явным образом разрешить доступ к порталу Azure на панели Брандмауэр портала.

Пакеты SDK

Если доступ к ресурсам Azure Cosmos DB осуществляется с помощью пакетов SDK с компьютеров, не включенных в список разрешенных, возвращается общий отклик 403 Запрещено без дополнительных сведений. Проверьте список разрешенных IP-адресов для учетной записи и убедитесь, что к учетной записи Azure Cosmos DB применяется правильная конфигурация политики.

IP-адреса источника в заблокированных запросах

Включение журнала ведения диагностики для учетной записи Azure Cosmos DB. Эти журналы отображают все запросы и отклики. Сообщения, имеющие отношение к брандмауэру, помещаются в журнал с кодом ответа 403. Отфильтровав эти сообщения, вы получите список исходных IP-адресов для заблокированных запросов. См. дополнительные сведения о журнале ведения диагностики Azure Cosmos DB.

Запросы из подсети, в которой включена конечная точка службы для Azure Cosmos DB

Запросы из подсети виртуальной сети, в которой включена конечная точка службы для Azure Cosmos DB, передают в учетную запись Azure Cosmos DB идентификаторы виртуальной сети и подсети. Такие запросы не имеют общедоступного IP-адреса источника, поэтому они отклоняются фильтрами IP-адресов. Чтобы разрешить доступ из определенных подсетей в виртуальных сетях, добавьте список управления доступом, как описано в руководстве по настройке доступа на основе подсети и виртуальной сети для учетной записи Azure Cosmos DB. Применение новых правил брандмауэра может занять до 15 минут. В течение этого периода он может реагировать на события несогласованным образом.

Частные IP-адреса в списке разрешенных адресов

Создание или обновление учетной записи Azure Cosmos DB со списком разрешенных адресов, содержащих частные IP-адреса, завершится ошибкой. Убедитесь, что в списке нет частных IP-адресов.

Следующие шаги

Сведения о том, как настроить конечную точку службы для виртуальной сети для учетной записи Azure Cosmos DB, см. в следующих статьях: