الترحيل إلى الوصول متعدد المستويات المستند إلى الدور لتكوينات المجموعة

نحن نقدم بعض التغييرات المهمة لدعم مزيد من الوصول الدقيق المستند إلى الدور للحصول على معلومات حساسة. كجزء من هذه التغييرات، قد يلزم اتخاذ بعض الإجراءات بحلول 3 (سبتمبر) 2019 إذا كنت تستخدم أحد الكيانات/السيناريوهات المتأثرة.

ما الذي يتغير؟

في السابق، يمكن الحصول على بيانات سرية عبر واجهة برمجة التطبيقات في HDInsight من قبل مستخدمي نظام المجموعة الذين يمتلكون أدوار المالك أو المساهم أو القارئ في Azure، حيث كانت متاحة لأي شخص لديه إذن */read. يتم تعريف البيانات السرية على أنها قيم يمكن استخدامها للحصول على وصول أكثر تقييداً من المسموح به لدور المستخدم. تتضمن هذه قيماً مثل بيانات اعتماد HTTP لبوابة نظام المجموعة ومفاتيح حساب التخزين وبيانات اعتماد قاعدة البيانات.

بدءا من 3 سبتمبر 2019، سيتطلب Microsoft.HDInsight/clusters/configurations/action الوصول إلى هذه الأسرار الإذن، ولا يمكن للمستخدم الوصول إليها باستخدام دور القارئ. الأدوار التي لديها هذا الإذن هي المساهم والمالك ودور مشغل نظام مجموعة HDInsight الجديد.

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

الدور سابقاً فيما بعد
القارئ - وصول للقراءة، بما في ذلك البيانات السرية. - وصول للقراءة، باستثناء البيانات السرية
عامل تشغيل نظام مجموعة HDInsight
(دور جديد)
غير متاح - الوصول للقراءة /الكتابة، بما في ذلك البيانات السرية
المساهم - الوصول للقراءة/الكتابة، بما في ذلك البيانات السرية.
- إنشاء جميع أنواع موارد Azure وإدارتها.
- تنفيذ إجراءات البرنامج النصي.
بلا تغيير
المالك - الوصول للقراءة/الكتابة بما في ذلك البيانات السرية.
- الوصول الكامل إلى جميع الموارد
تفويض الوصول للآخرين
- تنفيذ إجراءات البرنامج النصي.
بلا تغيير

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

هل أنت متأثر بهذه التغييرات؟

تتأثر الكيانات والسيناريوهات التالية:

API

يتم تغيير واجهات برمجة التطبيقات التالية أو إهمالها:

  • GET /configurations/{configurationName} (تمت إزالة المعلومات الحساسة)
    • تم استخدامه مسبقاً للحصول على أنواع التكوين الفردية (بما في ذلك البيانات السرية).
    • اعتباراً من 3 سبتمبر 2019، سيعيد استدعاء واجهة برمجة التطبيقات هذا أنواع التكوين الفردية مع حذف البيانات السرية. للحصول على جميع التكوينات، بما في ذلك البيانات السرية، استخدم استدعاء POST /configurations الجديد. للحصول على إعدادات البوابة فقط، استخدم استدعاءPOST /getGatewaySettings الجديد.
  • GET /configurations (مهمل)
    • تم استخدامه مسبقاً للحصول على جميع التكوينات (بما في ذلك البيانات السرية)
    • اعتباراً من 3 سبتمبر 2019، سيتم إهمال استدعاء واجهة برمجة التطبيقات هذا ولن يظل مدعوماً. للحصول على جميع التكوينات من الآن فصاعداً، استخدم استدعاء POST /configurations الجديد. للحصول على تكوينات مع حذف معلمات حساسة، استخدم استدعاء GET / configurations / {configurationName}.
  • POST /configurations/{configurationName} (مهمل)
    • تم استخدامه مسبقاً لتحديث بيانات اعتماد البوابة.
    • اعتباراً من 3 سبتمبر 2019، سيتم إهمال استدعاء واجهة برمجة التطبيقات هذا ولن يظل مدعوماً. استخدم POST / updateGatewaySettings الجديدة بدلاً من ذلك.

