Configurar a firewall de IP no Azure Cosmos DB

APLICA-SE A: NoSQL MongoDB Cassandra Gremlin Tabela

Para proteger os dados armazenados em sua conta, o Azure Cosmos DB dá suporte a um modelo de autorização baseado em segredo que utiliza um HMAC (Código de Autenticação de Mensagem) forte baseado em hash. Além disso, o Azure Cosmos DB dá suporte a controles de acesso baseados em IP para suporte de firewall de entrada. Este modelo é semelhante às regras de firewall de um sistema de banco de dados tradicional e fornece um nível adicional de segurança para sua conta. Com firewalls, você pode configurar sua conta do Azure Cosmos DB para ser acessível somente a partir de um conjunto aprovado de máquinas e/ou serviços de nuvem. O acesso aos dados armazenados em seu banco de dados do Azure Cosmos DB a partir desses conjuntos aprovados de máquinas e serviços ainda exigirá que o chamador apresente um token de autorização válido.

Controlo de acesso IP

Por padrão, sua conta do Azure Cosmos DB pode ser acessada pela Internet, desde que a solicitação seja acompanhada por um token de autorização válido. Para configurar o controle de acesso baseado em política de IP, o usuário deve fornecer o conjunto de endereços IP ou intervalos de endereços IP no formulário CIDR (Roteamento entre Domínios sem Classe) a ser incluído como a lista permitida de IPs de cliente para acessar uma determinada conta do Azure Cosmos DB. Uma vez que essa configuração é aplicada, todas as solicitações originadas de máquinas fora dessa lista permitida recebem resposta 403 (Proibida). Ao usar o firewall IP, é recomendável permitir que o portal do Azure acesse sua conta. O acesso é necessário para permitir o uso do explorador de dados, bem como para recuperar métricas para sua conta que aparecem no portal do Azure. Ao usar o data explorer, além de permitir que o portal do Azure acesse sua conta, você também precisa atualizar suas configurações de firewall para adicionar seu endereço IP atual às regras de firewall. Observe que as alterações do firewall podem levar até 15 minutos para se propagar e o firewall pode exibir um comportamento inconsistente durante esse período.

Você pode combinar firewall baseado em IP com controle de acesso de sub-rede e VNET. Ao combiná-los, você pode limitar o acesso a qualquer fonte que tenha um IP público e/ou de uma sub-rede específica dentro da VNET. Para saber mais sobre como usar o controle de acesso baseado em sub-rede e VNET, consulte Acessar recursos do Azure Cosmos DB de redes virtuais.

Para resumir, o token de autorização é sempre necessário para acessar uma conta do Azure Cosmos DB. Se o firewall IP e a Lista de Controle de Acesso (ACLs) VNET não estiverem configurados, a conta do Azure Cosmos DB poderá ser acessada com o token de autorização. Depois que o firewall IP ou as ACLs VNET ou ambas são configuradas na conta do Azure Cosmos DB, somente as solicitações originadas das fontes especificadas (e com o token de autorização) obtêm respostas válidas.

Você pode proteger os dados armazenados em sua conta do Azure Cosmos DB usando firewalls IP. O Azure Cosmos DB dá suporte a controles de acesso baseados em IP para suporte de firewall de entrada. Você pode definir um firewall IP na conta do Azure Cosmos DB usando uma das seguintes maneiras:

  • No portal do Azure
  • De forma declarativa com um modelo do Azure Resource Manager
  • Programaticamente por meio da CLI do Azure ou do Azure PowerShell atualizando a propriedade ipRangeFilter

Configurar um firewall IP usando o portal do Azure

Para definir a política de controle de acesso IP no portal do Azure, vá para a página da conta do Azure Cosmos DB e selecione Firewall e redes virtuais no menu de navegação. Altere o valor Permitir acesso de para Redes selecionadas e selecione Salvar. Se alterar as definições da rede de acesso público, desativando-a ou permitindo-a para todas as redes, perderá o IP da firewall que poderá ter configurado anteriormente.

