Omezení připojení privátních koncových bodů mezi tenanty v Azure
Zákazníci stále častěji používají privátní koncové body ve svých tenantech k privátnímu a bezpečnému připojení ke svým službám Azure Jako služba (PaaS). Privátní koncové body se můžou připojit ke službám napříč tenanty Microsoft Entra. V případě zabezpečení a dodržování předpisů možná budete muset blokovat připojení mezi tenanty Microsoft Entra ve vašich privátních koncových bodech. V těchto doprovodných materiálech najdete doporučené možnosti konfigurace pro omezení nebo zabránění připojení privátního koncového bodu mezi tenanty. Tyto možnosti vám pomůžou vytvořit ovládací prvky ochrany před únikem dat v prostředí Azure.
Úvod do privátních koncových bodů
Pomocí privátních koncových bodů můžete řídit provoz ve vašem prostředí Azure pomocí existující hraniční sítě. Existují ale scénáře, kdy musíte zachovat připojení privátních koncových bodů jenom v rámci podnikového tenanta Microsoft Entra. Následující příklady ukazují připojení, která můžou způsobit rizika zabezpečení.
- Připojení A: Podvodný správce vytvoří privátní koncové body ve virtuální síti zákazníka. Tyto koncové body odkazují na služby hostované mimo prostředí zákazníka, jako je jiný tenant Microsoft Entra.
- Připojení B: Neautorovaný správce vytvoří privátní koncové body v jiných tenantech Microsoft Entra, které odkazují na služby hostované v tenantovi Microsoft Entra zákazníka.
Obrázek 1: Ilustrace scénářů mezi tenanty privátního koncového bodu
V obou scénářích zadáte ID prostředku služby a ručně schválíte připojení privátního koncového bodu. Uživatelé také k provedení těchto akcí vyžadují přístup řízení přístupu na základě role (RBAC).
Připojení C a D na obrázku 1 zobrazují scénáře, které zákazníci obecně chtějí povolit. Připojení privátního koncového bodu se uchovávají v rámci podnikového tenanta Microsoft Entra. Nepředstavují bezpečnostní riziko, takže tyto dva scénáře nejsou popsané v tomto článku.
Následující informace poskytují možnosti, jak zabránit zřizování privátních koncových bodů napříč tenanty Microsoft Entra.
Odepření privátních koncových bodů propojených se službami v jiných tenantech
Scénář 1: Podvodný správce vyžaduje v předplatném v tenantovi Microsoft Entra zákazníka následující práva.
- Microsoft.Network/virtualNetworks/join/action rights on a subnet with privateEndpointNetworkPolicies set to Disabled.
- Microsoft.Network/privateEndpoints/write access to a resource group in the customer environment.
S těmito právy může neautorský správce vytvořit privátní koncový bod v tenantovi Microsoft Entra zákazníka. Tento privátní koncový bod odkazuje na službu v samostatném předplatném a tenantovi Microsoft Entra. Obrázek 1 ukazuje tento scénář jako připojení A.
V tomto scénáři uživatel nastaví externího tenanta Microsoft Entra a předplatné Azure. Dále vytvoří privátní koncový bod v prostředí zákazníka ručním zadáním ID prostředku služby. Nakonec podvodný správce schválí privátní koncový bod v propojené službě hostované v externím tenantovi Microsoft Entra, aby umožnil provoz přes připojení.
Jakmile neautorovaný správce schválí připojení privátního koncového bodu, můžou se firemní data zkopírovat z podnikové virtuální sítě do služby Azure v externím tenantovi Microsoft Entra. K tomuto riziku zabezpečení může dojít pouze v případě, že byl udělen přístup pomocí Azure RBAC.
Zmírnění rizik pro scénář 1
Pomocí následujících zásad Azure Můžete automaticky blokovat možnost vytvořit privátní koncový bod v podnikovém tenantovi Microsoft Entra, který je propojený s externí službou 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"
}
Tato zásada zakazuje všechny privátní koncové body vytvořené mimo předplatné propojené služby, jako jsou připojení A a D. Tato zásada také poskytuje flexibilitu pro použití manualPrivateLinkServiceConnections
a privateLinkServiceConnections
.
Tuto zásadu můžete aktualizovat tak, aby se privátní koncové body vytvářely jenom v určité sadě předplatných. Tuto změnu můžete provést přidáním parametru list
a použitím konstruktoru "notIn": "[parameters('allowedSubscriptions')]"
. Tento přístup se ale nedoporučuje, protože to znamená, že byste museli neustále udržovat seznam předplatných pro tuto zásadu. Pokaždé, když se ve vašem tenantovi vytvoří nové předplatné, musí se do parametru přidat ID předplatného.
Místo toho přiřaďte zásadu skupině pro správu nejvyšší úrovně a potom použijte výjimky tam, kde je to potřeba.
Důležité informace pro scénář 1
Tato zásada blokuje možnost vytvářet privátní koncové body, které jsou v jiném předplatném než samotná služba. Pokud jsou tyto koncové body vyžadovány pro určité případy použití, použijte výjimky ze zásad. Vytvořte další zásady pro Službu Data Factory a Azure Synapse, abyste měli jistotu, že spravované privátní koncové body hostované ve spravované virtuální síti se můžou připojit jenom ke službám hostovaným v rámci vašeho tenanta Microsoft Entra.
Odepření připojení z privátních koncových bodů vytvořených v jiných tenantech
Scénář 2: Podvodný správce vyžaduje přístup k zápisu do služby v prostředí zákazníka, pro které se má vytvořit privátní koncový bod.
S tímto právem může podvodný správce vytvořit privátní koncový bod v externím tenantovi a předplatném Microsoft Entra. Tento koncový bod odkazuje na službu v tenantovi Microsoft Entra zákazníka. Obrázek 1 ukazuje tento scénář jako připojení B.
V tomto scénáři musí správce nejprve nakonfigurovat externího privátního tenanta Microsoft Entra a předplatné Azure. Dále vytvoří privátní koncový bod ve svém prostředí ručním zadáním ID prostředku a ID skupiny služby v podnikovém tenantovi Microsoft Entra. Nakonec schválí privátní koncový bod v propojené službě, aby umožnil provoz přes připojení napříč tenanty Microsoft Entra.
Jakmile neautorovaný správce nebo vlastník služby schválí privátní koncový bod, budou k datům přistupovat z externí virtuální sítě.
Zmírnění rizik pro scénář 2
Pokud chcete zabránit tomuto scénáři v rámci tenanta zákazníka, použijte zásady specifické pro službu. Připojení privátního koncového bodu jsou dílčími zdroji příslušných služeb a zobrazují se v části jejich vlastností. Odepřít připojení nedodržující předpisy pomocí následující definice zásady:
"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"
}
Tato zásada ukazuje příklad pro Azure Storage. Replikujte stejnou definici zásad pro jiné služby, jako je Key Vault, Azure AI Services a SQL Server.
Pokud chcete dále zlepšit možnosti správy, zabalte zásady specifické pro službu do iniciativy. Zásada odmítne schválení připojení privátních koncových bodů k privátním koncovým bodům hostovaným mimo předplatné příslušné služby. Neodmítá zamítnutí nebo odebrání připojení privátního koncového bodu, což je chování, které zákazníci chtějí. Tyto zásady nemají vliv na pracovní postupy automatického schvalování, jako je připojení C.
Schválení kompatibilních připojení privátních koncových bodů na portálu je však touto metodou blokováno. K tomuto bloku dochází, protože uživatelské rozhraní portálu neodesílá ID prostředku připojeného privátního koncového bodu v datové části. Ke schválení připojení privátního koncového bodu doporučujeme použít Azure Resource Manager, Azure PowerShell nebo Azure CLI .
Navíc přiřaďte zásadu skupině pro správu nejvyšší úrovně a v případě potřeby použijte výjimky.
Důležité informace pro scénář 2
Azure Synapse Analytics a Azure Data Factory nabízejí spravované virtuální sítě a spravované privátní koncové body. Kvůli těmto novým funkcím zásady blokují zabezpečené a soukromé využití těchto služeb.
V definici zásady, kterou používáte ve scénáři dvou omezení, doporučujeme použít efekt auditování místo efektu Odepřít. Tato změna vám pomůže sledovat vytváření privátních koncových bodů v samostatných předplatných a tenantech. Pro příslušné obory datové platformy můžete také použít výjimky ze zásad.
Azure Data Factory
Pokud chcete překonat scénář jedné ze spravovaných virtuálních sítí služby Azure Data Factory, použijte následující definici zásad:
"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')]"
}
Tato zásada zakazuje spravované privátní koncové body propojené se službami hostovanými mimo předplatné služby Data Factory. Tuto zásadu můžete změnit tak, aby umožňovala připojení ke službám hostovaným v sadě předplatných přidáním list
parametru a použitím konstruktoru "notIn": "[parameters('allowedSubscriptions')]"
. Tuto změnu doporučujeme pro rozsah datové platformy uvnitř tenanta nebo prostředí, ve kterých se služby se spravovanými virtuálními sítěmi a spravovanými privátními koncovými body široce používají.
Doporučujeme přiřadit tuto zásadu skupině pro správu nejvyšší úrovně a v případě potřeby používat výjimky. U datové platformy proveďte tyto změny a přiřaďte zásady sadě předplatných datové platformy.
Azure Synapse
Azure Synapse také používá spravované virtuální sítě. Pro scénář doporučujeme použít podobné zásady jako zásady služby Data Factory. Azure Synapse neposkytuje alias zásad pro spravované privátní koncové body. Existuje ale funkce prevence exfiltrace dat, kterou je možné vynutit pro pracovní prostory pomocí následujících zásad:
"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"
}
Tato zásada vynucuje použití funkce exfiltrace dat azure Synapse. Pomocí Azure Synapse můžete odepřít jakýkoli privátní koncový bod, který pochází ze služby hostované mimo tenanta zákazníka. Můžete také zakázat jakýkoli privátní koncový bod hostovaný mimo zadanou sadu ID tenanta. Tato zásada umožňuje vytvářet pouze spravované privátní koncové body propojené se službami hostovanými v tenantovi zákazníka.
Tyto zásady jsou teď k dispozici jako integrované.
Pracovní prostory Azure Synapse by měly umožňovat odchozí přenosy dat jenom schváleným cílům.
ID definice:
/providers/Microsoft.Authorization/policyDefinitions/3484ce98-c0c5-4c83-994b-c5ac24785218
Privátní koncové body spravované službou Azure Synapse by se měly připojovat pouze k prostředkům ve schválených tenantech Microsoft Entra.
ID definice:
/providers/Microsoft.Authorization/policyDefinitions/3a003702-13d2-4679-941b-937e58c443f0
Doporučujeme přiřadit zásadu skupině pro správu nejvyšší úrovně a v případě potřeby používat výjimky.
Další kroky
Je důležité porozumět doporučeným modelům připojení pro příchozí a odchozí připojení k veřejnému internetu a z něj. Další článek popisuje aspekty návrhu, doporučení k návrhu a doporučený obsah pro další čtení.