Configuración del firewall de IP en Azure Cosmos DB

SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table

Para proteger los datos almacenados en su cuenta, Azure Cosmos DB admite un modelo de autorización basado en secretos que usa código de autentificación de mensajes basado en hash (HMAC). Además, Azure Cosmos DB admite controles de acceso basado en IP para la compatibilidad con el firewall de entrada. Este modelo es muy parecido a las reglas de firewall de un sistema de base de datos tradicional y proporciona un nivel de seguridad adicional a la cuenta. Con los firewalls, puede configurar su cuenta de Azure Cosmos DB para que solo se pueda acceder a ella desde un conjunto aprobado de máquinas o servicios en la nube. El acceso a los datos almacenados en una base de datos de Azure Cosmos DB desde estos conjuntos aprobados de máquinas y servicios seguirá requiriendo que el autor de la llamada presente un token de autorización válido.

Control de acceso de IP

De forma predeterminada, a la cuenta de Azure Cosmos DB se puede acceder desde Internet, siempre que la solicitud vaya acompañada de un token de autorización válido. Para configurar el control de acceso basado en directivas IP, el usuario debe proporcionar el conjunto de direcciones IP o intervalos de direcciones IP en formato CIDR (Enrutamiento de interdominios sin clases) para incluirlos en la lista de direcciones IP permitidas de cliente para acceder a una cuenta de Azure Cosmos  DB dada. Una vez que se aplica esta configuración, todas las solicitudes que se originan en máquinas que están fuera de esta lista de permitidos reciben la respuesta 403 (Prohibido). Cuando se usa el firewall de IP, se recomienda permitir que Azure Portal acceda a su cuenta. Este acceso es necesario para permitir el uso del explorador de datos, y para recuperar las métricas de la cuenta que se muestran en Azure Portal. Cuando se usa el explorador de datos, además de permitir que Azure Portal acceda a su cuenta, también deberá actualizar la configuración del firewall para agregar la dirección IP actual a las reglas de firewall. Los cambios en el firewall pueden tardar hasta 15 minutos en propagarse, y el firewall puede presentar un comportamiento incoherente durante este período.

Puede combinar el firewall basado en IP con el control de acceso de red virtual y subred. Al combinarlos, puede limitar el acceso a cualquier origen que tenga una dirección IP pública o desde una subred específica dentro de la red virtual. Para más información sobre el control de acceso de red virtual y subred, consulte Acceso a los recursos de Azure Cosmos DB desde redes virtuales.

En resumen, siempre se necesita el token de autorización para acceder a una cuenta de Azure Cosmos DB. Si el firewall de IP y la lista de control de acceso (ACL) de red virtual no se han configurado, se puede acceder a la cuenta de Azure Cosmos DB con el token de autorización. Una vez que el firewall de IP o las listas ACL de red virtual, o ambos, están configurados en la cuenta de Azure Cosmos DB, solo las solicitudes que se originan en los orígenes especificados (y con el token de autorización) obtienen respuestas válidas.

Puede proteger los datos almacenados en su cuenta de Azure Cosmos DB mediante el uso de firewalls de dirección IP. Azure Cosmos DB admite controles de acceso basado en IP para la compatibilidad con el firewall de entrada. Puede establecer un firewall de dirección IP en la cuenta de Azure Cosmos DB mediante una de las maneras siguientes:

  • Desde Azure Portal
  • Mediante declaración al usar una plantilla de Azure Resource Manager
  • Mediante programación a través de la CLI de Azure o Azure PowerShell al actualizar la propiedad ipRangeFilter

Configuración de un firewall de dirección IP mediante Azure Portal

Para establecer la directiva de control de acceso de IP en Azure Portal, vaya a la página de la cuenta de Azure Cosmos DB y seleccione Redes en el menú de navegación. Cambie el valor Permitir acceso desde por Redes seleccionadas y, a continuación, seleccione Guardar. Si aún no agrega ninguna dirección IP, también tendrá que activar la casilla para confirmar que se bloquearán todas las redes virtuales y direcciones IP. Si cambia la configuración de la red de acceso público, ya sea desactivándola o permitiéndola para todas las redes, perderá la IP del firewall que haya podido establecer anteriormente.

Recorte de pantalla de la configuración del firewall de red de Azure Cosmos DB en Azure Portal.

Cuando el control de acceso de IP se activa, Azure Portal proporciona la capacidad para especificar direcciones IP, intervalos de direcciones IP y modificadores. Los modificadores permiten el acceso a otros servicios de Azure y a Azure Portal. En las secciones siguientes se proporcionan detalles acerca de estos modificadores.

Nota