Captura de ecrã a mostrar como abrir a página Firewall no portal do Azure

Quando o controle de acesso IP está ativado, o portal do Azure fornece a capacidade de especificar endereços IP, intervalos de endereços IP e opções. Os switches permitem o acesso a outros serviços do Azure e ao portal do Azure. As seções a seguir fornecem detalhes sobre essas opções.

Nota

Depois de habilitar uma política de controle de acesso IP para sua conta do Azure Cosmos DB, todas as solicitações para sua conta do Azure Cosmos DB de máquinas fora da lista permitida de intervalos de endereços IP são rejeitadas. A navegação nos recursos do Azure Cosmos DB a partir do portal também é bloqueada para garantir a integridade do controlo de acesso.

Permitir solicitações do portal do Azure

Quando você habilita uma política de controle de acesso IP programaticamente, precisa adicionar o endereço IP do portal do Azure à propriedade ipRangeFilter para manter o acesso. Os endereços IP do portal são:

País/Região Endereço IP
China 139.217.8.252
US Gov 52.244.48.71
Todas as outras regiões 104.42.195.92,40.76.54.131,52.176.6.30,52.169.50.45,52.187.184.26

Você pode habilitar solicitações para acessar o portal do Azure selecionando a opção Permitir acesso do portal do Azure, conforme mostrado na captura de tela a seguir:

Captura de ecrã a mostrar como ativar o acesso ao portal do Azure

Novos endereços IP do portal do Azure

Os serviços do portal Cosmos DB estão em transição para uma nova infraestrutura em 2024. Como parte dessa transição, as contas com firewall habilitado exigirão que novos endereços IP tenham permissão para continuar o acesso a algumas funcionalidades do portal, como o Data Explorer. Esta mudança também introduz endereços IP dedicados para contas Mongo DB e Apache Cassandra API.

Durante essa transição, a opção Permitir acesso do portal do Azure adiciona endereços IP atuais e novos às configurações de firewall da conta (incluindo endereços específicos MongoDB e Cassandra para essas contas) Quando a transição estiver concluída, uma opção de portal será disponibilizada para remover os endereços IP antigos.

Azure Público
API de conta de banco de dados Endereços IP
Todos 13.91.105.215, 4.210.172.107, 13.88.56.148, 40.91.218.243
Apenas MongoDB 20.245.81.54, 40.118.23.126, 40.80.152.199, 13.95.130.121
Apache Cassandra apenas 40.113.96.14, 104.42.11.145, 137.117.230.240, 168.61.72.237
Azure China
API de conta de banco de dados Endereços IP
Todos 163.228.137.6, 143.64.170.142
Apenas MongoDB 52.131.240.99, 143.64.61.130
Apache Cassandra apenas 40.73.99.146, 143.64.62.47
Azure US Government
API de conta de banco de dados Endereços IP
Todos 52.247.163.6, 52.244.134.181
Apenas MongoDB 52.244.176.112, 52.247.148.42
Apache Cassandra apenas 52.244.50.101, 52.227.165.24

Nota

Se você estiver enfrentando desafios para se conectar à sua conta do Azure Cosmos DB a partir do Data Explorer, consulte o guia de solução de problemas do Data Explorer.

Permitir pedidos de datacenters globais do Azure ou de outras origens no Azure

Se aceder à sua conta do Azure Cosmos DB a partir de serviços que não fornecem um IP estático (por exemplo, Azure Stream Analytics e Azure Functions), ainda pode utilizar a firewall IP para limitar o acesso. Você pode habilitar o acesso de outras fontes dentro do Azure selecionando a opção Aceitar conexões de dentro dos datacenters do Azure, conforme mostrado na captura de tela a seguir:

Captura de tela mostrando como aceitar conexões de datacenters do Azure

