Compartir a través de


Limitación de las conexiones de punto de conexión privado entre inquilinos en Azure

Los clientes usan cada vez más los puntos de conexión privados en los inquilinos para conectarse a los servicios de plataforma como servicio (PaaS) de Azure de forma privada y segura. Los puntos de conexión privados pueden conectarse a los servicios en los inquilinos de Microsoft Entra. Por motivos de seguridad y cumplimiento, es posible que tenga que bloquear las conexiones entre inquilinos de Microsoft Entra en los puntos de conexión privados. En esta guía, se muestran las opciones de configuración recomendadas para limitar o evitar conexiones de punto de conexión privado entre inquilinos. Estas opciones le ayudan a crear controles de prevención de pérdida de datos (DLP) dentro de su entorno de Azure.

Introducción a los puntos de conexión privados

Use los puntos de conexión privados para controlar el tráfico dentro del entorno de Azure mediante un perímetro de red existente. Pero hay escenarios en los que debe mantener las conexiones de punto de conexión privado solo dentro del inquilino de Microsoft Entra corporativo. En los ejemplos siguientes, se muestran conexiones que pueden crear riesgos de seguridad.

  • Conexión A: un administrador no autorizado crea puntos de conexión privados en la red virtual del cliente. Estos puntos de conexión se vinculan a servicios hospedados fuera del entorno del cliente, por ejemplo, otro inquilino de Microsoft Entra.
  • Conexión B: un administrador no autorizado crea puntos de conexión privados en otros inquilinos de Microsoft Entra que están vinculados a servicios hospedados en el inquilino de Microsoft Entra del cliente.

Diagram that shows cross-tenant private endpoint connection scenarios.

Figura 1: Ilustración de escenarios de punto de conexión privado entre inquilinos.

En ambos escenarios, se especifica el identificador de recurso del servicio y aprobar manualmente la conexión de punto de conexión privado. Los usuarios también requieren acceso de control de acceso basado en rol (RBAC) para ejecutar estas acciones.

Las conexiones C y D de la figura 1 muestran escenarios que los clientes suelen querer permitir. Las conexiones de punto de conexión privado se mantienen dentro del inquilino corporativo de Microsoft Entra. No representan un riesgo de seguridad, por lo que estos dos escenarios no se tratan en este artículo.

La siguiente información proporciona opciones para evitar el aprovisionamiento de puntos de conexión privados entre inquilinos de Microsoft Entra.

Denegación de puntos de conexión privados vinculados a servicios de otros inquilinos

Escenario uno: un administrador no autorizado requiere los siguientes derechos en una suscripción en el inquilino de Microsoft Entra del cliente.

  • Derechos Microsoft.Network/virtualNetworks/join/action en una subred con la propiedad privateEndpointNetworkPolicies establecida en Disabled (Deshabilitado).
  • Acceso Microsoft.Network/privateEndpoints/write a un grupo de recursos en el entorno del cliente.

Con estos derechos, un administrador no autorizado puede crear un punto de conexión privado en el inquilino de Microsoft Entra del cliente. Este punto de conexión privado vincula a un servicio de una suscripción y un inquilino de Microsoft Entra independientes. En la figura 1 se muestra este escenario como conexión A.

En este escenario, el usuario configura un inquilino de Microsoft Entra y una suscripción de Azure externos. A continuación, se crea el punto de conexión privado en el entorno del cliente especificando manualmente el identificador de recurso del servicio. Por último, el administrador no autorizado aprueba el punto de conexión privado en el servicio vinculado hospedado en el inquilino de Microsoft Entra externo para permitir el tráfico mediante la conexión.

Después de que el administrador no autorizado apruebe la conexión de punto de conexión privado, los datos corporativos se pueden copiar desde la red virtual corporativa a un servicio de Azure en un inquilino de Microsoft Entra externo. Este riesgo de seguridad solo se puede producir si se ha concedido acceso mediante RBAC de Azure.

Mitigación del escenario uno

Use la siguiente directiva de Azure para denegar automáticamente la creación de un punto de conexión privado en el inquilino de Microsoft Entra corporativo que está vinculado a un servicio externo de Azure.

"if": {
    "allOf": [
        {
            "field": "type",
            "equals": "Microsoft.Network/privateEndpoints"
        },
        {
            "anyOf": [
                {
                    "count": {
                        "field": "Microsoft.Network/privateEndpoints/manualprivateLinkServiceConnections[*]",
                        "where": {
                            "allOf": [
                                {
                                    "field": "Microsoft.Network/privateEndpoints/manualprivateLinkServiceConnections[*].privateLinkServiceId",
                                    "notEquals": ""
                                },
                                {
                                    "value": "[split(concat(first(field('Microsoft.Network/privateEndpoints/manualprivateLinkServiceConnections[*].privateLinkServiceId')), '//'), '/')[2]]",
                                    "notEquals": "[subscription().subscriptionId]"
                                }
                            ]
                        }
                    },
                    "greaterOrEquals": 1
                },
                {
                    "count": {
                        "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*]",
                        "where": {
                            "allOf": [
                                {
                                    "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].privateLinkServiceId",
                                    "notEquals": ""
                                },
                                {
                                    "value": "[split(concat(first(field('Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].privateLinkServiceId')), '//'), '/')[2]]",
                                    "notEquals": "[subscription().subscriptionId]"
                                }
                            ]
                        }
                    },
                    "greaterOrEquals": 1
                }
            ]
        }
    ]
},
"then": {
    "effect": "Deny"
}

Esta directiva deniega los puntos de conexión privados creados fuera de la suscripción del servicio vinculado, como las conexiones A y D. La directiva también proporciona la flexibilidad de usar manualPrivateLinkServiceConnections y privateLinkServiceConnections.

Puede actualizar esta directiva para que los puntos de conexión privados solo se creen en un determinado conjunto de suscripciones. Para realizar este cambio, agregue un parámetro list y use la construcción "notIn": "[parameters('allowedSubscriptions')]". Sin embargo, no se recomienda este enfoque, ya que significa que tendría que mantener constantemente la lista de suscripciones para esta directiva. Cada vez que se crea una nueva suscripción dentro del inquilino, se debe agregar el identificador de suscripción al parámetro.

En su lugar, asigne la directiva al grupo de administración de nivel superior y, a continuación, usar exenciones cuando sea necesario.

Consideraciones sobre el escenario uno

Esta directiva bloquea la capacidad de crear puntos de conexión privados que estén en una suscripción diferente a la del propio servicio. Si estos puntos de conexión son un requisito para determinados casos de uso, use exenciones de directiva. Cree más directivas para Data Factory y Azure Synapse para asegurarse de que los puntos de conexión privados administrados hospedados en la red virtual administrada solo puedan conectarse a los servicios hospedados en su inquilino de Microsoft Entra.

Denegación de conexiones desde puntos de conexión privados creados en otros inquilinos

Escenario dos: un administrador no autorizado requiere derechos de escritura en el servicio del entorno del cliente para el que se debe crear un punto de conexión privado.

Con este derecho, un administrador no autorizado puede crear un punto de conexión privado en un inquilino y una suscripción de Microsoft Entra externos. Este punto de conexión se vincula a un servicio en el inquilino de Microsoft Entra del cliente. En la figura 1 se muestra este escenario como conexión B.

En este escenario, el administrador no autorizado debe configurar primero un inquilino privado de Microsoft Entra y una suscripción de Azure externos. A continuación, crea un punto de conexión privado en su entorno especificando manualmente el identificador de recurso y el identificador de grupo del servicio del inquilino de Microsoft Entra corporativo. Por último, aprueba el punto de conexión privado en el servicio vinculado para permitir el tráfico mediante la conexión entre inquilinos de Microsoft Entra.

Después de que el administrador no autorizado o el propietario del servicio apruebe el punto de conexión privado, se accede a los datos desde la red virtual externa.

Mitigación del escenario dos

Utilice directivas específicas del servicio para evitar este escenario en el inquilino del cliente. Las conexiones de punto de conexión privado son subrecursos de los servicios respectivos y se muestran en su sección de propiedades. Deniegue conexiones no compatibles mediante la siguiente definición de directiva:

"if": {
    "allOf": [
        {
            "field": "type",
            "equals": "Microsoft.Storage/storageAccounts/privateEndpointConnections"
        },
        {
            "field": "Microsoft.Storage/storageAccounts/privateEndpointConnections/privateLinkServiceConnectionState.status",
            "equals": "Approved"
        },
        {
            "anyOf": [
                {
                    "field": "Microsoft.Storage/storageAccounts/privateEndpointConnections/privateEndpoint.id",
                    "exists": false
                },
                {
                    "value": "[split(concat(field('Microsoft.Storage/storageAccounts/privateEndpointConnections/privateEndpoint.id'), '//'), '/')[2]]",
                    "notEquals": "[subscription().subscriptionId]"
                }
            ]
        }
    ]
},
"then": {
    "effect": "Deny"
}

Esta directiva muestra un ejemplo de Azure Storage. Replique la misma definición de directiva para otros servicios, como Key Vault, Cognitive Services y SQL Server. Tenga en cuenta que Azure App Service no admite esta mitigación en este momento.

Para mejorar aún más la capacidad de administración, agrupe las directivas específicas del servicio en una iniciativa. La directiva deniega la aprobación de conexiones de punto de conexión privado a puntos de conexión privados que se hospedan fuera de la suscripción del servicio respectivo. No deniega el rechazo ni la eliminación de conexiones de punto de conexión privado, que es el comportamiento que quieren los clientes. Los flujos de trabajo de aprobación automática, como la conexión C, no se ven afectados por esta directiva.

Sin embargo, con este método se bloquea la aprobación de las conexiones de punto de conexión privado compatibles en el portal. Este bloqueo se produce porque la interfaz de usuario del portal no envía el identificador de recurso del punto de conexión privado conectado en su carga. Se recomienda utilizar Azure Resource Manager, Azure PowerShell o la CLI de Azure para aprobar la conexión de punto de conexión privado.

También, asigne la directiva al grupo de administración de nivel superior y use exenciones cuando sea necesario.

Consideraciones sobre el escenario dos

Azure Synapse Analytics y Azure Data Factory ofrecen redes virtuales administradas y puntos de conexión privados administrados. Debido a estas nuevas funcionalidades, la directiva bloquea el uso seguro y privado de estos servicios.

Se recomienda usar un efecto Audit en lugar de un efecto Deny en la definición de directiva que use en la mitigación del escenario dos. Este cambio le ayuda a realizar un seguimiento de los puntos de conexión privados que se crean en suscripciones e inquilinos independientes. También puede usar exenciones de directiva para los respectivos ámbitos de la plataforma de datos.

Azure Data Factory

Para superar el escenario uno en la red virtual administrada de Azure Data Factory, use la siguiente definición de directiva:

"if": {
    "allOf": [
        {
            "field": "type",
            "equals": "Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints"
        },
        {
            "anyOf": [
                {
                    "field": "Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints/privateLinkResourceId",
                    "exists": false
                },
                {
                    "value": "[split(field('Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints/privateLinkResourceId'), '/')[2]]",
                    "notEquals": "[subscription().subscriptionId]"
                }
            ]
        }
    ]
},
"then": {
    "effect": "[parameters('effect')]"
}

Esta directiva deniega los puntos de conexión privados administrados que estén vinculados a servicios hospedados fuera de la suscripción de la factoría de datos. Puede cambiar esta directiva para permitir conexiones a servicios hospedados en un conjunto de suscripciones mediante la adición del parámetro list y el uso de la construcción "notIn": "[parameters('allowedSubscriptions')]". Se recomienda este cambio para el ámbito de la plataforma de datos dentro del inquilino o los entornos donde se usan ampliamente los servicios con redes virtuales administradas y puntos de conexión privados administrados.

Se recomienda asignar la directiva al grupo de administración de nivel superior y usar exenciones cuando sea necesario. Para la plataforma de datos, realice estos cambios y asigne la directiva al conjunto de suscripciones de la plataforma de datos.

Azure Synapse

Azure Synapse también usa redes virtuales administradas. Se recomienda aplicar una directiva similar a la directiva de Data Factory para el escenario uno. Azure Synapse no proporciona un alias de directiva para los puntos de conexión privados administrados. Sin embargo, hay una característica de prevención de filtración de datos, que se puede aplicar a las áreas de trabajo mediante la directiva siguiente:

"if": {
    "allOf": [
        {
            "field": "type",
            "equals": "Microsoft.Synapse/workspaces"
        },
        {
            "anyOf": [
                {
                    "field": "Microsoft.Synapse/workspaces/managedVirtualNetworkSettings.preventDataExfiltration",
                    "exists": false
                },
                {
                    "field": "Microsoft.Synapse/workspaces/managedVirtualNetworkSettings.preventDataExfiltration",
                    "notEquals": true
                },
                {
                    "count": {
                        "field": "Microsoft.Synapse/workspaces/managedVirtualNetworkSettings.allowedAadTenantIdsForLinking[*]",
                        "where": {
                            "field": "Microsoft.Synapse/workspaces/managedVirtualNetworkSettings.allowedAadTenantIdsForLinking[*]",
                            "notEquals": "[subscription().tenantId]"
                        }
                    },
                    "greaterOrEquals": 1
                }
            ]
        }
    ]
},
"then": {
    "effect": "Deny"
}

Esta directiva aplica el uso de la característica de filtración de datos de Azure Synapse. Con Azure Synapse, puede denegar cualquier punto de conexión privado procedente de un servicio hospedado fuera del inquilino del cliente. También puede denegar cualquier punto de conexión privado hospedado fuera de un conjunto especificado de identificadores de inquilino. Esta directiva solo permite la creación de puntos de conexión privados administrados que estén vinculados a servicios hospedados en el inquilino del cliente.

Estas directivas ahora están disponibles como integradas.

  • Las áreas de trabajo de Azure Synapse deben permitir el tráfico de datos de salida únicamente a destinos aprobados.

    Id. de definición: /providers/Microsoft.Authorization/policyDefinitions/3484ce98-c0c5-4c83-994b-c5ac24785218

  • Los puntos de conexión privados administrados de Azure Synapse solo se deben conectar a recursos de inquilinos aprobados de Microsoft Entra.

    Id. de definición: /providers/Microsoft.Authorization/policyDefinitions/3a003702-13d2-4679-941b-937e58c443f0

Se recomienda asignar la directiva al grupo de administración de nivel superior y usar exenciones cuando sea necesario.

Pasos siguientes

Es importante comprender los modelos de conectividad recomendados para las conexiones entrantes y salientes hacia la red pública de Internet. En el siguiente artículo, se revisan las consideraciones de diseño, las recomendaciones de diseño y el contenido recomendado para su posterior lectura.