Después de habilitar una directiva de control de acceso de dirección IP para su cuenta de Azure Cosmos DB, se rechazan todas las solicitudes a la cuenta de Azure Cosmos DB desde máquinas fuera de la lista permitida de rangos de direcciones IP. La exploración de los recursos de Azure Cosmos DB desde el portal también se bloquea para garantizar la integridad del control de acceso.

Permitir las solicitudes desde Azure Portal

Al habilitar una directiva de control de acceso IP mediante programación, es posible que tenga que agregar las direcciones IP de los servicios de Azure Portal a la propiedad ipRangeFilter para seguir usando alguna funcionalidad del portal.

Entre los escenarios del portal que requieren que esta opción esté habilitada se incluyen:

  • Específicamente para la API para MongoDB o la API para Apache Cassandra, el acceso a cuentas con el Explorador de datos o <cosmos.azure.com>
  • Para todas las API, use las siguientes hojas de Azure Cosmos DB en Azure Portal:
    • Buscar colecciones
    • Power BI
    • Azure Synapse

Puede habilitar las solicitudes para acceder a Azure Portal seleccionando la opción Agregar direcciones IP de middleware de Azure Portal, como se muestra en la captura de pantalla siguiente:

Recorte de pantalla de las opciones para agregar direcciones IP de middleware a la red en Azure Portal.

Las direcciones IP de Middleware de Azure Portal se agregarán a una lista independiente, como se muestra en la captura de pantalla siguiente. Haga clic en Guardar para agregar estas direcciones a la cuenta de base de datos. Puede encontrar más detalles sobre las direcciones IP de middleware más adelante en este artículo.

Recorte de pantalla de la lista de direcciones IP de middleware para redes en Azure Portal.

Las direcciones IP de middleware de Azure Portal se pueden quitar haciendo clic en la opción Quitar direcciones IP de middleware de Azure Portal y, a continuación, seleccionando Guardar.

Direcciones IP de middleware de Azure Portal

A continuación se enumeran las direcciones IP de middleware de Azure Portal. Algunas direcciones IP solo son necesarias para las API de cuenta de base de datos específicas. Al agregar las direcciones IP de middleware en el portal, como se ha descrito anteriormente, solo se agregarán las direcciones IP necesarias para la cuenta.

Por ejemplo:

  • En el caso de una cuenta de API para NoSQL, se agregarán las direcciones IP de la categoría Todos.

  • En el caso de una cuenta de API para MongoDB, se agregarán las direcciones IP de las categorías Todos y solo MongoDB.

Azure público
API de cuenta de base de datos Direcciones IP
All 13.91.105.215, 4.210.172.107, 13.88.56.148, 40.91.218.243
Solo MongoDB 20.245.81.54, 40.118.23.126, 40.80.152.199, 13.95.130.121
Solo Apache Cassandra 40.113.96.14, 104.42.11.145, 137.117.230.240, 168.61.72.237
Azure China
API de cuenta de base de datos Direcciones IP
All 163.228.137.6, 143.64.170.142
Solo MongoDB 52.131.240.99, 143.64.61.130
Solo Apache Cassandra 40.73.99.146, 143.64.62.47
Azure US Government
API de cuenta de base de datos Direcciones IP
All 52.247.163.6, 52.244.134.181
Solo MongoDB 52.244.176.112, 52.247.148.42
Solo Apache Cassandra 52.244.50.101, 52.227.165.24

Direcciones IP de middleware heredadas

Los servicios del portal de Cosmos DB han pasado recientemente a una nueva infraestructura que requiere nuevas direcciones IP de middleware. Con la finalización de esa transición, las direcciones IP heredadas usadas por la infraestructura antigua ahora se pueden quitar de forma segura. Si la cuenta tiene direcciones IP de middleware heredadas presentes en las reglas de firewall, se mostrará la opción Quitar direcciones IP de middleware heredadas de Azure Portal. Seleccione esa opción y, a continuación, Guardar para quitar las direcciones IP heredadas.

Recorte de pantalla de la opción para eliminar las IP de middleware heredado para redes en Azure Portal.

Las direcciones IP heredadas dependen del entorno de nube:

Entorno de Azure Direcciones IP
Azure público 104.42.195.92, 40.76.54.131, 52.176.6.30, 52.169.50.45, 52.187.184.26
Azure China 139.217.8.252, 52.176.6.30, 52.169.50.45, 52.187.184.26
Azure US Government 52.244.48.71, 52.176.6.30, 52.169.50.45, 52.187.184.26

Nota:

Si tiene dificultades para conectarse a su cuenta de Azure Cosmos DB desde el Explorador de datos, consulte la guía de solución de problemas de Data Explorer.