Quando você habilita essa opção, o endereço 0.0.0.0 IP é adicionado à lista de endereços IP permitidos. O 0.0.0.0 endereço IP restringe as solicitações à sua conta do Azure Cosmos DB do intervalo de IP do datacenter do Azure. Esta definição não permite o acesso de nenhum outro intervalo de IP à conta do Azure Cosmos DB.

Nota

Esta opção configura o firewall para permitir todas as solicitações do Azure, incluindo solicitações de assinaturas de outros clientes implantados no Azure. A lista de IPs permitidos por esta opção é ampla, pelo que limita a eficácia de uma política de firewall. Utilize esta opção apenas se os seus pedidos não tiverem origem em IPs estáticos ou sub-redes em redes virtuais. Escolher essa opção permite automaticamente o acesso do portal do Azure porque o portal do Azure é implantado no Azure.

Pedidos do seu IP atual

Para simplificar o desenvolvimento, o portal do Azure ajuda-o a identificar e adicionar o IP do seu computador cliente à lista de permissões. Os aplicativos que executam sua máquina podem acessar sua conta do Azure Cosmos DB.

O portal deteta automaticamente o endereço IP do cliente. Pode ser o endereço IP do cliente da sua máquina ou o endereço IP do seu gateway de rede. Certifique-se de remover esse endereço IP antes de levar suas cargas de trabalho para a produção.

Para adicionar seu IP atual à lista de IPs, selecione Adicionar meu IP atual. Em seguida, selecione Guardar.

Captura de ecrã a mostrar como configurar definições de firewall para o IP atual

Pedidos de serviços na nuvem

No Azure, os serviços de nuvem são uma maneira comum de hospedar a lógica de serviço de camada intermediária usando o Azure Cosmos DB. Para habilitar o acesso à sua conta do Azure Cosmos DB a partir de um serviço de nuvem, você deve adicionar o endereço IP público do serviço de nuvem à lista permitida de endereços IP associados à sua conta do Azure Cosmos DB configurando a política de controle de acesso IP. Isso garante que todas as instâncias de função de serviços de nuvem tenham acesso à sua conta do Azure Cosmos DB.

Você pode recuperar endereços IP para seus serviços de nuvem no portal do Azure, conforme mostrado na captura de tela a seguir:

Captura de ecrã a mostrar o endereço IP público de um serviço de nuvem apresentado no portal do Azure

Quando você expande seu serviço de nuvem adicionando instâncias de função, essas novas instâncias terão acesso automaticamente à conta do Azure Cosmos DB porque fazem parte do mesmo serviço de nuvem.

Solicitações de máquinas virtuais

Você também pode usar máquinas virtuais ou conjuntos de dimensionamento de máquinas virtuais para hospedar serviços de camada intermediária usando o Azure Cosmos DB. Para configurar sua conta do Azure Cosmos DB de forma que ela permita o acesso de máquinas virtuais, você deve configurar o endereço IP público da máquina virtual e/ou a escala da máquina virtual definida como um dos endereços IP permitidos para sua conta do Azure Cosmos DB configurando a política de controle de acesso IP.

Você pode recuperar endereços IP para máquinas virtuais no portal do Azure, conforme mostrado na captura de tela a seguir:

Captura de ecrã a mostrar um endereço IP público para uma máquina virtual apresentado no portal do Azure

Quando você adiciona instâncias de máquina virtual ao grupo, elas recebem automaticamente acesso à sua conta do Azure Cosmos DB.

Pedidos da Internet

Quando você acessa sua conta do Azure Cosmos DB de um computador na Internet, o endereço IP do cliente ou o intervalo de endereços IP da máquina deve ser adicionado à lista permitida de endereços IP para sua conta.

Adicionar regras de saída à firewall

Para acessar uma lista atual de intervalos de IP de saída para adicionar às configurações de firewall, consulte Baixar intervalos de IP do Azure e tags de serviço.

Para automatizar a lista, consulte Usar a API de descoberta de tags de serviço.

