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í:

Diagram architektury HDInsight využívající připojení poskytovatele odchozích prostředků

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.netnázev zóny .

Například pro privátní zónu azurehdinsight.netDNS 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
    }
}

Konfigurace resourceProviderConnectionodchozí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 blobdfs. 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.

Další kroky