Permitir las solicitudes de los centros de datos globales de Azure u otros orígenes dentro de Azure

Si tiene acceso a su cuenta de Azure Cosmos DB desde los servicios que no proporcionan un IP estático (por ejemplo, Azure Stream Analytics y Azure Functions), aún podrá usar el firewall de dirección IP para limitar el acceso. Para habilitar el acceso desde otros orígenes dentro de Azure, seleccione la opción Aceptar conexiones desde centros de datos de Azure, tal como se muestra en la captura de pantalla siguiente:

Recorte de pantalla de la opción para aceptar conexiones desde dentro de los centros de datos Azure públicos en Azure Portal.

Cuando se habilita esta opción, se agrega la dirección IP 0.0.0.0 a la lista de direcciones IP permitidas. La dirección IP 0.0.0.0 restringe las solicitudes a la cuenta de Azure Cosmos DB desde el intervalo de IP del centro de datos de Azure. Esta configuración no permite que ningún otro intervalo IP tenga acceso a la cuenta de Azure Cosmos DB.

Nota:

Establecer publicNetworkAccess en Deshabilitado tiene prioridad sobre esta opción Aceptar conexión desde los centros de datos de Azure. Consulte blocking-public-network-access-during-account-creation

Nota:

Esta opción configura el firewall para permitir todas las solicitudes de Azure, incluidas las solicitudes de las suscripciones de otros clientes implementados en Azure. La lista de IP permitidos por esta opción es amplia, por lo que limita la eficacia de una directiva de firewall. Use esta opción solo si las solicitudes no se originan en IP estáticos ni subredes de redes virtuales. Si se elige esta opción, se permite automáticamente el acceso desde Azure Portal, ya que Azure Portal se implementa en Azure.

Solicitudes desde la dirección IP actual

Para simplificar el desarrollo, Azure Portal le ayuda a identificar y agregar la dirección IP de su equipo cliente a la lista de permitidos. Las aplicaciones que ejecutan su máquina, a continuación, pueden obtener acceso a su cuenta de Azure Cosmos DB.

El portal detecta automáticamente la dirección IP del cliente. Puede que sea la dirección IP cliente de la máquina, pero también la dirección IP de la puerta de enlace de red. Asegúrese de quitar esta dirección IP antes de llevar las cargas de trabajo a producción.

Para agregar su dirección IP actual a la lista de direcciones IP, seleccione Agregar mi IP actual. Después, seleccione Guardar.

Recorte de pantalla de la opción para agregar su dirección IP actual a la red en Azure Portal.

Solicitudes desde servicios en la nube

En Azure, los servicios en la nube son una forma muy común de hospedar la lógica de servicio de nivel intermedio mediante Azure Cosmos DB. Para permitir el acceso a su cuenta de Azure Cosmos DB desde un servicio en la nube, debe agregar la dirección IP pública del servicio en la nube a la lista de direcciones IP permitida asociada a dicha cuenta de Azure Cosmos DB mediante la configuración de la directiva de control de acceso a la dirección IP. De esta forma se garantiza que todas las instancias de rol de servicios en la nube tengan acceso a la cuenta de Azure Cosmos DB.

Puede recuperar las direcciones IP de los servicios en la nube en Azure Portal, tal como se muestra en la siguiente captura de pantalla:

Captura de pantalla con la dirección IP pública de un servicio en la nube que se muestra en Azure Portal

Al escalar horizontalmente su servicio en la nube mediante la adición de instancias de rol, esas nuevas instancias tendrán acceso automáticamente a la cuenta de Azure Cosmos DB que forman parte del mismo servicio en la nube.

Solicitudes desde máquinas virtuales

También puede usar máquinas virtuales o conjuntos de escalado de máquinas virtuales para hospedar servicios de nivel intermedio mediante Azure Cosmos DB. Para configurar la cuenta de Azure Cosmos DB para que permita el acceso desde máquinas virtuales, debe configurar la dirección IP pública de la máquina virtual o el conjunto de escalado de máquinas virtuales como una de las direcciones IP permitidas para la cuenta de Azure Cosmos DB mediante la configuración de la directiva de control de acceso IP.

Puede recuperar las direcciones IP para máquinas virtuales en Azure Portal, como se muestra en la captura de pantalla siguiente:

Captura de pantalla con una dirección IP pública de una máquina virtual que se muestra en Azure Portal

Al agregar instancias de máquina virtual al grupo, reciben automáticamente acceso a su cuenta de Azure Cosmos DB.

Solicitudes desde Internet

Cuando se obtiene acceso a la cuenta de Azure Cosmos DB desde un equipo de Internet, la dirección IP del cliente o el intervalo de direcciones IP de la máquina se debe agregar a la lista de direcciones IP permitida para dicha cuenta.

