Sdílet prostřednictvím


Omezení veřejného připojení ve službě Azure HDInsight

Ve výchozí architektuře virtuální sítě Azure HDInsight komunikuje poskytovatel prostředků HDInsight 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í omezeného clusteru HDInsight, kde je příchozí připojení omezeno na privátní síť.

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 služby Azure Private Link tak, aby se používaly s clustery HDInsight.

Následující diagram znázorňuje, jak může vypadat potenciální architektura virtuální sítě HDInsight, když resourceProviderConnection je nastavená na odchozí provoz:

Diagram znázorňující architekturu HDInsight pomocí připojení poskytovatele odchozích prostředků

Poznámka:

Omezení veřejného připojení je předpokladem pro povolení služby Private Link a nemělo by se považovat za stejnou funkci.

Inicializace omezeného clusteru

Ve výchozím nastavení poskytovatel prostředků HDInsight používá příchozí připojení ke clusteru pomocí veřejných IP adres. resourceProviderConnection Pokud 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 bez příchozího připojení není potřeba ve skupině zabezpečení sítě konfigurovat značky příchozích služeb. Není také nutné obejít 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 značky příchozích služeb ve skupině zabezpečení sítě a trasách definovaných uživatelem.

Po vytvoření clusteru nastavte správné překlady DNS přidáním záznamů DNS potřebných pro váš omezený cluster HDInsight. V zóně azurehdinsight.netDNS spravované v Azure se vytvoří následující kanonický záznam DNS (CNAME):

<clustername>    CNAME    <clustername>-int

Pro přístup ke clusteru pomocí plně kvalifikovaných názvů domén (FQDN) můžete podle potřeby použít některou z těchto technik:

  • Privátní IP adresy interního nástroje pro vyrovnávání zatížení použijte přímo.
  • K přepsání koncových bodů clusteru použijte vlastní privátní zónu DNS. V tomto případě musí být azurehdinsight.netnázev zóny .

Například pro privátní zónu azurehdinsight.netDNS můžete podle potřeby přidat své privátní IP adresy:

<clustername>        A   10.0.0.1
<clustername-ssh>    A   10.0.0.2

Poznámka:

Nedoporučujeme umístit omezené clustery do stejné virtuální sítě (s privátní zónou DNS) azurehdinsight.netjako jiné clustery, kde je povolené veřejné připojení. Může způsobit neočekávané chování nebo konflikty překladu DNS.

Abychom usnadnili nastavení DNS, vrátíme plně kvalifikované názvy domén a odpovídající privátní IP adresy jako součást odpovědi clusteru GET . K zahájení práce 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
    }
}

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 vytvořit prostředky a nakonfigurovat privátní koncové body a položky DNS před vytvořením clusteru HDInsight. 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řipojíte 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 obojí blob i 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 mohly získat odchozí závislosti. Pokud chcete omezit přístup, můžete nakonfigurovat bránu firewall, ale není to požadavek.

Vytváření clusterů

Následující fragment kódu JSON obsahuje dvě vlastnosti sítě, které musíte nakonfigurovat v šabloně Azure Resource Manageru pro vytvoření privátního clusteru HDInsight:

networkProperties: {
    "resourceProviderConnection": "Outbound"
}

Kompletní šablonu s mnoha funkcemi podnikového zabezpečení HDInsight, včetně služby Private Link, najdete v šabloně podnikového zabezpečení SLUŽBY 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.

Další kroky