Omezení veřejného připojení ve službě Azure HDInsight
Ve výchozí architektuře virtuální sítě Azure HDInsight poskytovatel prostředků HDInsight komunikuje s clusterem přes veřejnou síť. V tomto článku se dozvíte o pokročilých ovládacích prvcích, které můžete použít k vytvoření clusteru HDInsight s omezeným přístupem k privátní síti.
Pokud chcete veřejné připojení mezi clusterem HDInsight a závislými prostředky, zvažte omezení připojení clusteru podle pokynů v tématu Řízení síťového provozu ve službě Azure HDInsight. Kromě omezení veřejného připojení můžete nakonfigurovat prostředky závislostí s podporou Azure Private Link pro použití s clustery HDInsight.
Následující diagram znázorňuje, jak může vypadat potenciální architektura virtuální sítě HDInsight, pokud resourceProviderConnection
je nastavená na odchozí:
Poznámka
Omezení veřejného připojení je předpokladem pro povolení Private Link a nemělo by se považovat za stejnou funkci.
Inicializace clusteru s omezeným přístupem
Ve výchozím nastavení poskytovatel prostředků HDInsight používá příchozí připojení ke clusteru pomocí veřejných IP adres. resourceProviderConnection
Když je vlastnost sítě nastavená na odchozí, obrátí připojení k poskytovateli prostředků HDInsight tak, aby se připojení vždy inicializovala z clusteru a přešla k poskytovateli prostředků.
V této konfiguraci není bez příchozího připojení potřeba konfigurovat značky příchozích služeb ve skupině zabezpečení sítě. Není také nutné obcházet bránu firewall nebo síťové virtuální zařízení prostřednictvím tras definovaných uživatelem.
Poznámka
Implementace v Microsoft Azure Government můžou stále vyžadovat příchozí značky služeb ve skupině zabezpečení sítě a trasy definované uživatelem.
Po vytvoření clusteru nastavte správný překlad DNS přidáním záznamů DNS, které jsou potřeba pro cluster HDInsight s omezeným přístupem. Ve veřejné zóně DNS spravované Azure se vytvoří následující záznam DNS s kanonickým názvem (CNAME): azurehdinsight.net
.
<clustername> CNAME <clustername>-int
Pro přístup ke clusteru pomocí plně kvalifikovaných názvů domén (FQDN) můžete podle svých potřeb použít některou z těchto technik:
- Použijte přímo privátní IP adresy interního nástroje pro vyrovnávání zatížení.
- K přepsání koncových bodů clusteru použijte vlastní privátní zónu DNS. V tomto případě musí být
azurehdinsight.net
název zóny .
Například pro privátní zónu azurehdinsight.net
DNS můžete podle potřeby přidat privátní IP adresy:
<clustername> A 10.0.0.1
<clustername-ssh> A 10.0.0.2
Poznámka
Clustery s omezeným přístupem nedoporučujeme vkládat do stejné virtuální sítě (s privátní zónou DNS pro azurehdinsight.net
) jako jiné clustery s povoleným veřejným připojením. Může to způsobit neočekávané chování překladu DNS nebo konflikty.
Abychom vám usnadnili nastavení DNS, vrátíme jako součást odpovědi clusteru GET
plně kvalifikované názvy domén a odpovídající privátní IP adresy. Pokud chcete začít, můžete použít tento fragment kódu PowerShellu:
<#
This script is an example to help you get started with automation and can be adjusted based on your needs.
This script assumes:
- The HDInsight cluster has already been created, and the context where this script is run has permissions to read/write resources in the same resource group.
- The private DNS zone resource exists in the same subscription as the HDInsight cluster.
We recommend that you use the latest version of the Az.HDInsight module.
#>
$subscriptionId = "<Replace with subscription for deploying HDInsight clusters, and containing private DNS zone resource>"
$clusterName = "<Replace with cluster name>"
$clusterResourceGroupName = "<Replace with resource group name>"
# For example, azurehdinsight.net for public cloud.
$dnsZoneName = "<Replace with private DNS zone name>"
$dnsZoneResourceGroupName = "<Replace with private DNS zone resource group name>"
Connect-AzAccount -SubscriptionId $subscriptionId
# 1. Get cluster endpoints
$clusterEndpoints = $(Get-AzHDInsightCluster -ClusterName $clusterName ` -ResourceGroupName $clusterResourceGroupName).ConnectivityEndpoints
$endpointMapping = @{}
foreach($endpoint in $clusterEndpoints)
{
$label = $endpoint.Location.ToLower().Replace(".$dnsZoneName".ToLower(), "")
$ip = $endpoint.PrivateIPAddress
$endpointMapping.Add($label, $ip)
}
# 2. Confirm that the DNS zone exists.
Get-AzPrivateDnsZone -ResourceGroupName $dnsZoneResourceGroupName -Name $dnsZoneName -ErrorAction Stop
# 3. Update DNS entries for the cluster in the private DNS zone:
# - If the entries already exist, update to the new IP.
# - If the entries don't exist, create them.
$recordSets = Get-AzPrivateDnsRecordSet -ZoneName $dnsZoneName -ResourceGroupName $dnsZoneResourceGroupName -RecordType A
foreach($label in $endpointMapping.Keys)
{
$updateRecord = $null
foreach($record in $recordSets)
{
if($record.Name -eq $label)
{
$updateRecord = $record
break;
}
}
if($null -ne $updateRecord)
{
$updateRecord.Records[0].Ipv4Address = $endpointMapping[$label]
Set-AzPrivateDnsRecordSet -RecordSet $updateRecord | Out-Null
}
else
{
New-AzPrivateDnsRecordSet `
-ResourceGroupName $dnsZoneResourceGroupName `
-ZoneName $dnsZoneName `
-Name $label `
-RecordType A `
-Ttl 3600 `
-PrivateDnsRecord (New-AzPrivateDnsRecordConfig -Ipv4Address $endpointMapping[$label]) | Out-Null
}
}
Přidání Private Link připojení k prostředkům závislým na clusteru (volitelné)
Konfigurace resourceProviderConnection
odchozích přenosů také umožňuje přístup k prostředkům specifickým pro cluster pomocí privátních koncových bodů. Mezi tyto prostředky patří:
- Úložiště: Azure Data Lake Storage Gen2 a Azure Blob Storage
- Metastory SQL: Apache Ranger, Ambari, Oozie a Hive
- Azure Key Vault
Pro tyto prostředky není povinné používat privátní koncové body. Pokud ale plánujete pro tyto prostředky používat privátní koncové body, musíte před vytvořením clusteru HDInsight vytvořit prostředky a nakonfigurovat privátní koncové body a položky DNS. Všechny tyto prostředky by měly být přístupné z podsítě clusteru, a to buď prostřednictvím privátního koncového bodu, nebo jinak. Pokud plánujete použít privátní koncový bod, doporučujeme využít podsíť clusteru.
Když se připojujete k Azure Data Lake Storage Gen2 přes privátní koncový bod, ujistěte se, že účet úložiště Gen2 má nastavený koncový bod pro i blob
dfs
. Další informace najdete v tématu Vytvoření privátního koncového bodu.
Použití brány firewall (volitelné)
Clustery HDInsight se stále můžou připojit k veřejnému internetu, aby získaly odchozí závislosti. Pokud chcete omezit přístup, můžete nakonfigurovat bránu firewall, ale není to nutné.
Vytváření clusterů
Následující fragment kódu JSON obsahuje dvě síťové vlastnosti, které musíte nakonfigurovat v šabloně Azure Resource Manager k vytvoření privátního clusteru HDInsight:
networkProperties: {
"resourceProviderConnection": "Outbound"
}
Kompletní šablonu s mnoha funkcemi podnikového zabezpečení HDInsight, včetně Private Link, najdete v tématu Šablona podnikového zabezpečení HDInsight.
Pokud chcete vytvořit cluster pomocí PowerShellu, podívejte se na příklad.
Pokud chcete vytvořit cluster pomocí Azure CLI, podívejte se na příklad.