تمت إضافة واجهات برمجة التطبيقات البديلة التالية:

  • POST /configurations
    • استخدم واجهة برمجة التطبيقات هذه للحصول على جميع التكوينات، بما في ذلك البيانات السرية.
  • POST /getGatewaySettings
    • استخدم واجهة برمجة التطبيقات هذه للحصول على إعدادات البوابة.
  • POST /updateGatewaySettings
    • استخدم واجهة برمجة التطبيقات هذه لتحديث إعدادات البوابة (اسم المستخدم و/أو كلمة المرور).

Azure HDInsight Tools لـ Visual Studio Code

إذا كنت تستخدم الإصدار 1.1.1 أو إصداراً أقدم، فقم بالتحديث إلى أحدث إصدار من Azure HDInsight Tools لـ Visual Studio Code لتجنب حدوث انقطاع.

Azure Toolkit لـ IntelliJ

إذا كنت تستخدم الإصدار 3.20.0 أو إصداراً أقدم، فقم بالتحديث إلى أحدث إصدار من Azure Toolkit لـ IntelliJ plugin لتجنب حدوث انقطاع.

Azure Data Lake وStream Analytics Tools لـ Visual Studio

قم بالتحديث إلى الإصدار 2.3.9000.1 أو الأحدث من Azure Data Lake وStream Analytics Tools لـ Visual Studio لتجنب حدوث انقطاع. للحصول على مساعدة في التحديث، راجع الوثائق الخاصة بنا، تحديثData Lake Tools لـ Visual Studio.

مجموعة أدوات Azure Toolkit لـ Eclipse

إذا كنت تستخدم الإصدار 3.15.0 أو إصداراً أقدم، فقم بالتحديث إلى أحدث إصدار من مجموعة أدوات Azure Toolkit لـ Eclipse لتجنب حدوث انقطاع.

SDK لـ .NET

الإصداران 1.x و2.x.

التحديث إلى الإصدار 2.1.0 من HDInsight SDK لـ.NET. قد يتطلب الأمر الحد الأدنى من تعديلات التعليمة البرمجية إذا كنت تستخدم أسلوباً متأثراً بهذه التغييرات:

  • ClusterOperationsExtensions.GetClusterConfigurations لن يتم إرجاع المعلمات الحساسة مثل مفاتيح التخزين (الموقع الأساسي) أو بيانات اعتماد HTTP (البوابة).

    • لاسترداد جميع التكوينات، بما في ذلك المعلمات الحساسة، استخدم ClusterOperationsExtensions.ListConfigurations فيما بعد. لا يمكن للمستخدمين الذين لديهم دور "القارئ" استخدام هذا الأسلوب. يسمح بالتحكم الدقيق في المستخدمين الذين يمكنهم الوصول إلى المعلومات الحساسة لنظام المجموعة.
    • لاسترداد بيانات اعتماد بوابة HTTP فقط، استخدم ClusterOperationsExtensions.GetGatewaySettings.
  • ClusterOperationsExtensions.GetConnectivitySettings مهمل الآن وتم استبداله بـ ClusterOperationsExtensions.GetGatewaySettings .

  • ClusterOperationsExtensions.ConfigureHttpSettings مهمل الآن وتم استبداله بـ ClusterOperationsExtensions.UpdateGatewaySettings .

  • ConfigurationsOperationsExtensions.EnableHttp وDisableHttp مهملان الآن. يتم الآن تمكين HTTP دائماً، لذلك لم تعد هناك حاجة إلى هذه الأساليب.

الإصدارات 3.x والإصدارات الأحدث

قم بالتحديث إلى الإصدار 5.0.0 أو أحدث من HDInsight SDK لـ .NET. قد يتطلب الأمر الحد الأدنى من تعديلات التعليمة البرمجية إذا كنت تستخدم أسلوباً متأثراً بهذه التغييرات:

SDK لـ Python