Adición de reglas de salida al firewall

Para obtener acceso a la lista actual de intervalos IP de salida que se van a agregar a la configuración del firewall, consulte el archivo de descarga de intervalos IP y etiquetas de servicio de Azure.

Para automatizar la lista, consulte la siguiente sección del artículo Etiquetas de servicio de red virtual.

Configuración de un firewall de dirección IP mediante una plantilla de Resource Manager

Para configurar el control de acceso a su cuenta de Azure Cosmos DB, asegúrese de que la plantilla de Resource Manager especifica la propiedad ipRules con una matriz de intervalos IP permitidos. Si va a configurar el firewall de IP en una cuenta de Azure Cosmos DB implementada, asegúrese de que la matriz locations coincida con la que está implementada actualmente. No se pueden modificar simultáneamente la matriz locations y otras propiedades. Para más información y ejemplos sobre las plantillas de Azure Resource Manager para Azure Cosmos DB, consulte Plantillas de Azure Resource Manager para Azure Cosmos DB.

Importante

La propiedad ipRules se introdujo con la versión 2020-04-01 de la API. En su lugar, las versiones anteriores exponían una propiedad ipRangeFilter, que es una lista de direcciones IP separadas por comas.

En el ejemplo, se muestra cómo la propiedad ipRules se expone en la versión 2020-04-01 o posterior de la API:

{
  "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": "13.91.105.215"
      },
      {
        "ipAddressOrRange": "4.210.172.107"
      },
      {
        "ipAddressOrRange": "13.88.56.148"
      },
      {
        "ipAddressOrRange": "40.91.218.243"
      }
    ]
  }
}

Este es el mismo ejemplo para cualquier versión de la 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":"13.91.105.215,4.210.172.107,13.88.56.148,40.91.218.243"
  }
}

Configuración de una directiva de control de acceso IP con la CLI de Azure

El comando siguiente muestra cómo crear una cuenta de Azure Cosmos DB con control de acceso por 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

Configuración de una directiva de control de acceso IP mediante PowerShell

En el script siguiente se muestra cómo crear una cuenta de Azure Cosmos DB con control de acceso 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

Solución de problemas con una directiva de control de acceso por IP

Puede solucionar problemas con una directiva de control de acceso por IP mediante las siguientes opciones:

Azure portal

Al habilitar una directiva de control de acceso por IP para su cuenta de Azure Cosmos DB, bloquea todas las solicitudes a la cuenta desde máquinas fuera de la lista permitida de rangos de direcciones IP. Para habilitar las operaciones en el plano de los datos del portal, como explorar los contenedores y consultar los documentos, debe permitir expresamente el acceso a Azure Portal mediante el panel Firewall del portal.

SDK

Cuando tenga acceso a recursos de Azure Cosmos DB mediante SDK desde máquinas que no están en la lista de permitidos, se devolverá una respuesta genérica403 Forbidden sin más detalles. Compruebe la lista de direcciones IP permitidas para su cuenta y asegúrese de que se aplique la configuración de directiva correcta a su cuenta de Azure Cosmos DB.

Direcciones IP de origen en solicitudes bloqueadas

Habilite el registro de diagnóstico en su cuenta de Azure Cosmos DB. Estos registros muestran cada solicitud y respuesta. Los mensajes relacionados con el firewall se registran con un código de retorno 403. Al filtrar estos mensajes, puede ver las direcciones IP de origen para las solicitudes bloqueadas. Consulte Registro de diagnóstico de Azure Cosmos DB.

Solicitudes de una subred con un punto de conexión de servicio para la base de datos Azure Cosmos DB habilitada

Las solicitudes de una subred en una red virtual que tiene habilitado un punto de conexión de servicio para Azure Cosmos DB envían la identidad de la red virtual y la subred a las cuentas de Azure Cosmos DB. Estas solicitudes no tienen la dirección IP pública del origen, de modo que los filtros de IP las rechazan. Para permitir el acceso desde subredes específicas en redes virtuales, agregue una lista de control de acceso que se describe en Configuración del acceso basado en red virtual y subred para la cuenta de Azure Cosmos DB. Las reglas de firewall pueden tardar hasta 15 minutos en aplicarse y el firewall puede presentar un comportamiento incoherente durante este período.

Direcciones IP privadas en la lista de direcciones permitidas

Se producirá un error al crear o actualizar una cuenta de Azure Cosmos DB con una lista de direcciones permitidas que contienen direcciones IP privadas. Asegúrese de que no se ha especificado ninguna dirección IP privada en la lista.