تقييد الاتصال العام في Azure HDInsight

في البنية الافتراضية للشبكة الظاهرية الخاصة بـ Azure HDInsight، يتصل موفر موارد HDInsight بنظام المجموعة عبر شبكة عامة. في هذه المقالة، يمكنك التعرف على عناصر التحكم المتقدمة التي يمكنك استخدامها لإنشاء نظام مجموعة مقيدة لـ HDInsight حيث يقتصر الاتصال الوارد على شبكة اتصال خاصة.

إذا كنت تريد إجراء الاتصال العام بين نظام مجموعة HDInsight والموارد التابعة له، ففكر في تقييد اتصال نظام المجموعة باتباع الإرشادات الموجودة في التحكم في نسبة استخدام الشبكة في Azure HDInsight. بالإضافة إلى تقييد الاتصال العام، يمكنك تكوين موارد التبعية لممكّنة لـ Azure Private Link لاستخدامها مع نظام مجموعة HDInsight.

يوضح الرسم التخطيطي التالي ما قد تبدو عليه بنية الشبكة الظاهرية المحتملة لـ HDInsight عند تعيين resourceProviderConnection إلى outbound:

رسم تخطيطي لبنية HDInsight باستخدام اتصال موفر موارد صادر.

ملاحظة

تقييد الاتصال العام هو شرط أساسي لتمكين الارتباط الخاص ولا ينبغي اعتباره بنفس القدرة.

تهيئة نظام مجموعة مقيد

بشكل افتراضي، يستخدم موفر الموارد HDInsight اتصال وارد إلى نظام المجموعة باستخدام عناوين IP العامة. عند تعيين خاصية الشبكة resourceProviderConnection إلىoutbound، فإنه يعكس الاتصالات إلى موفر الموارد HDInsight بحيث يتم دومًا بدء الاتصالات من داخل نظام المجموعة ثم الخروج إلى موفر المورد.

في هذا التكوين، بدون اتصال وارد، لا توجد حاجة لتكوين علامات الخدمة الواردة في مجموعة أمان الشبكة. ليس هناك حاجة أيضًا لتجاوز جدار الحماية أو الجهاز الظاهري للشبكة عبر طرق محددة من قِبل المستخدم.

ملاحظة

قد لا تزال عمليات التنفيذ في Microsoft Azure Government تتطلب علامات الخدمة الواردة في مجموعة أمان الشبكة والمسارات المعرفة من قبل المستخدم.

بعد إنشاء نظام المجموعة الخاص بك، قم بإعداد دقة DNS المناسبة عن طريق إضافة سجلات DNS المطلوبة لنظام مجموعة HDInsight المقيد. يتم إنشاء سجل DNS التالي للأسماء المتعارف عليها (CNAME) في منطقة DNS العامة التي تديرها Azure: azurehdinsight.net.

<clustername>    CNAME    <clustername>-int

للوصول إلى المجموعة باستخدام أسماء المجالات المؤهلة بالكامل (FQDNs)، يمكنك استخدام أي من هذه التقنيات كما هو مناسب لاحتياجاتك:

  • استخدم عناوين IP الخاصة لموازن التحميل الداخلي مباشرة.
  • استخدم منطقة DNS الخاصة بك لتجاوز نقاط نهاية نظام المجموعة. في هذه الحالة، يجب أن يكون اسم المنطقة azurehdinsight.net.

على سبيل المثال، بالنسبة لمنطقة DNS الخاصة بك azurehdinsight.net، يمكنك إضافة عناوين IP الخاصة بك حسب الحاجة:

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

ملاحظة

لا نوصي بوضع أنظمة مجموعات مقيدة في نفس الشبكة الظاهرية (مع وجود منطقة DNS خاصة بـ azurehdinsight.net) كأنظمة مجموعات أخرى حيث يتم تمكين الاتصال العام. قد يتسبب في حدوث سلوك دقة DNS غير مقصود أو تعارضات.

لتسهيل إعداد DNS، نقوم بإرجاع اسماء المجالات المؤهل بالكامل وعناوين IP الخاصة المطابقة كجزء من استجابة نظام المجموعة GET. يمكنك استخدام قصاصة برمجية من PowerShell للبدء:

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

يسمح لك تكوين resourceProviderConnection إلى outbound أيضا بالوصول إلى موارد خاصة بنظام المجموعة عن طريق استخدام نقاط النهاية الخاصة. تشمل هذه الموارد ما يلي:

  • التخزين: Azure Data Lake Storage Gen2 وAzure Blob Storage
  • مستودعات SQL: Apache Ranger وAmbari وOozie وHive
  • Azure Key Vault

استخدام نقاط النهاية الخاصة لهذه الموارد ليس إلزاميًا. ولكن إذا كنت تخطط لاستخدام نقاط النهاية الخاصة بهذه الموارد، يجب إنشاء الموارد وتكوين نقاط النهاية الخاصة وإدخالات DNS قبل إنشاء مجموعة نظام HDInsight. يجب أن تكون كافة هذه الموارد متاح الوصول إليها من داخل الشبكة الفرعية لنظام المجموعة، إما من خلال نقطة نهاية خاصة أو غير ذلك. إذا كنت تخطط لاستخدام نقطة نهاية خاصة، فمن المستحسن الاستفادة من الشبكة الفرعية لنظام المجموعة.

عند الاتصال ب Azure Data Lake Storage Gen2 عبر نقطة نهاية خاصة، تأكد من أن حساب تخزين Gen2 يحتوي على نقطة نهاية لكل من blob وdfs. لمزيد من المعلومات، راجع إنشاء نقطة نهاية خاصة.

استخدام جدار حماية (اختياري)

لا يزال بإمكان أنظمة مجموعات HDInsight الاتصال بالإنترنت العام للحصول على التبعيات الصادرة. إذا كنت تريد تقييد الوصول، يمكنك تكوين جدار حماية، ولكنه ليس متطلبًا.

إنشاء مجموعات

تتضمن القصاصة البرمجية JSON التالية اثنين من خصائص الشبكة التي يجب تكوينها في قالب Azure Resource Manager لإنشاء نظام مجموعة HDInsight خاص:

networkProperties: {
    "resourceProviderConnection": "Outbound"
}

للحصول على قالب كامل مع العديد من ميزات أمان المؤسسة HDInsight، بما في ذلك الارتباط الخاص، راجع قالب أمان المؤسسة HDInsight.

لإنشاء نظام مجموعة باستخدام PowerShell، راجع المثال.

لإنشاء نظام مجموعة باستخدام Azure CLI، راجع المثال.

الخطوات التالية