قم بالتحديث إلى الإصدار 1.0.0 أو أحدث من HDInsight SDK لـ Python. قد يتطلب الأمر الحد الأدنى من تعديلات التعليمة البرمجية إذا كنت تستخدم أسلوباً متأثراً بهذه التغييرات:

  • ConfigurationsOperations.get لن يتم إرجاع المعلمات الحساسة مثل مفاتيح التخزين (الموقع الأساسي) أو بيانات اعتماد HTTP (البوابة).
    • لاسترداد جميع التكوينات، بما في ذلك المعلمات الحساسة، استخدم ConfigurationsOperations.list فيما بعد.  لا يمكن للمستخدمين الذين لديهم دور "القارئ" استخدام هذا الأسلوب. يسمح بالتحكم الدقيق في المستخدمين الذين يمكنهم الوصول إلى المعلومات الحساسة لنظام المجموعة.
    • لاسترداد بيانات اعتماد بوابة HTTP فقط، استخدم ClusterOperations.get_gateway_settings.
  • ConfigurationsOperations.update مهمل الآن وتم استبداله بـ ClusterOperations.update_gateway_settings .

SDK لـ Java

قم بالتحديث إلى الإصدار 1.0.0 أو أحدث من HDInsight SDK لـJava. قد يتطلب الأمر الحد الأدنى من تعديلات التعليمة البرمجية إذا كنت تستخدم أسلوباً متأثراً بهذه التغييرات:

  • ConfigurationsInner.get لن يتم إرجاع المعلمات الحساسة مثل مفاتيح التخزين (الموقع الأساسي) أو بيانات اعتماد HTTP (البوابة).
  • ConfigurationsInner.update مهمل الآن.

SDK لـ Go

قم بالتحديث إلى الإصدار 27.1.0 أو أحدث من HDInsight SDK لـGo. قد يتطلب الأمر الحد الأدنى من تعديلات التعليمة البرمجية إذا كنت تستخدم أسلوباً متأثراً بهذه التغييرات:

  • ConfigurationsClient.get لن يتم إرجاع المعلمات الحساسة مثل مفاتيح التخزين (الموقع الأساسي) أو بيانات اعتماد HTTP (البوابة).
    • لاسترداد جميع التكوينات، بما في ذلك المعلمات الحساسة، استخدم ConfigurationsClient.list فيما بعد. لا يمكن للمستخدمين الذين لديهم دور "القارئ" استخدام هذا الأسلوب. يسمح بالتحكم الدقيق في المستخدمين الذين يمكنهم الوصول إلى المعلومات الحساسة لنظام المجموعة.
    • لاسترداد بيانات اعتماد بوابة HTTP فقط، استخدم ClustersClient.get_gateway_settings.
  • ConfigurationsClient.update مهمل الآن وتم استبداله بـ ClustersClient.update_gateway_settings .

Az.HDInsight PowerShell

قم بالتحديث إلى الإصدار 2.0.0 من Az PowerShell أو إصدار أحدث لتجنب حدوث انقطاع. قد يتطلب الأمر الحد الأدنى من تعديلات التعليمة البرمجية إذا كنت تستخدم أسلوباً متأثراً بهذه التغييرات.

  • Grant-AzHDInsightHttpServicesAccess مهمل الآن وتم استبداله بـSet-AzHDInsightGatewayCredential cmdlet الجديد.
  • تم تحديث Get-AzHDInsightJobOutput لدعم الوصول الدقيق المستند إلى الدور إلى مفتاح التخزين.
    • لا يتأثر المستخدمون الذين لديهم أدوار مشغل نظام مجموعة HDInsight أو المساهم أو المالك.
    • يحتاج المستخدمون الذين لديهم دور القارئ فقط إلى تحديد المعلمة DefaultStorageAccountKey بشكل صريح.
  • Revoke-AzHDInsightHttpServicesAccess مهمل الآن. يتم الآن تمكين HTTP دائماً، لذا لم تعد هناك حاجة إلى cmdlet هذا بعد الآن. راجع دليل ترحيل az.HDInsight للحصول على مزيد من التفاصيل.

قم بإضافة تعيين دور عامل تشغيل نظام مجموعة HDInsight لمستخدم