Configurar um firewall IP usando um modelo do Gerenciador de Recursos

Para configurar o controle de acesso à sua conta do Azure Cosmos DB, verifique se o modelo do Gerenciador de Recursos especifica a propriedade ipRules com uma matriz de intervalos de IP permitidos. Se estiver configurando o Firewall IP para uma conta do Azure Cosmos DB já implantada, verifique se a matriz corresponde ao locations que está implantado no momento. Não é possível modificar simultaneamente a locations matriz e outras propriedades. Para obter mais informações e exemplos de modelos do Azure Resource Manager para o Azure Cosmos DB, consulte Modelos do Azure Resource Manager para o Azure Cosmos DB

Importante

A propriedade ipRules foi introduzida com a API versão 2020-04-01. Em vez disso, as versões anteriores expunham uma propriedade ipRangeFilter , que é uma lista de endereços IP separados por vírgula.

O exemplo abaixo mostra como a propriedade ipRules é exposta na API versão 2020-04-01 ou posterior:

{
  "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"
      }
    ]
  }
}

Aqui está o mesmo exemplo para qualquer versão da API anterior a 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"
  }
}

Configurar uma política de controle de acesso IP usando a CLI do Azure

O comando a seguir mostra como criar uma conta do Azure Cosmos DB com controle de acesso 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

Configurar uma política de controle de acesso IP usando o PowerShell

O script a seguir mostra como criar uma conta do Azure Cosmos DB com controle de acesso 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

Solucionar problemas com uma política de controle de acesso IP

Você pode solucionar problemas com uma política de controle de acesso IP usando as seguintes opções:

Portal do Azure

Ao habilitar uma política de controle de acesso IP para sua conta do Azure Cosmos DB, você bloqueia todas as solicitações para sua conta de máquinas fora da lista permitida de intervalos de endereços IP. Para habilitar operações de plano de dados do portal, como navegar em contêineres e consultar documentos, você precisa permitir explicitamente o acesso ao portal do Azure usando o painel Firewall no portal.

SDKs

Quando você acessa recursos do Azure Cosmos DB usando SDKs de máquinas que não estão na lista de permissões, uma resposta genérica 403 Forbidden é retornada sem detalhes adicionais. Verifique a lista de IP permitidos para sua conta e verifique se a configuração de política correta é aplicada à sua conta do Azure Cosmos DB.

IPs de origem em solicitações bloqueadas

Habilite o log de diagnóstico em sua conta do Azure Cosmos DB. Esses logs mostram cada solicitação e resposta. As mensagens relacionadas ao firewall são registradas com um código de retorno 403. Ao filtrar essas mensagens, você pode ver os IPs de origem das solicitações bloqueadas. Consulte Log de diagnóstico do Azure Cosmos DB.

Solicitações de uma sub-rede com um ponto de extremidade de serviço para o Azure Cosmos DB habilitado

As solicitações de uma sub-rede em uma rede virtual que tenha um ponto de extremidade de serviço para o Azure Cosmos DB habilitado enviam a rede virtual e a identidade da sub-rede para as contas do Azure Cosmos DB. Essas solicitações não têm o IP público da fonte, portanto, os filtros de IP as rejeitam. Para permitir o acesso de sub-redes específicas em redes virtuais, adicione uma lista de controle de acesso, conforme descrito em Como configurar a rede virtual e o acesso baseado em sub-rede para sua conta do Azure Cosmos DB. Pode levar até 15 minutos para que as regras de firewall sejam aplicadas e o firewall pode apresentar um comportamento inconsistente durante esse período.

Endereços IP privados na lista de endereços permitidos

Criar ou atualizar uma conta do Azure Cosmos DB com uma lista de endereços permitidos contendo endereços IP privados falhará. Certifique-se de que nenhum endereço IP privado está especificado na lista.

Próximos passos

Para configurar um ponto de extremidade de serviço de rede virtual para sua conta do Azure Cosmos DB, consulte os seguintes artigos: