Begränsa privata slutpunktsanslutningar mellan klientorganisationer i Azure

Kunderna använder i allt högre grad privata slutpunkter i sina klientorganisationer för att ansluta till sina PaaS-tjänster (Plattform som en tjänst) i Azure privat och säkert. Privata slutpunkter kan ansluta till tjänster i Microsoft Entra-klientorganisationer. För säkerhet och efterlevnad kan du behöva blockera anslutningar mellan Microsoft Entra-klientorganisationer på dina privata slutpunkter. Den här vägledningen visar rekommenderade konfigurationsalternativ för att begränsa eller förhindra privata slutpunktsanslutningar mellan klientorganisationer. De här alternativen hjälper dig att skapa DLP-kontroller (Data Leakage Prevention) i Din Azure-miljö.

Introduktion till privata slutpunkter

Använd privata slutpunkter för att styra trafiken i din Azure-miljö med hjälp av en befintlig nätverksperimeter. Det finns dock scenarier där du endast måste ha privata slutpunktsanslutningar inom företagets Microsoft Entra-klientorganisation. I följande exempel visas anslutningar som kan skapa säkerhetsrisker.

  • Anslut ion A: En obehörig administratör skapar privata slutpunkter i kundens virtuella nätverk. Dessa slutpunkter länkar till tjänster som finns utanför kundmiljön, som en annan Microsoft Entra-klientorganisation.
  • Anslut ion B: En falsk administratör skapar privata slutpunkter i andra Microsoft Entra-klienter som länkar till tjänster som finns i kundens Microsoft Entra-klientorganisation.

Diagram that shows cross-tenant private endpoint connection scenarios.

Bild 1: Bild av scenarier för privata slutpunkter mellan klientorganisationer.

I båda scenarierna anger du resurs-ID för tjänsten och godkänner den privata slutpunktsanslutningen manuellt. Användarna behöver också rollbaserad åtkomstkontroll (RBAC) för att köra dessa åtgärder.

Anslut ions C och D i bild 1 visar scenarier som kunder vanligtvis vill tillåta. De privata slutpunktsanslutningarna hålls inom företagets Microsoft Entra-klientorganisation. De utgör ingen säkerhetsrisk, så de här två scenarierna beskrivs inte i den här artikeln.

Följande information ger dig alternativ för att förhindra etablering av privata slutpunkter mellan Microsoft Entra-klienter.

Neka privata slutpunkter som är länkade till tjänster i andra klienter

Scenario ett: En obehörig administratör kräver följande rättigheter i en prenumeration i kundens Microsoft Entra-klientorganisation.

  • Microsoft.Network/virtualNetworks/join/action rights på ett undernät med privateEndpointNetworkPolicies inställt på Inaktiverad.
  • Microsoft.Network/privateEndpoints/write-åtkomst till en resursgrupp i kundmiljön.

Med dessa rättigheter kan en obehörig administratör skapa en privat slutpunkt i kundens Microsoft Entra-klientorganisation. Den här privata slutpunkten länkar till en tjänst i en separat prenumeration och Microsoft Entra-klientorganisation. Bild 1 visar det här scenariot som anslutning A.

I det här scenariot konfigurerar användaren en extern Microsoft Entra-klientorganisation och Azure-prenumeration. Därefter skapar de en privat slutpunkt i kundmiljön genom att manuellt ange resurs-ID för tjänsten. Slutligen godkänner den obehöriga administratören den privata slutpunkten på den länkade tjänsten som finns i den externa Microsoft Entra-klientorganisationen för att tillåta trafik över anslutningen.

När den obehöriga administratören har godkänt den privata slutpunktsanslutningen kan företagsdata kopieras från företagets virtuella nätverk till en Azure-tjänst på en extern Microsoft Entra-klientorganisation. Den här säkerhetsrisken kan bara inträffa om åtkomst beviljas med hjälp av Azure RBAC.

Åtgärd för scenario ett

Använd följande Azure Policy för att automatiskt blockera möjligheten att skapa en privat slutpunkt i företagets Microsoft Entra-klientorganisation som är länkad till en extern Azure-tjänst.

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

Den här principen nekar alla privata slutpunkter som skapats utanför prenumerationen på den länkade tjänsten, till exempel anslutningarna A och D. Principen ger också flexibiliteten att använda manualPrivateLinkServiceConnections och privateLinkServiceConnections.

Du kan uppdatera den här principen så att privata slutpunkter bara skapas i en viss uppsättning prenumerationer. Du kan göra den här ändringen genom att lägga till en list parameter och använda konstruktionen "notIn": "[parameters('allowedSubscriptions')]" . Men den här metoden rekommenderas inte eftersom det innebär att du ständigt måste behålla listan över prenumerationer för den här principen. När en ny prenumeration skapas i din klientorganisation måste prenumerations-ID:t läggas till i parametern.

Tilldela i stället principen till den högsta hanteringsgruppen och använd sedan undantag där det behövs.

Överväganden för scenario ett

Den här principen blockerar möjligheten att skapa privata slutpunkter som finns i en annan prenumeration än själva tjänsten. Om dessa slutpunkter krävs för vissa användningsfall använder du principundantag. Skapa fler principer för Data Factory och Azure Synapse för att se till att hanterade privata slutpunkter som finns i det hanterade virtuella nätverket endast kan ansluta till tjänster som finns i din Microsoft Entra-klientorganisation.

Neka anslutningar från privata slutpunkter som skapats i andra klienter

Scenario två: En obehörig administratör kräver skrivåtkomst till tjänsten i kundmiljön som en privat slutpunkt ska skapas för.

Med den här rättigheten kan en obehörig administratör skapa en privat slutpunkt i en extern Microsoft Entra-klientorganisation och prenumeration. Den här slutpunkten länkar till en tjänst i kundens Microsoft Entra-klientorganisation. Bild 1 visar det här scenariot som anslutning B.

I det här scenariot måste den oseriösa administratören först konfigurera en extern privat Microsoft Entra-klientorganisation och Azure-prenumeration. Därefter skapar de en privat slutpunkt i sin miljö genom att manuellt ange resurs-ID och grupp-ID för tjänsten i företagets Microsoft Entra-klientorganisation. Slutligen godkänner de den privata slutpunkten på den länkade tjänsten för att tillåta trafik över anslutningen mellan Microsoft Entra-klienter.

När den obehöriga administratören eller tjänstägaren har godkänt den privata slutpunkten nås data från det externa virtuella nätverket.

Åtgärd för scenario två

Använd tjänstspecifika principer för att förhindra det här scenariot i kundens klientorganisation. Privata slutpunktsanslutningar är underkällor till respektive tjänster och visas under avsnittet egenskaper. Neka inkompatibla anslutningar med hjälp av följande principdefinition:

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

Den här principen visar ett exempel för Azure Storage. Replikera samma principdefinition för andra tjänster som Key Vault, cognitive services och SQL Server. Observera att Azure App Service inte stöder den här åtgärden just nu.

Om du vill förbättra hanterbarheten ytterligare kan du paketera de tjänstspecifika principerna i ett initiativ. Principen nekar godkännande av privata slutpunktsanslutningar till privata slutpunkter som finns utanför prenumerationen för respektive tjänst. Den nekar inte avvisande eller borttagning av privata slutpunktsanslutningar, vilket är det beteende som kunderna vill ha. Arbetsflöden för automatiskt godkännande, till exempel anslutning C, påverkas inte av den här principen.

Men godkännandet av kompatibla privata slutpunktsanslutningar i portalen blockeras med den här metoden. Det här blocket beror på att portalgränssnittet inte skickar resurs-ID:t för den anslutna privata slutpunkten i nyttolasten. Vi rekommenderar att du använder Azure Resource Manager, Azure PowerShell eller Azure CLI för att godkänna den privata slutpunktsanslutningen.

Tilldela även principen till den högsta hanteringsgruppen och använd undantag där det behövs.

Överväganden för scenario två

Azure Synapse Analytics och Azure Data Factory erbjuder hanterade virtuella nätverk och hanterade privata slutpunkter. På grund av dessa nya funktioner blockerar principen säker och privat användning av dessa tjänster.

Vi rekommenderar att du använder en granskningseffekt i stället för en Neka-effekt i principdefinitionen som du använder i scenariot två åtgärder. Den här ändringen hjälper dig att hålla reda på privata slutpunkter som skapas i separata prenumerationer och klientorganisationer. Du kan också använda principundantag för respektive dataplattformsomfång.

Azure Data Factory

Använd följande principdefinition för att lösa scenario ett i det hanterade virtuella nätverket i Azure Data Factory:

"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')]"
}

Den här principen nekar hanterade privata slutpunkter som är länkade till tjänster som finns utanför prenumerationen på Data Factory. Du kan ändra den här principen för att tillåta anslutningar till tjänster som finns i en uppsättning prenumerationer genom att lägga till en list parameter och med hjälp av konstruktionen "notIn": "[parameters('allowedSubscriptions')]" . Vi rekommenderar den här ändringen för dataplattformsomfånget i klientorganisationen eller miljöer där tjänster med hanterade virtuella nätverk och hanterade privata slutpunkter används i stor utsträckning.

Vi rekommenderar att du tilldelar den här principen till den högsta hanteringsgruppen och använder undantag där det behövs. För dataplattformen gör du dessa ändringar och tilldelar principen till uppsättningen med dataplattformsprenumerationer.

Azure Synapse

Azure Synapse använder även hanterade virtuella nätverk. Vi rekommenderar att du tillämpar en princip som liknar Data Factory-principen för scenario ett. Azure Synapse tillhandahåller inte något principalias för hanterade privata slutpunkter. Men det finns en funktion för dataexfiltreringsskydd som kan tillämpas för arbetsytor med hjälp av följande princip:

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

Den här principen tillämpar användningen av funktionen för dataexfiltrering i Azure Synapse. Med Azure Synapse kan du neka alla privata slutpunkter som kommer från en tjänst som finns utanför kundens klientorganisation. Du kan också neka alla privata slutpunkter som finns utanför en angiven uppsättning klient-ID:er. Den här principen tillåter endast att hanterade privata slutpunkter skapas som är länkade till tjänster som finns i kundklientorganisationen.

Dessa principer är nu tillgängliga som inbyggda.

  • Azure Synapse-arbetsytor bör endast tillåta utgående datatrafik till godkända mål.

    Definitions-ID: /providers/Microsoft.Authorization/policyDefinitions/3484ce98-c0c5-4c83-994b-c5ac24785218

  • Azure Synapse-hanterade privata slutpunkter bör endast ansluta till resurser i godkända Microsoft Entra-klienter.

    Definitions-ID: /providers/Microsoft.Authorization/policyDefinitions/3a003702-13d2-4679-941b-937e58c443f0

Vi rekommenderar att du tilldelar principen till den högsta hanteringsgruppen och använder undantag där det behövs.

Nästa steg

Det är viktigt att förstå de rekommenderade anslutningsmodellerna för inkommande och utgående anslutningar till och från det offentliga Internet. I nästa artikel granskas designöverväganden, designrekommendationer och rekommenderat innehåll för vidare läsning.