يمكن لمستخدم يمتلك دور المالك تعيين دور عامل تشغيل مجموعة HDInsight للمستخدمين الذين قد ترغب في حصولهم على حق الوصول للقراءة/الكتابة إلى قيم تكوين نظام مجموعة HDInsight الحساسة (مثل بيانات اعتماد بوابة نظام المجموعة ومفاتيح حساب التخزين).

استخدام Azure CLI

إن أبسط أسلوب لإضافة تعيين هذا الدور هي باستخدام الأمر az role assignment create في Azure CLI.

إشعار

يجب تشغيل هذا الأمر من قبل مستخدم يمتلك دور المالك، حيث يمكنه فقط منح هذه الأذونات. --assignee هو اسم كيان الخدمة أو عنوان البريد الإلكتروني للمستخدم الذي تريد أن تُعيِّن له دور عامل التشغيل لنظام مجموعة HDInsight. إذا تلقيت خطأ أذونات غير كاف، فشاهد الأسئلة المتداولة.

منح دور على مستوى المورد (نظام المجموعة)

az role assignment create --role "HDInsight Cluster Operator" --assignee <user@domain.com> --scope /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.HDInsight/clusters/<ClusterName>

منح دور على مستوى مجموعة الموارد

az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com -g <ResourceGroupName>

منح دور على مستوى الاشتراك

az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com

استخدام مدخل Microsoft Azure

يمكنك بدلاً من ذلك استخدام مدخل Microsoft Azure لإضافة تعيين دور عامل تشغيل نظام مجموعة HDInsight لمستخدم. راجع الوثائق، تعيين أدوار Azure باستخدام مدخل Microsoft Azure.

الأسئلة المتداولة

لماذا أرى استجابة 403 (محظور) بعد تحديث طلبات و/أو أداة واجهة برمجة التطبيقات الخاصة بي؟

تخضع تكوينات نظام المجموعة الآن للتحكم في الوصول المتعدد المستويات المستند إلى الدور وتتطلب إذن Microsoft.HDInsight/clusters/configurations/* للوصول إليها. للحصول على هذا الإذن، قم بتعيين دور عامل تشغيل نظام مجموعة HDInsight أو المساهم أو المالك للمستخدم أو كيان الخدمة الذي يحاول الوصول إلى التكوينات.

لماذا أرى "امتيازات غير كافية لإكمال العملية" عند تشغيل أمر Azure CLI لتعيين دور عامل تشغيل نظام مجموعة HDInsight لمستخدم آخر أو كيان خدمة آخر؟

بالإضافة إلى وجود دور المالك، يحتاج المستخدم أو كيان الخدمة الذي ينفذ الأمر إلى الحصول على أذونات Microsoft Entra كافية للبحث عن معرفات الكائن للمعين له. تشير هذه الرسالة إلى أذونات Microsoft Entra غير كافية. حاول استبدال الوسيطة -–assignee بـ –assignee-object-id وقم بتوفير معرف الكائن للمعين له كمعلمة بدلاً من الاسم (أو معرف الكيان في حالة هوية مُدارة). راجع قسم المعلمات الاختيارية في وثائق إنشاء تعيين دور az لمزيد من المعلومات.

إذا كان لا يزال لا يعمل، فاتصل بمسؤول Microsoft Entra للحصول على الأذونات الصحيحة.

ماذا سيحدث إذا لم أتخذ أي إجراء؟

اعتباراً من 3 سبتمبر 2019، لن يقوم الاستدعاء GET /configurations وPOST /configurations/gateway بإرجاع أي معلومات ولن يقوم الاستدعاء GET /configurations/{configurationName} بإرجاع معلمات حساسة، مثل مفاتيح حساب التخزين أو كلمة مرور نظام المجموعة. وينطبق الشيء نفسه على أساليب SDK وPowerShell cmdlets.

إذا كنت تستخدم إصدارا قديما من إحدى الأدوات ل Visual Studio أو VSCode أو IntelliJ أو Eclipse المذكور، فلن يعمل حتى تقوم بتحديثه.

لمزيد من المعلومات التفصيلية، راجع القسم المقابل في هذا المستند لمعرفة السيناريو الخاص بك.